diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index a070729f5d7..9b9bce030e8 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -92,7 +92,9 @@ jobs: cp ./ethexe/contracts/out/POAMiddleware.sol/POAMiddleware.json ./ethexe/ethereum/abi cp ./ethexe/contracts/out/Middleware.sol/Middleware.json ./ethexe/ethereum/abi cp ./ethexe/contracts/out/Mirror.sol/Mirror.json ./ethexe/ethereum/abi + cp ./ethexe/contracts/out/MirrorWithInstrumentation.sol/MirrorWithInstrumentation.json ./ethexe/ethereum/abi cp ./ethexe/contracts/out/Router.sol/Router.json ./ethexe/ethereum/abi + cp ./ethexe/contracts/out/RouterWithInstrumentation.sol/RouterWithInstrumentation.json ./ethexe/ethereum/abi cp ./ethexe/contracts/out/ERC1967Proxy.sol/ERC1967Proxy.json ./ethexe/ethereum/abi cp ./ethexe/contracts/out/WrappedVara.sol/WrappedVara.json ./ethexe/ethereum/abi cp ./ethexe/contracts/out/BatchMulticall.sol/BatchMulticall.json ./ethexe/ethereum/abi diff --git a/Cargo.lock b/Cargo.lock index e83725c408d..31deb5116dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -110,14 +110,14 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85805c194576017df6c11057504e1d60b36f3913f8e365945486931f6ee81e40" +checksum = "d8010fc7e9e8643ef4e758cdccf3eef26734594aedf88a9d5ed35e51837d42ef" dependencies = [ "alloy-consensus", "alloy-contract", "alloy-core", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-genesis", "alloy-network", "alloy-node-bindings", @@ -125,7 +125,7 @@ dependencies = [ "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types", - "alloy-serde", + "alloy-serde 2.0.4", "alloy-signer", "alloy-signer-local", "alloy-transport", @@ -136,9 +136,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e9e31d834fe25fe991b8884e4b9f0e59db4a97d86e05d1464d6899c013cd62" +checksum = "84e0378e959aa6a885897522080a990e80eb317f1e9a222a604492ea50e13096" dependencies = [ "alloy-primitives", "num_enum 0.7.5", @@ -148,14 +148,14 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dbe4e5e9107bf6854e7550b666ca654ff2027eabf8153913e2e31ac4b089779" +checksum = "e3d64da86c616b5092ea64eea648f311bbd58630a0b384c42d699175d6f9122b" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.4", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.4", "alloy-trie", "alloy-tx-macros", "auto_impl", @@ -175,23 +175,23 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88fc7bbfb98cf5605a35aadf0ba43a7d9f1608d6f220d05e4fbd5144d3b0b625" +checksum = "8fd98696ca3617d3a9ba1a6f2011880cbfd5618228dab6400c9f8bca457859a8" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.4", "serde", ] [[package]] name = "alloy-contract" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c16fa30b623e40a5b216da00f3b61870f5cbe863b59816ac1ecc2489515a40" +checksum = "de3df0aadc569a8b277808a7d0ad0e421180654ea36a3c59e9ed2bb968c9a1cd" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -274,6 +274,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "borsh", + "k256", "serde", "thiserror 2.0.17", ] @@ -292,9 +293,32 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "2.0.0" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ef28c9fdad22d4eec52d894f5f2673a0895f1e5ef196734568e68c0f6caca8" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-eip7928", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.8.3", + "auto_impl", + "borsh", + "c-kzg", + "derive_more 2.1.1", + "either", + "serde", + "serde_with", + "sha2 0.10.9", +] + +[[package]] +name = "alloy-eips" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb4919fa34b268842f434bfafa9c09136ab7b1a87ce0dd40a61befa35b5408c" +checksum = "64c0456f5f7a4497e9342d20f528e30f5288ddfa0d6a012bd5044afee46cd8a0" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -302,7 +326,7 @@ dependencies = [ "alloy-eip7928", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.4", "auto_impl", "borsh", "c-kzg", @@ -315,13 +339,13 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e111e22c1a2133e9ebfd9051ea0eaf63559594d2f50d43cbc6762fbb95fc3c2" +checksum = "a71ff8b55d2b8aa05259f474cae7dea0e4991724dc18936b81cb23ec492a0c2a" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.4", "alloy-primitives", - "alloy-serde", + "alloy-serde 2.0.4", "alloy-trie", "borsh", "serde", @@ -355,9 +379,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b6af6f374c1eeef8ab8dc26232cd440db167322a4207a3debd3d1ee565ca47" +checksum = "19e352478b756bad5d7203148e4b461861282ea2ded3da406ba24868b52cd098" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -370,19 +394,19 @@ dependencies = [ [[package]] name = "alloy-network" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a3f5a7f3678b71d33fcc45b714fab8928dbc647d5aff2145e72032d5c849bb" +checksum = "ed08ae169869e08370ed121612e0d3dadac33d1a256e9f2465926b23f0bd7d95" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-json-rpc", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-any", "alloy-rpc-types-eth", - "alloy-serde", + "alloy-serde 2.0.4", "alloy-signer", "alloy-sol-types", "async-trait", @@ -396,22 +420,22 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb50dc1fb0e0b2c8748d5bee1aa7acdd18f9e036311bc93a71d97be624030317" +checksum = "02e6c7ad28afe348a9a9c5624b67ee5b3607b8de98d5816b3056ecdfa6fa2697" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-primitives", - "alloy-serde", + "alloy-serde 2.0.4", "serde", ] [[package]] name = "alloy-node-bindings" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85195890fcee519312718dc8418035935ad0d57f57943ca82689732432a702c9" +checksum = "5a29998ddc1f3a7658b82de0784566c65e2f116917a349de7fdd0b765e539d0c" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -458,13 +482,13 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ba5468f78c8893be2d68a7f2fda61753336e5653f006af19781001b5f99e6c" +checksum = "93a7c17472b55482d4734154c2f5ed13f72e03f6752cebb927f6a2d8b52e646c" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-json-rpc", "alloy-network", "alloy-network-primitives", @@ -501,9 +525,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffcefb5d3391a320eadb95d398e4135f8cc35c7bf29a6bdb357eadcfc5ee5638" +checksum = "a8d86958b02bca85103d64fa60d7b364a8b017c6e40f2b02c3f50ca22964a738" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -545,9 +569,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222fd4efff0fb9a25184684742c44fe9fa9a16c4ab5bf97583e71c86598ef8f0" +checksum = "5beb5c2fe6b960c8e8b038e69fd502a90a2e930afa4770efb748b163b0767729" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -570,53 +594,53 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "974df1e56405c27cb8242381f45d8b212ba9df5006046ccf704764a2a4634366" +checksum = "4ee1257a278f6d293e05c5162c5940a1561b1aa85ded0028b464c81de37ebfa5" dependencies = [ "alloy-primitives", "alloy-rpc-types-anvil", "alloy-rpc-types-beacon", "alloy-rpc-types-engine", "alloy-rpc-types-eth", - "alloy-serde", + "alloy-serde 2.0.4", "serde", ] [[package]] name = "alloy-rpc-types-anvil" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06bc10b0dca4f5bfc3cd30ed46eab5d651b5bb2cd300d683bdcdf5d2bfe6e82c" +checksum = "df32156f085e74eac942b6103744be49b817c302341aaa8cb0c1c88dc29228d9" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde", + "alloy-serde 2.0.4", "serde", ] [[package]] name = "alloy-rpc-types-any" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949c0f16a94ae33cdb1139b8dbf9e34d7f26ebfe97962e2a4d620b5f65f48fe4" +checksum = "6a234bfbdf7a76c3d13808f729af5321852de3dedcaa6fc6d5f54787aaf54c6a" dependencies = [ "alloy-consensus-any", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde", + "alloy-serde 2.0.4", "serde", "serde_json", ] [[package]] name = "alloy-rpc-types-beacon" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a8f7fa8ca056bb797a368aeed329e6ace6b62ee4271432ac36ab8ae87a5e60d" +checksum = "296450f5e76bece0116c939b9437b0421a5da9c5d40031bf4cf9b38d3d94e475" dependencies = [ - "alloy-eips", + "alloy-eips 2.0.4", "alloy-primitives", "alloy-rpc-types-engine", "derive_more 2.1.1", @@ -628,15 +652,15 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e59bc947935732cae5b072753e5e034c0b70a8b031c2839f45e2659ba07df9ae" +checksum = "73b12366c96f4013e1aeebc96c6b56e5f33f07853c42ea2f485045c0c157a4a1" dependencies = [ "alloy-consensus", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.4", "derive_more 2.1.1", "rand 0.8.5", "serde", @@ -645,17 +669,17 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc280a41931bd419af86e9e859dd9726b73313aaa2e479b33c0e344f4b892ddb" +checksum = "56a282daf869eeb7383d3d5c2deb35b0b3fb45ecb329513af4090fc61245ee18" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips", + "alloy-eips 2.0.4", "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 2.0.4", "alloy-sol-types", "itertools 0.14.0", "serde", @@ -666,9 +690,20 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "2.0.0" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4848831ff994c88b1c32b7df9c4c1c3eedea4b535bde5eb3c421ef0bdc5ac052" +checksum = "11ece63b89294b8614ab3f483560c08d016930f842bf36da56bf0b764a15c11e" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0eada2558e921b39dfcead33c487364df9b31374f5733c1c9d2c891c4529933" dependencies = [ "alloy-primitives", "serde", @@ -677,9 +712,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b8ad9890b212e224291024b1aecfeef72127d27a2f6eebc5e347c40275c4bf" +checksum = "41eb29f7a8adcd8941fbb8e134022a133e6f8dfd345f2e3b7109599f8a7dca08" dependencies = [ "alloy-primitives", "async-trait", @@ -692,9 +727,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c67d2372aada343130d41e249b59a3cef29b1678dcd3fd80f1c2c4d6b5318f2" +checksum = "bef839e7ce9b59aa60fa9a175e97986c6145c888d643b0f1fb0a3e7b8e56a2e2" dependencies = [ "alloy-consensus", "alloy-network", @@ -784,9 +819,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b7b755e64ae6b5de0d762ed2c780e072167ea5e542076a559e00314352a0bf" +checksum = "3ac7a80c0bac3e44559d53d002e34c461dc2f23262b42cafec019bc70551abbe" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -807,9 +842,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a29980e69119444ed26b75e7ee5bed2043870f904a64318297e55800db686564" +checksum = "eed3ed3300a998f88639ed619fdbbd88bd82865e00c6a8ecb796c99eb12358f6" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -823,9 +858,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4b71dc951db66795cfb52eef835f64cf15163bc93b656e061b457ce5ebff370" +checksum = "0e3bff84b2b2a46eb34cc522dc3f889a2867c70be90a377421429b662b3ec4ce" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -858,9 +893,9 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8228b9236479ff16b03041b64b86c2bd4e53da1caa45d59b5868cd1571131e" +checksum = "99fce0350197dcd4ba4e9a7dd43915d908c0eb0e7352755791709a705e1c76b6" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -989,7 +1024,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb00293ba84f51ce3bd026bd0de55899c4e68f0a39a5728cebae3a73ffdc0a4f" dependencies = [ - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-std 0.4.0", ] @@ -1001,7 +1036,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20c7021f180a0cbea0380eba97c2af3c57074cdaffe0eef7e840e1c9f2841e55" dependencies = [ "ark-bls12-377", - "ark-ec", + "ark-ec 0.4.2", "ark-models-ext", "ark-std 0.4.0", ] @@ -1012,26 +1047,50 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-serialize 0.4.2", "ark-std 0.4.0", ] +[[package]] +name = "ark-bls12-381" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df4dcc01ff89867cd86b0da835f23c3f02738353aaee7dde7495af71363b8d5" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", +] + [[package]] name = "ark-bls12-381-ext" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1dc4b3d08f19e8ec06e949712f95b8361e43f1391d94f65e4234df03480631c" dependencies = [ - "ark-bls12-381", - "ark-ec", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-models-ext", "ark-serialize 0.4.2", "ark-std 0.4.0", ] +[[package]] +name = "ark-bn254" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-r1cs-std", + "ark-std 0.5.0", +] + [[package]] name = "ark-bw6-761" version = "0.4.0" @@ -1039,7 +1098,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e0605daf0cc5aa2034b78d008aaf159f56901d92a52ee4f6ecdfdac4f426700" dependencies = [ "ark-bls12-377", - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-std 0.4.0", ] @@ -1051,7 +1110,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccee5fba47266f460067588ee1bf070a9c760bf2050c1c509982c5719aadb4f2" dependencies = [ "ark-bw6-761", - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-models-ext", "ark-std 0.4.0", @@ -1064,7 +1123,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ "ark-ff 0.4.2", - "ark-poly", + "ark-poly 0.4.2", "ark-serialize 0.4.2", "ark-std 0.4.0", "derivative", @@ -1075,6 +1134,27 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ark-ec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d68f2d516162846c1238e755a7c4d131b892b70cc70c471a8e3ca3ed818fce" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-poly 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", + "itertools 0.13.0", + "num-bigint", + "num-integer", + "num-traits", + "zeroize", +] + [[package]] name = "ark-ed-on-bls12-377" version = "0.4.0" @@ -1082,7 +1162,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b10d901b9ac4b38f9c32beacedfadcdd64e46f8d7f8e88c1ae1060022cf6f6c6" dependencies = [ "ark-bls12-377", - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-std 0.4.0", ] @@ -1093,7 +1173,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524a4fb7540df2e1a8c2e67a83ba1d1e6c3947f4f9342cc2359fc2e789ad731d" dependencies = [ - "ark-ec", + "ark-ec 0.4.2", "ark-ed-on-bls12-377", "ark-ff 0.4.2", "ark-models-ext", @@ -1106,8 +1186,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" dependencies = [ - "ark-bls12-381", - "ark-ec", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-std 0.4.0", ] @@ -1118,7 +1198,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d15185f1acb49a07ff8cbe5f11a1adc5a93b19e211e325d826ae98e98e124346" dependencies = [ - "ark-ec", + "ark-ec 0.4.2", "ark-ed-on-bls12-381-bandersnatch", "ark-ff 0.4.2", "ark-models-ext", @@ -1257,7 +1337,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e9eab5d4b5ff2f228b763d38442adc9b084b0a465409b059fac5c2308835ec2" dependencies = [ - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-serialize 0.4.2", "ark-std 0.4.0", @@ -1277,13 +1357,57 @@ dependencies = [ "hashbrown 0.13.2", ] +[[package]] +name = "ark-poly" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "579305839da207f02b89cd1679e50e67b4331e2f9294a57693e5051b7703fe27" +dependencies = [ + "ahash", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "educe", + "fnv", + "hashbrown 0.15.5", +] + +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] + [[package]] name = "ark-scale" version = "0.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f69c00b3b529be29528a6f2fd5fa7b1790f8bed81b9cdca17e326538545a179" dependencies = [ - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-serialize 0.4.2", "ark-std 0.4.0", @@ -1307,7 +1431,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "ark-serialize-derive", + "ark-serialize-derive 0.4.2", "ark-std 0.4.0", "digest 0.10.7", "num-bigint", @@ -1319,6 +1443,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" dependencies = [ + "ark-serialize-derive 0.5.0", "ark-std 0.5.0", "arrayvec 0.7.6", "digest 0.10.7", @@ -1336,6 +1461,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-serialize-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "ark-std" version = "0.3.0" @@ -1819,6 +1955,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.3.0" @@ -1985,7 +2131,7 @@ dependencies = [ "bitflags 2.10.0", "cexpr", "clang-sys", - "itertools 0.11.0", + "itertools 0.13.0", "log", "prettyplease 0.2.37", "proc-macro2", @@ -2002,7 +2148,7 @@ version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90dbd31c98227229239363921e60fcf5e558e43ec69094d46fc4996f08d1d5bc" dependencies = [ - "bitcoin_hashes 0.13.0", + "bitcoin_hashes 0.14.1", ] [[package]] @@ -2063,6 +2209,9 @@ name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +dependencies = [ + "serde_core", +] [[package]] name = "bitvec" @@ -2072,6 +2221,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ "funty", "radium", + "serde", "tap", "wyz", ] @@ -2430,9 +2580,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.5" +version = "2.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" +checksum = "6648ed1e4ea8e8a1a4a2c78e1cda29a3fd500bc622899c340d8525ea9a76b24a" dependencies = [ "blst", "cc", @@ -2462,7 +2612,7 @@ dependencies = [ "gear-wasm-instrument", "gear-workspace-hack", "log", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wasmer", "wasmer-types", "wat", @@ -2494,7 +2644,7 @@ dependencies = [ "serde", "serde_json", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -2511,7 +2661,7 @@ dependencies = [ "structopt", "tokio", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "warp", ] @@ -2912,7 +3062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -3663,7 +3813,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 1.0.109", + "syn 2.0.114", ] [[package]] @@ -5095,7 +5245,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5154,7 +5304,7 @@ dependencies = [ "thiserror 2.0.17", "tokio", "toml 0.8.23", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -5297,6 +5447,7 @@ dependencies = [ "log", "nonempty 0.12.0", "rand 0.8.5", + "revm", "roast-secp256k1-evm", "serde", "tokio", @@ -5336,7 +5487,7 @@ dependencies = [ "rand 0.8.5", "thiserror 2.0.17", "tokio", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -5362,7 +5513,7 @@ dependencies = [ "rand 0.8.5", "tokio", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "url", ] @@ -5437,7 +5588,7 @@ dependencies = [ "sp-wasm-interface", "thiserror 2.0.17", "tokio", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wasmtime", "wat", ] @@ -5486,7 +5637,7 @@ dependencies = [ "tower 0.4.13", "tower-http 0.5.2", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -5591,7 +5742,7 @@ dependencies = [ "tempfile", "tokio", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wat", ] @@ -6549,8 +6700,8 @@ dependencies = [ name = "gbuiltin-bls381" version = "1.10.0" dependencies = [ - "ark-bls12-381", - "ark-ec", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-scale", "ark-serialize 0.4.2", @@ -6613,7 +6764,7 @@ dependencies = [ "snapbox", "tokio", "toml 0.8.23", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "url", ] @@ -6673,7 +6824,7 @@ dependencies = [ "sp-state-machine", "sp-timestamp", "substrate-prometheus-endpoint", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "vara-runtime", ] @@ -6811,7 +6962,7 @@ dependencies = [ "scale-encode", "scale-info", "serde", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wasmparser 0.230.0 (registry+https://github.com/rust-lang/crates.io-index)", "wat", ] @@ -6834,7 +6985,7 @@ dependencies = [ "gsys", "log", "parity-scale-codec", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -6910,7 +7061,7 @@ dependencies = [ "proptest", "region", "sp-wasm-interface-common", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wasmer-vm", "winapi", ] @@ -6971,7 +7122,7 @@ dependencies = [ "tokio", "tracing", "tracing-appender", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -7254,7 +7405,7 @@ dependencies = [ "path-clean", "serde", "serde_json", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -7272,7 +7423,7 @@ dependencies = [ "subxt", "thiserror 2.0.17", "tokio", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -7404,7 +7555,8 @@ dependencies = [ "alloy-chains", "alloy-consensus", "alloy-contract", - "alloy-eips", + "alloy-eip7702", + "alloy-eips 2.0.4", "alloy-json-abi", "alloy-primitives", "alloy-provider", @@ -7417,9 +7569,9 @@ dependencies = [ "alloy-sol-type-parser", "alloy-sol-types", "anyhow", - "ark-bls12-381", + "ark-bls12-381 0.4.0", "ark-bls12-381-ext", - "ark-ec", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-models-ext", "ark-scale", @@ -7433,6 +7585,7 @@ dependencies = [ "blake2 0.10.6", "blake2b_simd", "blake3", + "blst", "bounded-collections", "bp-header-chain", "bp-runtime", @@ -7441,6 +7594,7 @@ dependencies = [ "bytemuck", "byteorder", "bytes", + "c-kzg", "cc", "cipher 0.4.4", "clap 4.5.54", @@ -7460,6 +7614,7 @@ dependencies = [ "darling_core 0.21.3", "data-encoding", "der", + "derive-where", "derive_more 0.99.20", "derive_more 2.1.1", "derive_more-impl 2.1.1", @@ -7521,7 +7676,7 @@ dependencies = [ "indexmap 2.13.0", "ipnet", "itertools 0.10.5", - "itertools 0.11.0", + "itertools 0.13.0", "js-sys", "jsonrpsee", "jsonrpsee-client-transport", @@ -7547,6 +7702,8 @@ dependencies = [ "num-integer", "num-rational", "num-traits", + "num_enum 0.7.5", + "num_enum_derive 0.7.5", "object 0.30.4", "object 0.32.2", "once_cell", @@ -7714,7 +7871,7 @@ dependencies = [ "tracing", "tracing-core", "tracing-log", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "trie-db", "trie-root", "trybuild", @@ -7994,8 +8151,8 @@ dependencies = [ name = "gsdk" version = "1.10.0" dependencies = [ - "ark-bls12-381", - "ark-ec", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", "ark-scale", "ark-serialize 0.4.2", "ark-std 0.4.0", @@ -8080,7 +8237,7 @@ dependencies = [ "tempfile", "thiserror 2.0.17", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -8160,7 +8317,7 @@ dependencies = [ "sha2 0.10.9", "sp-core", "thiserror 2.0.17", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -8703,7 +8860,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.1", "tokio", "tower-service", "tracing", @@ -9170,7 +9327,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi 0.5.2", "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -10805,7 +10962,7 @@ dependencies = [ "generator", "scoped-tls", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -11697,7 +11854,7 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9224be3459a0c1d6e9b0f42ab0e76e98b29aef5aba33c0487dfcf47ea08b5150" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 1.0.109", @@ -11709,7 +11866,21 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", ] [[package]] @@ -11756,6 +11927,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-rational" version = "0.4.2" @@ -11823,6 +12005,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.114", @@ -12031,6 +12214,18 @@ version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.9", +] + [[package]] name = "page_size" version = "0.6.0" @@ -12308,7 +12503,7 @@ dependencies = [ "sp-runtime", "sp-std", "test-syscalls", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wasmparser 0.230.0 (registry+https://github.com/rust-lang/crates.io-index)", "wat", ] @@ -12381,7 +12576,7 @@ dependencies = [ "sp-runtime", "sp-staking", "sp-std", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -12445,7 +12640,7 @@ dependencies = [ "sp-runtime", "sp-session", "sp-std", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -12501,7 +12696,7 @@ dependencies = [ "sp-io", "sp-runtime", "sp-std", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -12523,7 +12718,7 @@ dependencies = [ "sp-io", "sp-runtime", "sp-std", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -12650,7 +12845,7 @@ dependencies = [ "sp-io", "sp-runtime", "sp-std", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -12683,7 +12878,7 @@ dependencies = [ "sp-npos-elections", "sp-runtime", "sp-std", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -13427,6 +13622,49 @@ dependencies = [ "rustc_version 0.4.1", ] +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher 1.0.1", +] + [[package]] name = "pin-project" version = "1.1.10" @@ -13732,6 +13970,15 @@ dependencies = [ "syn 2.0.114", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "primitive-types" version = "0.12.2" @@ -13985,7 +14232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck 0.4.1", + "heck 0.5.0", "itertools 0.12.1", "log", "multimap 0.10.1", @@ -14220,7 +14467,7 @@ dependencies = [ "quinn-udp 0.5.14", "rustc-hash 2.1.1", "rustls 0.23.36", - "socket2 0.5.10", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -14319,9 +14566,9 @@ dependencies = [ "cfg_aliases 0.2.1", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -14756,6 +15003,198 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" +[[package]] +name = "revm" +version = "38.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91202d39dbe8e8d10e9e8f2b76c30da68ecd1d25be69ba6d853ad0d03a3a398a" +dependencies = [ + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", +] + +[[package]] +name = "revm-bytecode" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdbb3a3d735efa94c91f2ef6bf20a35f99a77bc78f3e25bd758336901bdf9661" +dependencies = [ + "bitvec", + "phf", + "revm-primitives", + "serde", +] + +[[package]] +name = "revm-context" +version = "16.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f68d928d8b228e0faeb1c6ed75c4fde7d124f1ddf9119b67e7a0ad4041237d" +dependencies = [ + "bitvec", + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "17.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3758e6167c4ba7a59a689c519a047edaefcd4c37d74f279b93ed87bc8aece4" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database" +version = "13.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c281a1f11d3bcb8c0bba1199ed6bcb001d1aeb3d4fb366819e14f88723989a4e" +dependencies = [ + "alloy-eips 1.8.3", + "revm-bytecode", + "revm-database-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database-interface" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89efb9832a4e3742bb4ded5f7fe5bf905e8860e69427d4dfec153484fc6d304" +dependencies = [ + "auto_impl", + "either", + "revm-primitives", + "revm-state", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "revm-handler" +version = "18.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "783e903d6922b7f5f9a940d1bb229530502d2924b1aed9d5ca5a94ebf065d460" +dependencies = [ + "auto_impl", + "derive-where", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-inspector" +version = "19.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8216ad58422090d0daa9eb430e0a081f7ad07e7fd30681dee71f8420c99624e0" +dependencies = [ + "auto_impl", + "either", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives", + "revm-state", + "serde", + "serde_json", +] + +[[package]] +name = "revm-interpreter" +version = "35.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ece9f41b69658c15d748288a4dbdfc06a63f3ce93d983af440de3f1631dce6a" +dependencies = [ + "revm-bytecode", + "revm-context-interface", + "revm-primitives", + "revm-state", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "34.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a346a8cc6c8c39bd65306641c692191299c0a7b63d38810e39e8fe9b92378660" +dependencies = [ + "ark-bls12-381 0.5.0", + "ark-bn254", + "ark-ec 0.5.0", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "arrayref", + "aurora-engine-modexp", + "blst", + "c-kzg", + "cfg-if", + "k256", + "p256", + "revm-context-interface", + "revm-primitives", + "ripemd", + "secp256k1 0.31.1", + "sha2 0.10.9", +] + +[[package]] +name = "revm-primitives" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c99bda77d9661521ba0b4bc04558c6692074f01e65dd420fa3b893033d9b8a2" +dependencies = [ + "alloy-primitives", + "num_enum 0.7.5", + "once_cell", + "serde", +] + +[[package]] +name = "revm-state" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c32490ed687dba31c3c882beb8c20408bdd30ef96690d8f145b0ee9a87040bfe" +dependencies = [ + "alloy-eip7928", + "bitflags 2.10.0", + "revm-bytecode", + "revm-primitives", + "serde", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -15082,7 +15521,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -15095,7 +15534,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -15198,7 +15637,7 @@ dependencies = [ "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs 0.26.11", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -15219,7 +15658,7 @@ dependencies = [ "security-framework 3.5.1", "security-framework-sys", "webpki-root-certs 1.0.5", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -16299,7 +16738,7 @@ dependencies = [ "thiserror 1.0.69", "tracing", "tracing-log", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -16671,6 +17110,17 @@ dependencies = [ "serde", ] +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes 0.14.1", + "rand 0.9.2", + "secp256k1-sys 0.11.0", +] + [[package]] name = "secp256k1-sys" version = "0.9.2" @@ -16689,6 +17139,15 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + [[package]] name = "secrecy" version = "0.8.0" @@ -16883,6 +17342,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ + "indexmap 2.13.0", "itoa", "memchr", "serde", @@ -17593,11 +18053,11 @@ source = "git+https://github.com/gear-tech/polkadot-sdk.git?branch=gear-polkadot dependencies = [ "ark-bls12-377", "ark-bls12-377-ext", - "ark-bls12-381", + "ark-bls12-381 0.4.0", "ark-bls12-381-ext", "ark-bw6-761", "ark-bw6-761-ext", - "ark-ec", + "ark-ec 0.4.2", "ark-ed-on-bls12-377", "ark-ed-on-bls12-377-ext", "ark-ed-on-bls12-381-bandersnatch", @@ -17983,7 +18443,7 @@ dependencies = [ "parity-scale-codec", "tracing", "tracing-core", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -18815,7 +19275,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.3", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -19331,7 +19791,7 @@ dependencies = [ "crossbeam-channel", "thiserror 2.0.17", "time", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -19386,6 +19846,15 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.22" @@ -19892,7 +20361,7 @@ dependencies = [ "sp-version", "substrate-build-script-utils", "substrate-wasm-builder", - "tracing-subscriber", + "tracing-subscriber 0.3.22", "wat", ] @@ -19938,11 +20407,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6bfb937b3d12077654a9e43e32a4e9c20177dd9fea0f3aba673e7840bb54f32" dependencies = [ "ark-bls12-377", - "ark-bls12-381", - "ark-ec", + "ark-bls12-381 0.4.0", + "ark-ec 0.4.2", "ark-ff 0.4.2", "ark-serialize 0.4.2", - "ark-serialize-derive", + "ark-serialize-derive 0.4.2", "arrayref", "digest 0.10.7", "rand 0.8.5", @@ -20173,7 +20642,7 @@ dependencies = [ "gear-wasm-instrument", "gear-workspace-hack", "log", - "tracing-subscriber", + "tracing-subscriber 0.3.22", ] [[package]] @@ -20959,7 +21428,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 30a207b166a..85b8484724b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -116,8 +116,8 @@ members = [ [workspace.dependencies] gear-workspace-hack = "0.1.0" -alloy = "2.0" -alloy-chains = "0.2.33" +alloy = "2.0.4" +alloy-chains = "0.2.34" alloy-primitives = { version = "1.5.7", default-features = false } alloy-sol-types = { version = "1.5.7", default-features = false } anyhow = { version = "1.0.86", default-features = false } @@ -576,6 +576,7 @@ wasm-encoder = { version = "0.230", default-features = false, features = [ ] } # utils/wasm-instrument async-broadcast = "0.7.2" # ethexe/service ip_network = "0.4.1" # ethexe/network +revm = "38.0" # ethexe/ethereum [workspace.lints.rust] unexpected_cfgs = { level = "warn", check-cfg = [ diff --git a/Makefile b/Makefile index ec76030d0c6..2cf7b012bf5 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,8 @@ ethexe-pre-commit-no-contracts: fmt clippy-gear # Building ethexe contracts .PHONY: ethexe-contracts-pre-commit ethexe-contracts-pre-commit: + @ echo " > Adding instrumentation to Router" && cp ./ethexe/contracts/src/Router.sol ./ethexe/contracts/src/instrumented/RouterWithInstrumentation.sol && sed -i 's/contract Router is/contract RouterWithInstrumentation is/' ./ethexe/contracts/src/instrumented/RouterWithInstrumentation.sol && sed -i 's/\/\/ emit DebugEvent(/emit DebugEvent(/g' ./ethexe/contracts/src/instrumented/RouterWithInstrumentation.sol + @ echo " > Adding instrumentation to Mirror" && cp ./ethexe/contracts/src/Mirror.sol ./ethexe/contracts/src/instrumented/MirrorWithInstrumentation.sol && sed -i 's/contract Mirror is/contract MirrorWithInstrumentation is/' ./ethexe/contracts/src/instrumented/MirrorWithInstrumentation.sol && sed -i 's/\/\/ emit DebugEvent(/emit DebugEvent(/g' ./ethexe/contracts/src/instrumented/MirrorWithInstrumentation.sol @ echo " > Cleaning contracts" && forge clean --root ethexe/contracts @ echo " > Formatting contracts" && forge fmt --root ethexe/contracts @ echo " > Building contracts" && forge build --root ethexe/contracts @@ -16,7 +18,9 @@ ethexe-contracts-pre-commit: @ echo " > Copying Middleware artifact" && cp ./ethexe/contracts/out/Middleware.sol/Middleware.json ./ethexe/ethereum/abi @ echo " > Copying POAMiddleware artifact" && cp ./ethexe/contracts/out/POAMiddleware.sol/POAMiddleware.json ./ethexe/ethereum/abi @ echo " > Copying Mirror artifact" && cp ./ethexe/contracts/out/Mirror.sol/Mirror.json ./ethexe/ethereum/abi + @ echo " > Copying MirrorWithInstrumentation artifact" && cp ./ethexe/contracts/out/MirrorWithInstrumentation.sol/MirrorWithInstrumentation.json ./ethexe/ethereum/abi @ echo " > Copying Router artifact" && cp ./ethexe/contracts/out/Router.sol/Router.json ./ethexe/ethereum/abi + @ echo " > Copying RouterWithInstrumentation artifact" && cp ./ethexe/contracts/out/RouterWithInstrumentation.sol/RouterWithInstrumentation.json ./ethexe/ethereum/abi @ echo " > Copying ERC1967Proxy artifact" && cp ./ethexe/contracts/out/ERC1967Proxy.sol/ERC1967Proxy.json ./ethexe/ethereum/abi @ echo " > Copying WrappedVara artifact" && cp ./ethexe/contracts/out/WrappedVara.sol/WrappedVara.json ./ethexe/ethereum/abi @ echo " > Copying BatchMulticall" && cp ./ethexe/contracts/out/BatchMulticall.sol/BatchMulticall.json ./ethexe/ethereum/abi diff --git a/ethexe/common/src/db.rs b/ethexe/common/src/db.rs index a20bbfd4338..f8e9441064a 100644 --- a/ethexe/common/src/db.rs +++ b/ethexe/common/src/db.rs @@ -252,7 +252,7 @@ mod tests { #[test] fn ensure_types_unchanged() { const EXPECTED_TYPE_INFO_HASH: &str = - "af71cfe84dbd11ee47246e10dc1ad27e20a73ac080f7bf48ae9f3cf82848c85d"; + "52e01b7a47a16b56ad45902cc3a4ef402ec74584bd5d86d015a6b9858314346a"; let types = [ meta_type::(), diff --git a/ethexe/common/src/gear.rs b/ethexe/common/src/gear.rs index 17bc116424d..0aa63a76869 100644 --- a/ethexe/common/src/gear.rs +++ b/ethexe/common/src/gear.rs @@ -370,7 +370,7 @@ pub struct StateTransition { /// /// Negative numbers will be stored like this: /// ```bash - /// $ cast + /// $ chisel /// > -1 ether /// Type: int256 /// Hex: 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000 diff --git a/ethexe/contracts/foundry.toml b/ethexe/contracts/foundry.toml index 28b0b6c2ee4..74bc9ed7940 100644 --- a/ethexe/contracts/foundry.toml +++ b/ethexe/contracts/foundry.toml @@ -22,6 +22,7 @@ ignored_warnings_from = [ "lib/openzeppelin-foundry-upgrades/src/internal/StringFinder.sol", # Warning (3628): This contract has a payable fallback function, but no receive ether function. "src/Mirror.sol", + "src/instrumented/MirrorWithInstrumentation.sol", "src/MirrorProxy.sol", ] # Required for Middleware tests diff --git a/ethexe/contracts/remappings.txt b/ethexe/contracts/remappings.txt index b4e81161be8..226ce8a872c 100644 --- a/ethexe/contracts/remappings.txt +++ b/ethexe/contracts/remappings.txt @@ -5,11 +5,11 @@ script=./script @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ @symbioticfi/core/=lib/symbiotic-rewards/lib/core/ core/=lib/symbiotic-rewards/lib/core/ -ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/ -erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/ +ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/ +erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/ forge-std/=lib/forge-std/src/ frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/ -halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/ +halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/ openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/ openzeppelin-contracts/=lib/openzeppelin-contracts/ openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/ diff --git a/ethexe/contracts/src/Mirror.sol b/ethexe/contracts/src/Mirror.sol index f303407a4fc..9f8732d4c82 100644 --- a/ethexe/contracts/src/Mirror.sol +++ b/ethexe/contracts/src/Mirror.sol @@ -128,6 +128,29 @@ contract Mirror is IMirror { */ bool isSmall; + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID = 1; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID = 2; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER = 3; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER = 4; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES = 5; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES = 6; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES = 7; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES = 8; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR = 9; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR = 10; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH = 11; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH = 12; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH = 13; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH = 14; + + event DebugEvent(uint256 indexed topic0) anonymous; + /** * @dev Minimal constructor that only sets the immutable `Router` address. * @param _router The address of the `Router` contract. @@ -397,45 +420,58 @@ contract Mirror is IMirror { /** * @dev Verify that the transition belongs to this contract. */ + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID); require(_transition.actorId == address(this), InvalidActorId()); + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID); /** * @dev Transfer value to router if valueToReceive is non-zero and has negative sign. */ + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER); if (_transition.valueToReceiveNegativeSign) { _retrievingEther(_transition.valueToReceive); } + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER); /** * @dev Send all outgoing messages. */ + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES); bytes32 messagesHashesHash = _sendMessages(_transition.messages); + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES); /** * @dev Send value for each claim. */ + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES); bytes32 valueClaimsHash = _claimValues(_transition.valueClaims); + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES); /** * @dev Set inheritor if exited. */ + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR); if (_transition.exited) { _setInheritor(_transition.inheritor); } else { require(_transition.inheritor == address(0), InheritorMustBeZero()); } + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR); /** * @dev Update the state hash if changed. */ + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH); if (stateHash != _transition.newStateHash) { _updateStateHash(_transition.newStateHash); } + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH); /** * @dev Return hash of performed state transition. */ - return Gear.stateTransitionHash( + // emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH); + bytes32 _stateTransitionHash = Gear.stateTransitionHash( _transition.actorId, _transition.newStateHash, _transition.exited, @@ -445,6 +481,8 @@ contract Mirror is IMirror { valueClaimsHash, messagesHashesHash ); + // emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH); + return _stateTransitionHash; } /* # Private calls, related to primary Gear logic */ diff --git a/ethexe/contracts/src/Router.sol b/ethexe/contracts/src/Router.sol index 9f6502594e7..57d0c51e0a2 100644 --- a/ethexe/contracts/src/Router.sol +++ b/ethexe/contracts/src/Router.sol @@ -48,6 +48,11 @@ contract Router is bytes32 private constant REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH = 0x375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b8097; + uint256 public constant COMMIT_BATCH_BEFORE_COMMIT_CODES = 1; + uint256 public constant COMMIT_BATCH_AFTER_COMMIT_CODES = 2; + + event DebugEvent(uint256 indexed topic0) anonymous; + /** * @custom:oz-upgrades-unsafe-allow constructor */ @@ -835,7 +840,11 @@ contract Router is require(router.latestCommittedBatch.timestamp <= _batch.blockTimestamp, BatchTimestampTooEarly()); bytes32 _chainCommitmentHash = _commitChain(router, _batch); + + // emit DebugEvent(COMMIT_BATCH_BEFORE_COMMIT_CODES); bytes32 _codeCommitmentsHash = _commitCodes(router, _batch); + // emit DebugEvent(COMMIT_BATCH_AFTER_COMMIT_CODES); + bytes32 _rewardsCommitmentHash = _commitRewards(router, _batch); bytes32 _validatorsCommitmentHash = _commitValidators(router, _batch); diff --git a/ethexe/contracts/src/instrumented/MirrorWithInstrumentation.sol b/ethexe/contracts/src/instrumented/MirrorWithInstrumentation.sol new file mode 100644 index 00000000000..9f57aae512d --- /dev/null +++ b/ethexe/contracts/src/instrumented/MirrorWithInstrumentation.sol @@ -0,0 +1,1099 @@ +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +pragma solidity ^0.8.33; + +import {ERC1967Utils} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol"; +import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol"; +import {Memory} from "frost-secp256k1-evm/utils/Memory.sol"; +import {Hashes} from "frost-secp256k1-evm/utils/cryptography/Hashes.sol"; +import {ICallbacks} from "src/ICallbacks.sol"; +import {IMirror} from "src/IMirror.sol"; +import {IRouter} from "src/IRouter.sol"; +import {IWrappedVara} from "src/IWrappedVara.sol"; +import {Gear} from "src/libraries/Gear.sol"; + +/** + * @dev Mirror smart contract is responsible for storing the minimal state of programs on our platform + * and transitioning from one state to another by calling `performStateTransition(...)`. It's built + * on actor-model architecture, and in Ethereum, we implement this through "request-response" model. + * + * This means we have two types of events: + * - "Requested" events - when user calls one of the methods marked as "Primary Gear logic" we emit such an event, + * and all our nodes process it off-chain + * - "Responded" events - when we receive response from our nodes and transmit it back to Ethereum. + * All logic called within `performStateTransition(...)` and leading to methods marked as + * "Private calls related to performStateTransition" are such events. + * + * It's important not to confuse these two, as this is how we implement the actor model in Ethereum. + * + * Mirror economic model has two balances: + * - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`. + * This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`. + * - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain. + * It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform. + * You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the + * Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users + * can use it for free. This is called the "reverse-gas model". Developer can also require the presence of `value` in + * the owned balance when calling methods in a WASM smart contract to protect their program from spam. + */ +contract MirrorWithInstrumentation is IMirror { + /** + * @dev Special address to which Sails contract sends messages so that Mirror can decode events + * and re-remit then as Solidity events: + * - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs + */ + address internal constant ETH_EVENT_ADDR = 0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF; + + /** + * @dev Address of the `Router` contract, which is the sole authority + * to modify the state of this contract and transfer funds from it. + * forge-lint: disable-next-item(screaming-snake-case-immutable) + */ + address public immutable router; + + /** + * @dev Program's current state hash. + */ + bytes32 public stateHash; + + /** + * @dev Source for message ids unique generation. + * In-fact represents amount of messages received from Ethereum. + * Zeroed nonce is always represent init message. + */ + uint256 public nonce; + + /** + * @dev The bool flag indicates whether the program is exited. + */ + bool public exited; + + // TODO (breathx): consider proxying there. + /** + * @dev The address of the inheritor, which is set by the program on exit. + * Inheritor specifies the address to which all available program value should be transferred. + */ + address public inheritor; + + /** + * @dev The address eligible to send first (init) message. + */ + address public initializer; + + /** + * @dev Flag that indicates what type this `Mirror` smart contract is: + * - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation + * (which is usually more expensive in terms of gas to create). This is generally the + * more popular way and is the one you will most likely use if you are writing programs using the Sails framework. + * This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and + * new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`. + * + * User writes WASM smart contract on Sails framework called "Сounter": + * - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs + * + * User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)` + * and waits for the code to be validated. + * + * User also generates "Solidity ABI Interface" to allow incrementing counter or calling other methods within WASM smart contract. + * Next, we assume user uploads `CounterAbi` smart contract to Ethereum: + * ```solidity + * interface ICounter { + * function init(bool _callReply, uint32 counter) external returns (bytes32 messageId); + * + * function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId); + * + * // ... other methods + * } + * + * contract CounterAbi is ICounter { + * function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {} + * + * function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {} + * } + * ``` + * + * User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`, + * where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as "proxy implementation", + * and Etherscan will think that `Mirror` has `CounterAbi` methods. + * + * User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract: + * `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call + * and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror` + * to create new message and pass the Solidity call to the WASM smart contract on the Sails framework. + * + * WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`. + * - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation + * (which is usually less expensive in terms of gas to create). This case is suitable if the user develops + * WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors + * (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`. + */ + bool isSmall; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID = 1; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID = 2; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER = 3; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER = 4; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES = 5; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES = 6; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES = 7; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES = 8; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR = 9; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR = 10; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH = 11; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH = 12; + + uint256 internal constant PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH = 13; + uint256 internal constant PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH = 14; + + event DebugEvent(uint256 indexed topic0) anonymous; + + /** + * @dev Minimal constructor that only sets the immutable `Router` address. + * @param _router The address of the `Router` contract. + */ + constructor(address _router) { + router = _router; + } + + /* # Modifiers */ + + /** + * @dev Functions marked with this modifier can only be called if the init message has been created before. + */ + modifier onlyAfterInitMessage() { + _onlyAfterInitMessage(); + _; + } + + /** + * @dev Internal function to check if the init message has been created before. + */ + function _onlyAfterInitMessage() internal view { + require(nonce > 0, InitMessageNotCreated()); + } + + /** + * @dev Functions marked with this modifier can only be called if the init message has been created before or the caller is the initializer. + */ + modifier onlyAfterInitMessageOrInitializer() { + _onlyAfterInitMessageOrInitializer(); + _; + } + + /** + * @dev Internal function to check if the init message has been created before or the caller is the initializer. + */ + function _onlyAfterInitMessageOrInitializer() internal view { + require(nonce > 0 || msg.sender == initializer, InitMessageNotCreatedAndCallerNotInitializer()); + } + + /** + * @dev Functions marked with this modifier can only be called if program is active. + */ + modifier onlyIfActive() { + _onlyIfActive(); + _; + } + + /** + * @dev Internal function to check if the program is active. + */ + function _onlyIfActive() internal view { + require(!exited, ProgramExited()); + } + + /** + * @dev Functions marked with this modifier can only be called if program is exited. + */ + modifier onlyIfExited() { + _onlyIfExited(); + _; + } + + /** + * @dev Internal function to check if the program is exited. + */ + function _onlyIfExited() internal view { + require(exited, ProgramNotExited()); + } + + /** + * @dev Functions marked with this modifier can only be called by the `Router`. + */ + modifier onlyRouter() { + _onlyRouter(); + _; + } + + /** + * @dev Internal function to check if the caller is the `Router`. + */ + function _onlyRouter() internal view { + require(msg.sender == router, CallerNotRouter()); + } + + /** + * @dev Functions marked with this modifier can only be called when the `Router` is not paused. + */ + modifier whenNotPaused() { + _whenNotPaused(); + _; + } + + /** + * @dev Internal function to check if the `Router` is not paused. + */ + function _whenNotPaused() internal view { + require(!IRouter(router).paused(), EnforcedPause()); + } + + /** + * @dev Non-zero Vara value must be transferred from source to `Router` in functions marked with this modifier. + */ + modifier retrievingVara(uint128 value) { + _retrievingVara(value); + _; + } + + /** + * @dev Internal function to transfer non-zero Vara value from source to `Router`. + */ + function _retrievingVara(uint128 value) internal { + if (value != 0) { + bool success = _wvara(router).transferFrom(msg.sender, router, value); + require(success, WVaraTransferFailed()); + } + } + + /** + * @dev Non-zero Ether value must be transferred from source to `Router` in functions marked with this modifier. + */ + function _retrievingEther(uint128 value) internal { + if (value != 0) { + (bool success,) = router.call{value: value}(""); + require(success, EtherTransferToRouterFailed()); + } + } + + /* # Primary Gear logic (external calls) */ + + /** + * @dev Sends message to the program. + * As result of execution, the `MessageQueueingRequested` event will be emitted. + * @param _payload The payload of the message. + * @param _callReply Whether to set `call` flag in the reply message. + * @return messageId Message ID of the sent message. + */ + function sendMessage(bytes calldata _payload, bool _callReply) + external + payable + whenNotPaused + returns (bytes32 messageId) + { + return _sendMessage(_payload, _callReply); + } + + /** + * @dev Sends reply message to the program. + * Note that this function does not return `bytes32 messageId` of the sent message, + * if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` + * or use SDK in `ethexe/sdk/src/mirror.rs`. + * As result of execution, the `ReplyQueueingRequested` event will be emitted. + * @param _repliedTo Message ID to which the reply is sent. + * @param _payload The payload of the reply message. + */ + function sendReply(bytes32 _repliedTo, bytes calldata _payload) + external + payable + whenNotPaused + onlyIfActive + onlyAfterInitMessage + { + uint128 _value = uint128(msg.value); + + _retrievingEther(_value); + + emit ReplyQueueingRequested(_repliedTo, msg.sender, _payload, _value); + } + + // TODO (breathx): consider and support claimValue after exit. + /** + * @dev Claim value from message in mailbox. + * As result of execution, the `ValueClaimingRequested` event will be emitted. + * @param _claimedId Message ID of the value to be claimed. + */ + function claimValue(bytes32 _claimedId) external whenNotPaused onlyIfActive onlyAfterInitMessage { + emit ValueClaimingRequested(_claimedId, msg.sender); + } + + /** + * @dev Tops up the executable balance of the program. + * As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted. + * @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up. + */ + function executableBalanceTopUp(uint128 _value) external whenNotPaused onlyIfActive retrievingVara(_value) { + emit ExecutableBalanceTopUpRequested(_value); + } + + /** + * @dev Tops up the executable balance of the program. + * Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` + * using permit signature, which can save one transaction for user. + * As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted. + * @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up. + * @param _deadline Deadline for the transaction to be executed. + * @param _v ECDSA signature parameter. + * @param _r ECDSA signature parameter. + * @param _s ECDSA signature parameter. + */ + function executableBalanceTopUpWithPermit(uint128 _value, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s) + external + whenNotPaused + onlyIfActive + { + try _wvara(router).permit(msg.sender, address(this), _value, _deadline, _v, _r, _s) {} catch {} + _retrievingVara(_value); + + emit ExecutableBalanceTopUpRequested(_value); + } + + /** + * @dev Transfers locked value to the inheritor. + * Note that this function can be called only after program exited. + * As result of execution, the `LockedValueTransferRequested` event will be emitted. + */ + function transferLockedValueToInheritor() external whenNotPaused { + (, bool success) = _transferLockedValueToInheritor(); + require(success, TransferLockedValueToInheritorExternalFailed()); + } + + /* # Router-driven state and funds management */ + + /** + * @dev Initializes the contract with the given parameters. + * Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, + * so we do the initialization separately after creating `Mirror` in this method. + * @param _initializer The address of the initializer. Only this address will be able to send the first (init) message. + * @param _abiInterface The address of the ABI interface. This address will be displayed as "proxy implementation" + * and is necessary to show the available methods of `Mirror` smart contract on Etherscan. + * In case it is a Sails framework smart contract, the user can set his own ABI. + * @param _isSmall The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details. + * @param _initialExecutableBalance The initial executable balance to be transferred to the program. + */ + function initialize(address _initializer, address _abiInterface, bool _isSmall, uint128 _initialExecutableBalance) + external + onlyRouter + { + require(initializer == address(0), InitializerAlreadySet()); + + require(!isSmall, IsSmallAlreadySet()); + + StorageSlot.AddressSlot storage implementationSlot = + StorageSlot.getAddressSlot(ERC1967Utils.IMPLEMENTATION_SLOT); + + require(implementationSlot.value == address(0), AbiInterfaceAlreadySet()); + + initializer = _initializer; + isSmall = _isSmall; + implementationSlot.value = _abiInterface; + + if (_initialExecutableBalance != 0) { + emit ExecutableBalanceTopUpRequested(_initialExecutableBalance); + } + } + + /** + * @dev Performs state transition for the `Mirror` contract. + * @param _transition The state transition data. + * @return transitionHash The hash of the performed state transition. + */ + function performStateTransition(Gear.StateTransition calldata _transition) + external + payable + onlyRouter + returns (bytes32 transitionHash) + { + /** + * @dev Verify that the transition belongs to this contract. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID); + require(_transition.actorId == address(this), InvalidActorId()); + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID); + + /** + * @dev Transfer value to router if valueToReceive is non-zero and has negative sign. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER); + if (_transition.valueToReceiveNegativeSign) { + _retrievingEther(_transition.valueToReceive); + } + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER); + + /** + * @dev Send all outgoing messages. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES); + bytes32 messagesHashesHash = _sendMessages(_transition.messages); + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES); + + /** + * @dev Send value for each claim. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES); + bytes32 valueClaimsHash = _claimValues(_transition.valueClaims); + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES); + + /** + * @dev Set inheritor if exited. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR); + if (_transition.exited) { + _setInheritor(_transition.inheritor); + } else { + require(_transition.inheritor == address(0), InheritorMustBeZero()); + } + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR); + + /** + * @dev Update the state hash if changed. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH); + if (stateHash != _transition.newStateHash) { + _updateStateHash(_transition.newStateHash); + } + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH); + + /** + * @dev Return hash of performed state transition. + */ + emit DebugEvent(PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH); + bytes32 _stateTransitionHash = Gear.stateTransitionHash( + _transition.actorId, + _transition.newStateHash, + _transition.exited, + _transition.inheritor, + _transition.valueToReceive, + _transition.valueToReceiveNegativeSign, + valueClaimsHash, + messagesHashesHash + ); + emit DebugEvent(PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH); + return _stateTransitionHash; + } + + /* # Private calls, related to primary Gear logic */ + + /** + * @dev Internal implementation of `sendMessage` function. + * This function is used to send message to the program and emit `MessageQueueingRequested` event. + * @param _payload The payload of the message. + * @param _callReply Whether to set `call` flag in the reply message. + * @return messageId Message ID of the sent message. + */ + function _sendMessage(bytes calldata _payload, bool _callReply) + private + onlyIfActive + onlyAfterInitMessageOrInitializer + returns (bytes32 messageId) + { + uint128 _value = uint128(msg.value); + + _retrievingEther(_value); + + uint256 _nonce = nonce; + /** + * @dev Generate unique message ID by formula: + * - `keccak256(abi.encodePacked(address(this), nonce++))` + */ + bytes32 id; + assembly ("memory-safe") { + mstore(0x00, shl(96, address())) + mstore(0x14, _nonce) + id := keccak256(0x00, 0x34) + } + nonce++; + + emit MessageQueueingRequested(id, msg.sender, _payload, _value, _callReply); + + return id; + } + + /** + * @dev Internal implementation of `transferLockedValueToInheritor` function. + * Note that this function can be called only after program exited. + * @return valueTransferred The amount of WVARA transferred. + * @return transferSuccess The flag indicating if the transfer was successful. + */ + function _transferLockedValueToInheritor() + private + onlyIfExited + returns (uint128 valueTransferred, bool transferSuccess) + { + uint256 balance = address(this).balance; + // casting to 'uint128' is safe because ETH supply is less than `type(uint128).max` + // forge-lint: disable-next-line(unsafe-typecast) + uint128 balance128 = uint128(balance); + return (balance128, _transferEther(inheritor, balance128)); + } + + /* # Private calls, related to performStateTransition */ + + // TODO (breathx): consider when to emit event: on success in decoder, on failure etc. + // TODO (breathx): make decoder gas configurable. + // TODO (breathx): handle if goes to mailbox or not. + /** + * @dev Internal implementation of `_sendMessages` function. + * It sends all outgoing messages from the `Mirror` contract and emits appropriate events. + * @param _messages The array of messages to be sent. + * @return messagesHash The hash of the sent messages. + */ + function _sendMessages(Gear.Message[] calldata _messages) private returns (bytes32) { + uint256 messagesLen = _messages.length; + uint256 messagesHashesSize = messagesLen * 32; + uint256 messagesHashesMemPtr = Memory.allocate(messagesHashesSize); + uint256 offset = 0; + + for (uint256 i = 0; i < messagesLen; i++) { + Gear.Message calldata message = _messages[i]; + + /** + * @dev Generate hash for the message. + */ + bytes32 messageHash = Gear.messageHash(message); + /** + * @dev Store the message hash in memory at messagesHashes[offset : offset+32]. + */ + Memory.writeWordAsBytes32(messagesHashesMemPtr, offset, messageHash); + unchecked { + offset += 32; + } + + /** + * @dev Send the message based on its type (`Gear.Message` or `Gear.Reply`). + */ + if (message.replyDetails.to == 0) { + _sendMailboxedMessage(message); + } else { + _sendReplyMessage(message); + } + } + + return Hashes.efficientKeccak256AsBytes32(messagesHashesMemPtr, 0, messagesHashesSize); + } + + /** + * @dev Internal function to send message that goes to mailbox. + * Value never sent since goes to mailbox. + * Emits `Message` event if it is not event from Sails framework. + * If `_message.call = true`, then call will be made to `_message.destination` + * with _message.payload and gas limit of 500_000 to prevent DoS attacks. + * If call fails, then `MessageCallFailed` event will be emitted. + * @param _message The message to be sent. + */ + function _sendMailboxedMessage(Gear.Message calldata _message) private { + /** + * @dev First, we'll try to parse event from the Sails framework + * and then emit it on behalf of the `Mirror` smart contract. + */ + if (!_tryParseAndEmitSailsEvent(_message)) { + // TODO #5243: We currently support this on the `Mirror` smart contract, + // but we don't support it on the Rust client and we don't have corresponding syscalls for it. + // This is unreachable code branch currently. + if (_message.call) { + (bool success,) = _message.destination.call{gas: 500_000}(_message.payload); + + if (!success) { + /** + * @dev In case of failed call, we emit appropriate event to inform external users. + */ + emit MessageCallFailed(_message.id, _message.destination, _message.value); + return; + } + } + + emit Message(_message.id, _message.destination, _message.payload, _message.value); + } + } + + /** + * @dev Tries to parse an event from the Sails framework and emit it in Solidity notation. + * + * User writes WASM smart contract on Sails framework called "Counter": + * - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs + * + * Example of defining Solidity events in WASM contract based on Sails framework: + * ```rust + * #[event] + * #[derive(Clone, Debug, PartialEq, Encode, TypeInfo)] + * #[codec(crate = scale_codec)] + * #[scale_info(crate = scale_info)] + * pub enum CounterEvents { + * Added { + * #[indexed] + * source: ActorId, + * value: u32, + * }, + * } + * ``` + * + * User also generates "Solidity ABI interface" that allows services like Etherscan to decode events from `Mirror` + * (since we use the ABI interface as "proxy implementation"): + * ```solidity + * interface ICounter { + * event Added(address indexed source, uint32 value); + * + * // ... other events + * } + * ``` + * + * Now let's imagine that the user wants to calculate something in WASM contract and send it to Ethereum as event, + * which will then be emitted by `Mirror` smart contract as showed on services like Etherscan: + * ```rust + * #[service(events = CounterEvents)] + * impl CounterService<'_> { + * #[export] + * pub fn add(&mut self, value: u32) -> u32 { + * let mut data_mut = self.data.borrow_mut(); + * data_mut.counter = data_mut.counter.checked_add(value).expect("failed to add"); + * let source = Syscall::message_source(); + * self.emit_eth_event(CounterEvents::Added { source, value }) + * .expect("failed to emit eth event"); + * data_mut.counter + * } + * } + * ``` + * + * All the `emit_eth_event` method in the Sails framework does is call the syscall + * `gcore::msg::send(destination=ETH_EVENT_ADDR, payload, value=0)`, where `payload` + * is encoded in Solidity notation as described below. + * + * Format in which the Sails framework sends events: + * - `uint8 topicsLength` (can be `1`, `2`, `3`, `4`). + * specifies which opcode (`log1`, `log2`, `log3`, `log4`) should be called. + * - `bytes32 topic1` (required) + * should never match our event selectors! + * - `bytes32 topic2` (optional) + * - `bytes32 topic3` (optional) + * - `bytes32 topic4` (optional) + * - `bytes payload` (optional) + * contains encoded data of event in form of `abi.encode(...)`. + * @param _message The message to be parsed and emitted as Solidity event. + * @return isSailsEvent `true` in case of success and `false` in case of error (no matching event found). + */ + function _tryParseAndEmitSailsEvent(Gear.Message calldata _message) private returns (bool isSailsEvent) { + bytes calldata payload = _message.payload; + + if (!(_message.destination == ETH_EVENT_ADDR && _message.value == 0 && payload.length > 0)) { + return false; + } + + uint256 topicsLength; + assembly ("memory-safe") { + /** + * @dev `248` right bit shift is required to remove extra bits since `calldataload` returns `uint256` + */ + topicsLength := shr(248, calldataload(payload.offset)) + } + + if (!(topicsLength >= 1 && topicsLength <= 4)) { + return false; + } + + uint256 topicsLengthInBytes; + unchecked { + topicsLengthInBytes = 1 + topicsLength * 32; + } + + if (!(payload.length >= topicsLengthInBytes)) { + return false; + } + + /** + * @dev We use offset 1 to skip `uint8 topicsLength` + */ + bytes32 topic1; + assembly ("memory-safe") { + topic1 := calldataload(add(payload.offset, 1)) + } + + /** + * @dev SECURITY: + * Very important check because custom events can match our hashes! + * If we miss even 1 event that is emitted by Mirror, user will be able to fake protocol logic! + * + * Command to re-generate selectors check: + * ```bash + * grep -Po " event\s+\K[^(]+" ethexe/contracts/src/IMirror.sol | xargs -I{} echo " topic1 != {}.selector &&" | sed '$ s/ &&$//' + * ``` + */ + // forgefmt: disable-start + if (!( + topic1 != StateChanged.selector && + topic1 != MessageQueueingRequested.selector && + topic1 != ReplyQueueingRequested.selector && + topic1 != ValueClaimingRequested.selector && + topic1 != OwnedBalanceTopUpRequested.selector && + topic1 != ExecutableBalanceTopUpRequested.selector && + topic1 != Message.selector && + topic1 != MessageCallFailed.selector && + topic1 != Reply.selector && + topic1 != ReplyCallFailed.selector && + topic1 != ValueClaimed.selector && + topic1 != TransferLockedValueToInheritorFailed.selector && + topic1 != ReplyTransferFailed.selector && + topic1 != ValueClaimFailed.selector + )) { + return false; + } + // forgefmt: disable-end + + uint256 size; + unchecked { + size = payload.length - topicsLengthInBytes; + } + + uint256 memPtr = Memory.allocate(size); + assembly ("memory-safe") { + calldatacopy(memPtr, add(payload.offset, topicsLengthInBytes), size) + } + + /** + * @dev We use offset 1 to skip `uint8 topicsLength`. + * Regular offsets: `32`, `64`, `96`. + */ + bytes32 topic2; + bytes32 topic3; + bytes32 topic4; + assembly ("memory-safe") { + topic2 := calldataload(add(payload.offset, 33)) + topic3 := calldataload(add(payload.offset, 65)) + topic4 := calldataload(add(payload.offset, 97)) + } + + if (topicsLength == 1) { + assembly ("memory-safe") { + log1(memPtr, size, topic1) + } + } else if (topicsLength == 2) { + assembly ("memory-safe") { + log2(memPtr, size, topic1, topic2) + } + } else if (topicsLength == 3) { + assembly ("memory-safe") { + log3(memPtr, size, topic1, topic2, topic3) + } + } else if (topicsLength == 4) { + assembly ("memory-safe") { + log4(memPtr, size, topic1, topic2, topic3, topic4) + } + } + + return true; + } + + /** + * @dev Internal function to send reply message. + * Non-zero value always sent since never goes to mailbox. + * Emits `Reply` event if `_message.call = false`. + * If `_message.call = true`, the call will be made to `_message.destination` with + * gas limit of 500_000 to prevent DoS attacks and with `_message.value`. + * The `_message.replyDetails` will also be evaluated to determine the reply's success. + * If `gear_core::message::ReplyCode` is successful, `_message.payload` will be used. + * If unsuccessful, `payload = ICallbacks.onErrorReply(_message.id, _message.payload, _message.replyDetails.code)` + * will be used and the appropriate method on `_message.destination` will be called. + * Function will also always attempt to send `_message.value`. If this fails for some reason, + * the `ReplyTransferFailed` event will be emitted. + * If call fails, then `ReplyCallFailed` event will be emitted. + * + * User writes WASM smart contract on Sails framework called "Counter": + * - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs + * + * All the contract method does is return `u32` as result (reply): + * ```rust + * #[service(events = CounterEvents)] + * impl CounterService<'_> { + * #[export] + * pub fn add(&mut self, value: u32) -> u32 { + * let mut data_mut = self.data.borrow_mut(); + * data_mut.counter = data_mut.counter.checked_add(value).expect("failed to add"); + * let source = Syscall::message_source(); + * self.emit_eth_event(CounterEvents::Added { source, value }) + * .expect("failed to emit eth event"); + * data_mut.counter + * } + * } + * + * User also generates "Solidity ABI Interface" to allow incrementing counter or calling other methods within WASM smart contract. + * Next, we assume user uploads `CounterAbi` smart contract to Ethereum: + * ```solidity + * interface ICounter { + * function init(bool _callReply, uint32 counter) external returns (bytes32 messageId); + * + * function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId); + * + * // ... other methods + * } + * + * contract CounterAbi is ICounter { + * function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {} + * + * function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {} + * } + * ``` + * + * User also generates "Solidity Callback Interface" and implements own `CounterCaller` smart contract, + * which will handle reply hooks in methods starting with `replyOn_`: + * ```solidity + * interface ICounterCallbacks { + * function replyOn_init(bytes32 messageId) external; + * + * function replyOn_counterAdd(bytes32 messageId, uint32 reply) external; + * + * // ... other methods + * + * function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode) external payable; + * } + * + * contract CounterCaller is ICounterCallbacks { + * ICounter public immutable MIRROR; + * + * constructor(ICounter _mirror) { + * MIRROR = _mirror; + * } + * + * modifier onlyMirror() { + * _onlyMirror(); + * _; + * } + * + * function _onlyMirror() internal view { + * require(msg.sender == address(MIRROR)); + * } + * + * // Call `Counter` constructor on our platform + * + * function init(uint32 counter) external { + * // `bool _callReply = true` + * bytes32 _messageId = MIRROR.init(true, counter); + * } + * + * function replyOn_init(bytes32 messageId) external onlyMirror { + * // ... + * } + * + * // Compute `Counter.add(uint32 value) -> uint32 reply` on our platform + * + * mapping(bytes32 messageId => bool knownMessage) public counterAddInputs; + * mapping(bytes32 messageId => uint32 output) public counterAddResults; + * + * function counterAdd(uint32 value) external returns (bytes32 messageId) { + * // `bool _callReply = true` + * bytes32 _messageId = MIRROR.counterAdd(true, value); + * counterAddInputs[_messageId] = true; + * messageId = _messageId; + * } + * + * function replyOn_counterAdd(bytes32 messageId, uint32 reply) external onlyMirror { + * counterAddResults[messageId] = reply; + * } + * + * // Handle `Counter` errors on our platform + * + * event ErrorReply(bytes32 messageId, bytes payload, bytes4 replyCode); + * + * function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode) + * external + * payable + * onlyMirror + * { + * emit ErrorReply(messageId, payload, replyCode); + * } + * } + * ``` + * + * User calls `CounterCaller.counterAdd(uint32 value)`, and the smart contract calls `ICounter.counterAdd(bool _callReply=true, uint32 value)`. + * Result calculated in WASM smart contract on Sails framework in `Counter.add(uint32 value) -> uint32 reply` method will be passed to + * `replyOn_counterAdd(bytes32 messageId, uint32 reply)`. + * @param _message The reply message to be sent. + */ + function _sendReplyMessage(Gear.Message calldata _message) private { + if (_message.call) { + bool isSuccessReply = _message.replyDetails.code[0] == 0; + + bytes memory payload; + + if (isSuccessReply) { + payload = _message.payload; + } else { + // TODO (breathx): this should be removed in favor of future sails impl. + // TODO (breathx): consider support value arg. + payload = abi.encodeWithSelector( + ICallbacks.onErrorReply.selector, _message.id, _message.payload, _message.replyDetails.code + ); + } + + (bool success,) = _message.destination.call{gas: 500_000, value: _message.value}(payload); + + if (!success) { + bool transferSuccess = _transferEther(_message.destination, _message.value); + if (!transferSuccess) { + emit ReplyTransferFailed(_message.destination, _message.value); + } + + /** + * @dev In case of failed call, we emit appropriate event to inform external users. + */ + emit ReplyCallFailed(_message.value, _message.replyDetails.to, _message.replyDetails.code); + } + } else { + bool transferSuccess = _transferEther(_message.destination, _message.value); + if (!transferSuccess) { + emit ReplyTransferFailed(_message.destination, _message.value); + } + + emit Reply(_message.payload, _message.value, _message.replyDetails.to, _message.replyDetails.code); + } + } + + // TODO (breathx): claimValues will fail if the program is exited: keep the funds on `Router`. + /** + * @dev Internal function to claim values from messages in mailbox. + * It transfers value to each claim destination and emits appropriate events: + * - `ValueClaimed` event is emitted if transfer is successful + * - `ValueClaimFailed` event is emitted if transfer fails + * @param _claims The array of value claims to be claimed. + * @return claimsHash The hash of the claimed values. + */ + function _claimValues(Gear.ValueClaim[] calldata _claims) private returns (bytes32 claimsHash) { + uint256 claimsLen = _claims.length; + uint256 claimsHashesSize = claimsLen * 32; + uint256 claimsHashesMemPtr = Memory.allocate(claimsHashesSize); + uint256 offset = 0; + + for (uint256 i = 0; i < claimsLen; i++) { + Gear.ValueClaim calldata claim = _claims[i]; + bytes32 claimHash = Gear.valueClaimHash(claim.messageId, claim.destination, claim.value); + Memory.writeWordAsBytes32(claimsHashesMemPtr, offset, claimHash); + unchecked { + offset += 32; + } + + bool success = _transferEther(claim.destination, claim.value); + if (success) { + emit ValueClaimed(claim.messageId, claim.value); + } else { + emit ValueClaimFailed(claim.messageId, claim.value); + } + } + + return Hashes.efficientKeccak256AsBytes32(claimsHashesMemPtr, 0, claimsHashesSize); + } + + // TODO (breathx): allow zero inheritor in `Router`. + /** + * @dev Sets the inheritor address, sets exited flag to `true` and + * transfer all available balance to the inheritor. + * @param _inheritor The address of the inheritor. + */ + function _setInheritor(address _inheritor) private onlyIfActive { + /** + * @dev Set inheritor. + */ + exited = true; + inheritor = _inheritor; + + /** + * @dev Transfer all available balance to the inheritor. + */ + (uint128 value, bool success) = _transferLockedValueToInheritor(); + if (!success) { + /** + * @dev In case of failed transfer, we emit appropriate event to inform external users. + */ + emit TransferLockedValueToInheritorFailed(_inheritor, value); + } + } + + /** + * @dev Updates the state hash. + * @param _stateHash The new state hash. + */ + function _updateStateHash(bytes32 _stateHash) private { + /** + * @dev Set state hash. + */ + stateHash = _stateHash; + + /** + * @dev Emits an event signaling that the state has changed. + */ + emit StateChanged(stateHash); + } + + /* # Local helper functions */ + + /** + * @dev Get the `WrappedVara` contract instance. + * @param routerAddr The address of the `Router` contract. + */ + function _wvara(address routerAddr) private view returns (IWrappedVara) { + address wvaraAddr = IRouter(routerAddr).wrappedVara(); + return IWrappedVara(wvaraAddr); + } + + /** + * @dev Transfer ETH to destination address. + * It has gas limit of 5_000 to prevent DoS attacks. + * @param destination The address to transfer ETH to. + * @param value The amount of ETH to transfer. + */ + function _transferEther(address destination, uint128 value) private returns (bool) { + if (value != 0) { + (bool success,) = destination.call{gas: 5_000, value: value}(""); + return success; + } + return true; + } + + /** + * @dev Fallback function for top-up owned balance in native currency (ETH) + * and for sending arbitrary calls to `!isSmall` `Mirror` contracts + * as messages to Sails framework. + * + * See the description of `Mirror.isSmall` field for details. + */ + fallback() external payable whenNotPaused { + if (msg.value > 0 && msg.data.length == 0) { + uint128 value = uint128(msg.value); + + emit OwnedBalanceTopUpRequested(value); + } else if (!isSmall && msg.data.length >= 0x24) { + /** + * @dev We only allow arbitrary calls to `!isSmall` `Mirror` contracts, + * which are more likely to come from their ABI interfaces. + * + * The minimum call data length is 0x24 (36 bytes) because: + * - 0x04 (4 bytes) for the function selector [0x00..0x04) + * - 0x20 (32 bytes) for the bool `callReply` [0x04..0x24) + */ + uint256 callReply; + + assembly ("memory-safe") { + callReply := calldataload(0x04) + } + + bytes32 messageId = _sendMessage(msg.data, callReply != 0); + + assembly ("memory-safe") { + mstore(0x00, messageId) + return(0x00, 0x20) + } + } else { + revert InvalidFallbackCall(); + } + } +} diff --git a/ethexe/contracts/src/instrumented/RouterWithInstrumentation.sol b/ethexe/contracts/src/instrumented/RouterWithInstrumentation.sol new file mode 100644 index 00000000000..90991b45fe1 --- /dev/null +++ b/ethexe/contracts/src/instrumented/RouterWithInstrumentation.sol @@ -0,0 +1,1124 @@ +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +pragma solidity ^0.8.33; + +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {NoncesUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol"; +import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol"; +import { + ReentrancyGuardTransientUpgradeable +} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol"; +import {EIP712Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; +import {UUPSUpgradeable} from "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol"; +import {SlotDerivation} from "@openzeppelin/contracts/utils/SlotDerivation.sol"; +import {StorageSlot} from "@openzeppelin/contracts/utils/StorageSlot.sol"; +import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {FROST} from "frost-secp256k1-evm/FROST.sol"; +import {Memory} from "frost-secp256k1-evm/utils/Memory.sol"; +import {Hashes} from "frost-secp256k1-evm/utils/cryptography/Hashes.sol"; +import {IMiddleware} from "src/IMiddleware.sol"; +import {IMirror} from "src/IMirror.sol"; +import {IRouter} from "src/IRouter.sol"; +import {IWrappedVara} from "src/IWrappedVara.sol"; +import {Clones} from "src/libraries/Clones.sol"; +import {ClonesSmall} from "src/libraries/ClonesSmall.sol"; +import {Gear} from "src/libraries/Gear.sol"; +import {SSTORE2} from "src/libraries/SSTORE2.sol"; + +contract RouterWithInstrumentation is + IRouter, + OwnableUpgradeable, + PausableUpgradeable, + EIP712Upgradeable, + NoncesUpgradeable, + ReentrancyGuardTransientUpgradeable, + UUPSUpgradeable +{ + // keccak256(abi.encode(uint256(keccak256("router.storage.Slot")) - 1)) & ~bytes32(uint256(0xff)) + bytes32 private constant SLOT_STORAGE = 0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000; + // keccak256(abi.encode(uint256(keccak256("router.storage.Transient")) - 1)) & ~bytes32(uint256(0xff)) + bytes32 private constant TRANSIENT_STORAGE = 0xf02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c00; + + string private constant EIP712_NAME = "Vara.ETH Router"; + string private constant EIP712_VERSION = "1"; + + uint256 private constant DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE = 1_000; + uint256 private constant DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE = 500; + + // keccak256("RequestCodeValidationOnBehalf(address requester,bytes32 codeId,bytes32[] blobHashes,uint256 nonce,uint256 deadline)") + bytes32 private constant REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH = + 0x375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b8097; + + uint256 public constant COMMIT_BATCH_BEFORE_COMMIT_CODES = 1; + uint256 public constant COMMIT_BATCH_AFTER_COMMIT_CODES = 2; + + event DebugEvent(uint256 indexed topic0) anonymous; + + /** + * @custom:oz-upgrades-unsafe-allow constructor + */ + constructor() { + _disableInitializers(); + } + + /** + * @dev Initializes the `Router` with the given parameters. + * @param _owner The address of the owner of the `Router`. Owner can perform `onlyOwner` actions. + * @param _mirror The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here. + * @param _wrappedVara The address of the `WrappedVara` (WVARA) ERC20 token contract. + * @param _middleware The address of the middleware contract. + * @param _eraDuration The duration of an era in seconds. + * @param _electionDuration The duration of an election in seconds. + * @param _validationDelay The delay before validators can start validating in seconds. + * @param _aggregatedPublicKey The aggregated public key of the initial validators. Will be used in future. + * @param _verifiableSecretSharingCommitment The verifiable secret sharing commitment of the initial validators. Will be used in future. + * @param _validators The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, + * so the list of validators is used for signature verification. + */ + function initialize( + address _owner, + address _mirror, + address _wrappedVara, + address _middleware, + uint256 _eraDuration, + uint256 _electionDuration, + uint256 _validationDelay, + Gear.AggregatedPublicKey calldata _aggregatedPublicKey, + bytes calldata _verifiableSecretSharingCommitment, + address[] calldata _validators + ) public initializer { + __Ownable_init(_owner); + __Pausable_init(); + __EIP712_init(EIP712_NAME, EIP712_VERSION); + __Nonces_init(); + __ReentrancyGuardTransient_init(); + + // Because of validator storages impl we have to check, that current timestamp is greater than 0. + // forge-lint: disable-start(block-timestamp) + require(block.timestamp > 0, InvalidTimestamp()); + require(_electionDuration > 0, InvalidElectionDuration()); + require(_eraDuration > _electionDuration, EraDurationTooShort()); + // _validationDelay must be small enough, + // in order to restrict old era validators to make commitments, which can damage the system. + require(_validationDelay < (_eraDuration - _electionDuration) / 10, ValidationDelayTooBig()); + + _setStorageSlot("router.storage.RouterV1"); + Storage storage router = _router(); + + router.genesisBlock = Gear.newGenesis(); + router.implAddresses = Gear.AddressBook(_mirror, _wrappedVara, _middleware); + router.validationSettings.thresholdNumerator = Gear.VALIDATORS_THRESHOLD_NUMERATOR; + router.validationSettings.thresholdDenominator = Gear.VALIDATORS_THRESHOLD_DENOMINATOR; + router.computeSettings = Gear.defaultComputationSettings(); + router.timelines = Gear.Timelines(_eraDuration, _electionDuration, _validationDelay); + router.protocolData.maxValidators = uint16(_validators.length); + + uint256 decimalsFactor = 10 ** IWrappedVara(_wrappedVara).decimals(); + router.protocolData.requestCodeValidationBaseFee = DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE * decimalsFactor; + router.protocolData.requestCodeValidationExtraFee = DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE * decimalsFactor; + + // Set validators for the era 0. + _resetValidators( + router.validationSettings.validators0, + _aggregatedPublicKey, + _verifiableSecretSharingCommitment, + _validators, + block.timestamp + ); + // forge-lint: disable-end(block-timestamp) + } + + /** + * @dev Reinitializes the `Router` to set up new storage layout. + * This function is intended to be called during an upgrade/wipe and can contain any logic. + * NOTE: Don't forget to bump `reinitializer(version)` in modifier! + * @custom:oz-upgrades-validate-as-initializer + */ + function reinitialize() public onlyOwner reinitializer(5) { + /* Example of wipe and reinitialize */ + + // __Ownable_init(owner()); + // __EIP712_init(EIP712_NAME, EIP712_VERSION); + + // Storage storage oldRouter = _router(); + + // _setStorageSlot("router.storage.RouterV2"); + // Storage storage newRouter = _router(); + + // Set current block as genesis. + // newRouter.genesisBlock = Gear.newGenesis(); + + // New router latestCommittedBlock is already zeroed. + + // Copy impl addresses from the old router. + // newRouter.implAddresses = oldRouter.implAddresses; + + // Copy signing threshold fraction from the old router. + // newRouter.validationSettings.thresholdNumerator = oldRouter.validationSettings.thresholdNumerator; + // newRouter.validationSettings.thresholdDenominator = oldRouter.validationSettings.thresholdDenominator; + + // Copy validators from the old router. + // TODO #4557: consider what to do. Maybe we should start reelection process. + // Skipping validators1 copying - means we forget election results + // if an election is already done for the next era. + // _resetValidators( + // newRouter.validationSettings.validators0, + // Gear.currentEraValidators(oldRouter).aggregatedPublicKey, + // SSTORE2.read(Gear.currentEraValidators(oldRouter).verifiableSecretSharingCommitmentPointer), + // Gear.currentEraValidators(oldRouter).list, + // block.timestamp + // ); + + // Copy computation settings from the old router. + // newRouter.computeSettings = oldRouter.computeSettings; + + // Copy timelines from the old router. + // newRouter.timelines = oldRouter.timelines; + + // Copy requestCodeValidationBaseFee from the old router. + // newRouter.protocolData.requestCodeValidationBaseFee = oldRouter.protocolData.requestCodeValidationBaseFee; + + // Copy requestCodeValidationExtraFee from the old router. + // newRouter.protocolData.requestCodeValidationExtraFee = oldRouter.protocolData.requestCodeValidationExtraFee; + + // Copy + // All protocol data must be removed - so leave it zeroed in new router. + + /* Example of re-genesis without wipe */ + __Ownable_init(owner()); + __EIP712_init(EIP712_NAME, EIP712_VERSION); + + Storage storage router = _router(); + router.genesisBlock = Gear.newGenesis(); + router.latestCommittedBatch = Gear.CommittedBatchInfo({hash: bytes32(0), timestamp: 0}); + router.protocolData.maxValidators = uint16(Gear.currentEraValidators(router).list.length); + uint256 decimalsFactor = 10 ** IWrappedVara(router.implAddresses.wrappedVara).decimals(); + router.protocolData.requestCodeValidationBaseFee = DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE * decimalsFactor; + router.protocolData.requestCodeValidationExtraFee = DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE * decimalsFactor; + } + + /** + * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. + * Called by {upgradeToAndCall}. + */ + function _authorizeUpgrade(address newImplementation) internal override onlyOwner {} + + /* # Views */ + + /** + * @dev Returns the storage view of the contract storage. + * @return storageView The storage view of the contract storage. + */ + function storageView() public view returns (StorageView memory) { + Storage storage router = _router(); + Gear.ValidationSettingsView memory validationSettings = Gear.toView(router.validationSettings); + return StorageView({ + genesisBlock: router.genesisBlock, + latestCommittedBatch: router.latestCommittedBatch, + implAddresses: router.implAddresses, + validationSettings: validationSettings, + computeSettings: router.computeSettings, + timelines: router.timelines, + programsCount: router.protocolData.programsCount, + validatedCodesCount: router.protocolData.validatedCodesCount, + maxValidators: router.protocolData.maxValidators, + requestCodeValidationBaseFee: router.protocolData.requestCodeValidationBaseFee, + requestCodeValidationExtraFee: router.protocolData.requestCodeValidationExtraFee + }); + } + + /** + * @dev Returns the hash of the genesis block. + * @return genesisBlockHash The hash of the genesis block. + */ + function genesisBlockHash() public view returns (bytes32) { + return _router().genesisBlock.hash; + } + + /** + * @dev Returns the timestamp of the genesis block. + * @return genesisTimestamp The timestamp of the genesis block. + */ + function genesisTimestamp() public view returns (uint48) { + return _router().genesisBlock.timestamp; + } + + /** + * @dev Returns the hash of the latest committed batch. + * @return latestCommittedBatchHash The hash of the latest committed batch. + */ + function latestCommittedBatchHash() public view returns (bytes32) { + return _router().latestCommittedBatch.hash; + } + + /** + * @dev Returns the timestamp of the latest committed batch. + * @return latestCommittedBatchTimestamp The timestamp of the latest committed batch. + */ + function latestCommittedBatchTimestamp() public view returns (uint48) { + return _router().latestCommittedBatch.timestamp; + } + + /** + * @dev Returns the address of the mirror implementation. + * @return mirrorImpl The address of the mirror implementation. + */ + function mirrorImpl() public view returns (address) { + return _router().implAddresses.mirror; + } + + /** + * @dev Returns the address of the wrapped Vara implementation. + * @return wrappedVara The address of the wrapped Vara implementation. + */ + function wrappedVara() public view returns (address) { + return _router().implAddresses.wrappedVara; + } + + /** + * @dev Returns the address of the middleware implementation. + * @return middleware The address of the middleware implementation. + */ + function middleware() public view returns (address) { + return _router().implAddresses.middleware; + } + + /** + * @dev Returns the aggregated public key of the current validators. + * @return validatorsAggregatedPublicKey The aggregated public key of the current validators. + */ + function validatorsAggregatedPublicKey() public view returns (Gear.AggregatedPublicKey memory) { + return Gear.currentEraValidators(_router()).aggregatedPublicKey; + } + + /** + * @dev Returns the verifiable secret sharing commitment of the current validators. + * This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. + * See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole. + * @return validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators. + */ + function validatorsVerifiableSecretSharingCommitment() external view returns (bytes memory) { + return SSTORE2.read(Gear.currentEraValidators(_router()).verifiableSecretSharingCommitmentPointer); + } + + /** + * @dev Checks if the given addresses are all validators. + * @return areValidators `true` if all addresses are validators, `false` otherwise. + */ + function areValidators(address[] calldata _validators) public view returns (bool) { + Gear.Validators storage _currentValidators = Gear.currentEraValidators(_router()); + + for (uint256 i = 0; i < _validators.length; i++) { + if (!_currentValidators.map[_validators[i]]) { + return false; + } + } + + return true; + } + + /** + * @dev Checks if the given address is a validator. + * @return isValidator `true` if the address is a validator, `false` otherwise. + */ + function isValidator(address _validator) public view returns (bool) { + return Gear.currentEraValidators(_router()).map[_validator]; + } + + /** + * @dev Returns the signing threshold fraction. + * @return thresholdNumerator The numerator of the signing threshold fraction. + * @return thresholdDenominator The denominator of the signing threshold fraction. + */ + function signingThresholdFraction() public view returns (uint128 thresholdNumerator, uint128 thresholdDenominator) { + IRouter.Storage storage router = _router(); + return (router.validationSettings.thresholdNumerator, router.validationSettings.thresholdDenominator); + } + + /** + * @dev Returns the list of current validators. + * @return validators The list of current validators. + */ + function validators() public view returns (address[] memory) { + return Gear.currentEraValidators(_router()).list; + } + + /** + * @dev Returns the count of current validators. + * @return validatorsCount The count of current validators. + */ + function validatorsCount() public view returns (uint256) { + return Gear.currentEraValidators(_router()).list.length; + } + + /** + * @dev Returns the threshold number of validators required for a valid signature. + * @return threshold The threshold number of validators required for a valid signature. + */ + function validatorsThreshold() public view returns (uint256) { + IRouter.Storage storage router = _router(); + return Gear.validatorsThreshold( + Gear.currentEraValidators(router).list.length, + router.validationSettings.thresholdNumerator, + router.validationSettings.thresholdDenominator + ); + } + + /** + * @dev Returns true if the contract is paused, and false otherwise. + * @return isPaused `true` if the contract is paused, `false` otherwise. + */ + function paused() public view override(IRouter, PausableUpgradeable) returns (bool) { + return super.paused(); + } + + /** + * @dev Returns the computation settings. + * @return computeSettings The computation settings. + */ + function computeSettings() public view returns (Gear.ComputationSettings memory) { + return _router().computeSettings; + } + + /** + * @dev Returns the state of code. + * @return codeState The state of the code. + */ + function codeState(bytes32 _codeId) public view returns (Gear.CodeState) { + return _router().protocolData.codes[_codeId]; + } + + /** + * @dev Returns the states of multiple codes. + * @return codesStates The states of the codes. + */ + function codesStates(bytes32[] calldata _codesIds) public view returns (Gear.CodeState[] memory) { + Storage storage router = _router(); + + Gear.CodeState[] memory res = new Gear.CodeState[](_codesIds.length); + + for (uint256 i = 0; i < _codesIds.length; i++) { + res[i] = router.protocolData.codes[_codesIds[i]]; + } + + return res; + } + + /** + * @dev Returns the code ID of the given program. + * @return codeId The code ID of the program. + */ + function programCodeId(address _programId) public view returns (bytes32) { + return _router().protocolData.programs[_programId]; + } + + /** + * @dev Returns the code IDs of the given programs. + * @return codesIds The code IDs of the programs. + */ + function programsCodeIds(address[] calldata _programsIds) public view returns (bytes32[] memory) { + Storage storage router = _router(); + + bytes32[] memory res = new bytes32[](_programsIds.length); + + for (uint256 i = 0; i < _programsIds.length; i++) { + res[i] = router.protocolData.programs[_programsIds[i]]; + } + + return res; + } + + /** + * @dev Returns the count of programs. + * @return programsCount The count of programs. + */ + function programsCount() public view returns (uint256) { + return _router().protocolData.programsCount; + } + + /** + * @dev Returns the count of validated codes. + * @return validatedCodesCount The count of validated codes. + */ + function validatedCodesCount() public view returns (uint256) { + return _router().protocolData.validatedCodesCount; + } + + /** + * @dev Returns the base fee for requesting code validation in WVARA ERC20 token. + * @return requestCodeValidationBaseFee The base fee for requesting code validation. + */ + function requestCodeValidationBaseFee() external view returns (uint256) { + return _router().protocolData.requestCodeValidationBaseFee; + } + + /** + * @dev Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token. + * @return requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else. + */ + function requestCodeValidationExtraFee() external view returns (uint256) { + return _router().protocolData.requestCodeValidationExtraFee; + } + + /** + * @dev Returns the timelines. + * @return timelines The timelines. + */ + function timelines() public view returns (Gear.Timelines memory) { + return _router().timelines; + } + + /** + * @dev Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`. + * @return domainSeparator The domain separator. + */ + function DOMAIN_SEPARATOR() external view returns (bytes32) { + return _domainSeparatorV4(); + } + + /* # Owner calls */ + + /** + * @dev Sets the `Mirror` implementation address. + * @param newMirror The new mirror implementation address. + */ + function setMirror(address newMirror) external onlyOwner { + _router().implAddresses.mirror = newMirror; + } + + /** + * @dev Sets the base fee for requesting code validation in WVARA ERC20 token. + * @param newBaseFee The new base fee for requesting code validation. + */ + function setRequestCodeValidationBaseFee(uint256 newBaseFee) external onlyOwner { + _router().protocolData.requestCodeValidationBaseFee = newBaseFee; + } + + /** + * @dev Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token. + * @param newExtraFee The new extra fee for requesting code validation on behalf of someone else. + */ + function setRequestCodeValidationExtraFee(uint256 newExtraFee) external onlyOwner { + _router().protocolData.requestCodeValidationExtraFee = newExtraFee; + } + + /** + * @dev Pauses the contract. + */ + function pause() public onlyOwner { + _pause(); + } + + /** + * @dev Unpauses the contract. + */ + function unpause() public onlyOwner { + _unpause(); + } + + /* # Calls */ + + /** + * @dev Looks up the genesis hash from previous blocks. + */ + function lookupGenesisHash() external { + Storage storage router = _router(); + + require(router.genesisBlock.hash == bytes32(0), GenesisHashAlreadySet()); + + bytes32 genesisHash = blockhash(router.genesisBlock.number); + + require(genesisHash != bytes32(0), GenesisHashNotFound()); + + router.genesisBlock.hash = blockhash(router.genesisBlock.number); + } + + /** + * @dev Requests code validation for the given code ID. + * This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar + * attached to it containing WASM bytecode. On EVM, we can only verify that there was + * at least 1 blobhash in a transaction. + * Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` + * in the WVARA ERC20 token. + * @param _codeId The expected code ID for which the validation is requested. + * It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash). + * @param _deadline Deadline for the transaction to be executed. + * @param _v ECDSA signature parameter. + * @param _r ECDSA signature parameter. + * @param _s ECDSA signature parameter. + */ + function requestCodeValidation(bytes32 _codeId, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s) + external + whenNotPaused + { + require(blobhash(0) != 0, BlobNotFound()); + + Storage storage router = _router(); + require(router.genesisBlock.hash != bytes32(0), RouterGenesisHashNotInitialized()); + + require(router.protocolData.codes[_codeId] == Gear.CodeState.Unknown, CodeAlreadyOnValidationOrValidated()); + + IWrappedVara _wrappedVara = IWrappedVara(router.implAddresses.wrappedVara); + + uint256 baseFee = router.protocolData.requestCodeValidationBaseFee; + try _wrappedVara.permit(msg.sender, address(this), baseFee, _deadline, _v, _r, _s) {} catch {} + bool success = _wrappedVara.transferFrom(msg.sender, address(this), baseFee); + require(success, TransferFromFailed()); + + router.protocolData.codes[_codeId] = Gear.CodeState.ValidationRequested; + + emit CodeValidationRequested(_codeId); + } + + /** + * @dev Requests code validation for the given code ID on behalf of someone else. + * This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar + * attached to it containing WASM bytecode. On EVM, we can only verify that there was + * at least 1 blobhash in a transaction. + * Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` + * in the WVARA ERC20 token. + * @param _requester The address of the requester on behalf of whom the code validation is requested. + * @param _codeId The expected code ID for which the validation is requested. + * It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash). + * @param _blobHashes The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. + * This is needed to verify that the transaction has expected blobs attached. + * @param _deadline Deadline for the transaction to be executed. + * @param _v1 ECDSA signature parameter (for requestCodeValidation). + * @param _r1 ECDSA signature parameter (for requestCodeValidation). + * @param _s1 ECDSA signature parameter (for requestCodeValidation). + * @param _v2 ECDSA signature parameter (for permit). + * @param _r2 ECDSA signature parameter (for permit). + * @param _s2 ECDSA signature parameter (for permit). + */ + function requestCodeValidationOnBehalf( + address _requester, + bytes32 _codeId, + bytes32[] calldata _blobHashes, + uint256 _deadline, + uint8 _v1, + bytes32 _r1, + bytes32 _s1, + uint8 _v2, + bytes32 _r2, + bytes32 _s2 + ) external whenNotPaused { + require(blobhash(0) != 0, BlobNotFound()); + + Storage storage router = _router(); + require(router.genesisBlock.hash != bytes32(0), RouterGenesisHashNotInitialized()); + + require(router.protocolData.codes[_codeId] == Gear.CodeState.Unknown, CodeAlreadyOnValidationOrValidated()); + + uint256 _blobHashesLength = 0; + while (true) { + if (blobhash(_blobHashesLength) == bytes32(0)) { + break; + } + _blobHashesLength++; + } + + require(_blobHashes.length == _blobHashesLength, InvalidBlobHashesLength(_blobHashes.length, _blobHashesLength)); + + for (uint256 i = 0; i < _blobHashes.length; i++) { + bytes32 expectedBlobHash = blobhash(i); + require(_blobHashes[i] == expectedBlobHash, InvalidBlobHash(i, _blobHashes[i], expectedBlobHash)); + } + + // forge-lint: disable-next-line(block-timestamp) + require(block.timestamp <= _deadline, ExpiredSignature(_deadline)); + + bytes32 structHash = keccak256( + abi.encode( + REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH, + _requester, + _codeId, + keccak256(abi.encodePacked(_blobHashes)), + _useNonce(_requester), + _deadline + ) + ); + + bytes32 hash = _hashTypedDataV4(structHash); + + address signer = ECDSA.recover(hash, _v1, _r1, _s1); + require(signer == _requester, InvalidSigner(signer, _requester)); + + IWrappedVara _wrappedVara = IWrappedVara(router.implAddresses.wrappedVara); + + uint256 fee = + router.protocolData.requestCodeValidationBaseFee + router.protocolData.requestCodeValidationExtraFee; + try _wrappedVara.permit(_requester, address(this), fee, _deadline, _v2, _r2, _s2) {} catch {} + bool success = _wrappedVara.transferFrom(_requester, address(this), fee); + require(success, TransferFromFailed()); + + router.protocolData.codes[_codeId] = Gear.CodeState.ValidationRequested; + + emit CodeValidationRequested(_codeId); + } + + /** + * @dev Creates new program (`Mirror`) with the given code ID, salt, and initializer. + * Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, + * you will get the same program address. + * Also note that the `Mirror` will be created with `isSmall = true` without "Solidity ABI Interface" support, + * so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. + * As result of execution, the `ProgramCreated` event will be emitted. + * @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state. + * @param _salt The salt for the program creation. + * @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program. + * If set to `address(0)`, `msg.sender` will be used as the initializer. + * @return mirror The address of the created program (`Mirror`). + */ + function createProgram(bytes32 _codeId, bytes32 _salt, address _overrideInitializer) + external + whenNotPaused + returns (address) + { + (address mirror,) = _createProgram(_codeId, _salt, true); + + IMirror(mirror) + .initialize(_overrideInitializer == address(0) ? msg.sender : _overrideInitializer, mirrorImpl(), true, 0); + + return mirror; + } + + /** + * @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance + * in WVARA ERC20 token. + * Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, + * you will get the same program address. + * Also note that the `Mirror` will be created with `isSmall = true` without "Solidity ABI Interface" support, + * so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. + * As result of execution, the `ProgramCreated` event will be emitted. + * @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state. + * @param _salt The salt for the program creation. + * @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program. + * If set to `address(0)`, `msg.sender` will be used as the initializer. + * @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation. + * @param _deadline Deadline for the transaction to be executed. + * @param _v ECDSA signature parameter. + * @param _r ECDSA signature parameter. + * @param _s ECDSA signature parameter. + * @return mirror The address of the created program (`Mirror`). + */ + function createProgramWithExecutableBalance( + bytes32 _codeId, + bytes32 _salt, + address _overrideInitializer, + uint128 _initialExecutableBalance, + uint256 _deadline, + uint8 _v, + bytes32 _r, + bytes32 _s + ) external whenNotPaused returns (address) { + (address mirror, Storage storage router) = _createProgram(_codeId, _salt, true); + + IWrappedVara _wrappedVara = IWrappedVara(router.implAddresses.wrappedVara); + + try _wrappedVara.permit(msg.sender, address(this), _initialExecutableBalance, _deadline, _v, _r, _s) {} catch {} + bool success = _wrappedVara.transferFrom(msg.sender, address(this), _initialExecutableBalance); + require(success, TransferFromFailed()); + + IMirror(mirror) + .initialize( + _overrideInitializer == address(0) ? msg.sender : _overrideInitializer, + mirrorImpl(), + true, + _initialExecutableBalance + ); + + return mirror; + } + + /** + * @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. + * Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, + * you will get the same program address. + * Also note that the `Mirror` will be created with `isSmall = false` WITH "Solidity ABI Interface" support, + * so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. + * As result of execution, the `ProgramCreated` event will be emitted. + * @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state. + * @param _salt The salt for the program creation. + * @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program. + * If set to `address(0)`, `msg.sender` will be used as the initializer. + * @param _abiInterface The ABI interface address for the program. + * @return mirror The address of the created program (`Mirror`). + */ + function createProgramWithAbiInterface( + bytes32 _codeId, + bytes32 _salt, + address _overrideInitializer, + address _abiInterface + ) external whenNotPaused returns (address) { + (address mirror,) = _createProgram(_codeId, _salt, false); + + IMirror(mirror) + .initialize(_overrideInitializer == address(0) ? msg.sender : _overrideInitializer, _abiInterface, false, 0); + + return mirror; + } + + /** + * @dev Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance + * in WVARA ERC20 token. + * Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, + * you will get the same program address. + * Also note that the `Mirror` will be created with `isSmall = false` WITH "Solidity ABI Interface" support, + * so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. + * As result of execution, the `ProgramCreated` event will be emitted. + * @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state. + * @param _salt The salt for the program creation. + * @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program. + * If set to `address(0)`, `msg.sender` will be used as the initializer. + * @param _abiInterface The ABI interface address for the program. + * @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation. + * @param _deadline Deadline for the transaction to be executed. + * @param _v ECDSA signature parameter. + * @param _r ECDSA signature parameter. + * @param _s ECDSA signature parameter. + * @return mirror The address of the created program (`Mirror`). + */ + function createProgramWithAbiInterfaceAndExecutableBalance( + bytes32 _codeId, + bytes32 _salt, + address _overrideInitializer, + address _abiInterface, + uint128 _initialExecutableBalance, + uint256 _deadline, + uint8 _v, + bytes32 _r, + bytes32 _s + ) external whenNotPaused returns (address) { + (address mirror, Storage storage router) = _createProgram(_codeId, _salt, false); + + IWrappedVara _wrappedVara = IWrappedVara(router.implAddresses.wrappedVara); + + try _wrappedVara.permit(msg.sender, address(this), _initialExecutableBalance, _deadline, _v, _r, _s) {} catch {} + bool success = _wrappedVara.transferFrom(msg.sender, address(this), _initialExecutableBalance); + require(success, TransferFromFailed()); + + IMirror(mirror) + .initialize( + _overrideInitializer == address(0) ? msg.sender : _overrideInitializer, + _abiInterface, + false, + _initialExecutableBalance + ); + + return mirror; + } + + /** + * @dev Commits new batch of changes to `Router` state. + * `CodeGotValidated` event is emitted for each code in commitment. + * `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances. + * @param _batch The batch commitment data. + * @param _signatureType The type of signature to validate. + * @param _signatures The signatures for the batch commitment. + */ + function commitBatch( + Gear.BatchCommitment calldata _batch, + Gear.SignatureType _signatureType, + bytes[] calldata _signatures + ) external nonReentrant { + Storage storage router = _router(); + + require(router.genesisBlock.hash != bytes32(0), RouterGenesisHashNotInitialized()); + + // `router.reserved` is always `0` but can be overridden in an RPC request + // to estimate gas excluding `Gear.blockIsPredecessor()`. + if (router.reserved == 0) { + require(Gear.blockIsPredecessor(_batch.blockHash, _batch.expiry), PredecessorBlockNotFound()); + // forge-lint: disable-next-line(block-timestamp) + require(block.timestamp > _batch.blockTimestamp, BatchTimestampNotInPast()); + } + + // Check that batch correctly references to the previous committed batch. + require( + router.latestCommittedBatch.hash == _batch.previousCommittedBatchHash, InvalidPreviousCommittedBatchHash() + ); + + require(router.latestCommittedBatch.timestamp <= _batch.blockTimestamp, BatchTimestampTooEarly()); + + bytes32 _chainCommitmentHash = _commitChain(router, _batch); + + emit DebugEvent(COMMIT_BATCH_BEFORE_COMMIT_CODES); + bytes32 _codeCommitmentsHash = _commitCodes(router, _batch); + emit DebugEvent(COMMIT_BATCH_AFTER_COMMIT_CODES); + + bytes32 _rewardsCommitmentHash = _commitRewards(router, _batch); + bytes32 _validatorsCommitmentHash = _commitValidators(router, _batch); + + bytes32 _batchHash = Gear.batchCommitmentHash( + _batch.blockHash, + _batch.blockTimestamp, + _batch.previousCommittedBatchHash, + _batch.expiry, + _chainCommitmentHash, + _codeCommitmentsHash, + _rewardsCommitmentHash, + _validatorsCommitmentHash + ); + + router.latestCommittedBatch.hash = _batchHash; + router.latestCommittedBatch.timestamp = _batch.blockTimestamp; + + emit BatchCommitted(_batchHash); + + require( + Gear.validateSignaturesAt( + router, TRANSIENT_STORAGE, _batchHash, _signatureType, _signatures, _batch.blockTimestamp + ), + SignatureVerificationFailed() + ); + } + + /* # Helper private functions */ + + function _createProgram(bytes32 _codeId, bytes32 _salt, bool _isSmall) private returns (address, Storage storage) { + Storage storage router = _router(); + require(router.genesisBlock.hash != bytes32(0), RouterGenesisHashNotInitialized()); + + require(router.protocolData.codes[_codeId] == Gear.CodeState.Validated, CodeNotValidated()); + + // Check for duplicate isn't necessary, because `Clones.cloneDeterministic` + // reverts execution in case of address is already taken. + bytes32 salt = Hashes.efficientKeccak256AsBytes32(_codeId, _salt); + address actorId = _isSmall + ? ClonesSmall.cloneDeterministic(address(this), salt) + : Clones.cloneDeterministic(address(this), salt); + + router.protocolData.programs[actorId] = _codeId; + router.protocolData.programsCount++; + + emit ProgramCreated(actorId, _codeId); + + return (actorId, router); + } + + function _commitChain(Storage storage router, Gear.BatchCommitment calldata _batch) private returns (bytes32) { + require(_batch.chainCommitment.length <= 1, TooManyChainCommitments()); + + if (_batch.chainCommitment.length == 0) { + /** + * forge-lint: disable-next-item(asm-keccak256) + */ + return keccak256(""); + } + + Gear.ChainCommitment calldata _commitment = _batch.chainCommitment[0]; + + bytes32 _transitionsHash = _commitTransitions(router, _commitment.transitions); + + emit AnnouncesCommitted(_commitment.head); + + return Gear.chainCommitmentHash(_transitionsHash, _commitment.head); + } + + function _commitCodes(Storage storage router, Gear.BatchCommitment calldata _batch) private returns (bytes32) { + uint256 codeCommitmentsLen = _batch.codeCommitments.length; + uint256 codeCommitmentsHashSize = codeCommitmentsLen * 32; + uint256 codeCommitmentsPtr = Memory.allocate(codeCommitmentsHashSize); + uint256 offset = 0; + + for (uint256 i = 0; i < codeCommitmentsLen; i++) { + Gear.CodeCommitment calldata _commitment = _batch.codeCommitments[i]; + + require( + router.protocolData.codes[_commitment.id] == Gear.CodeState.ValidationRequested, + CodeValidationNotRequested() + ); + + if (_commitment.valid) { + router.protocolData.codes[_commitment.id] = Gear.CodeState.Validated; + router.protocolData.validatedCodesCount++; + } else { + delete router.protocolData.codes[_commitment.id]; + } + + emit CodeGotValidated(_commitment.id, _commitment.valid); + + bytes32 codeCommitmentHash = Gear.codeCommitmentHash(_commitment.id, _commitment.valid); + Memory.writeWordAsBytes32(codeCommitmentsPtr, offset, codeCommitmentHash); + unchecked { + offset += 32; + } + } + + return Hashes.efficientKeccak256AsBytes32(codeCommitmentsPtr, 0, codeCommitmentsHashSize); + } + + // TODO #4609 + // TODO #4611 + function _commitRewards(Storage storage router, Gear.BatchCommitment calldata _batch) private returns (bytes32) { + require(_batch.rewardsCommitment.length <= 1, TooManyRewardsCommitments()); + + if (_batch.rewardsCommitment.length == 0) { + /** + * forge-lint: disable-next-item(asm-keccak256) + */ + return keccak256(""); + } + + Gear.RewardsCommitment calldata _commitment = _batch.rewardsCommitment[0]; + + require(_commitment.timestamp < _batch.blockTimestamp, RewardsCommitmentTimestampNotInPast()); + require(_commitment.timestamp >= router.genesisBlock.timestamp, RewardsCommitmentPredatesGenesis()); + + uint256 commitmentEraIndex = Gear.eraIndexAt(router, _commitment.timestamp); + uint256 batchEraIndex = Gear.eraIndexAt(router, _batch.blockTimestamp); + + require(commitmentEraIndex < batchEraIndex, RewardsCommitmentEraNotPrevious()); + + address _middleware = router.implAddresses.middleware; + bool success = IWrappedVara(router.implAddresses.wrappedVara) + .approve(_middleware, _commitment.operators.amount + _commitment.stakers.totalAmount); + require(success, ApproveERC20Failed()); + + bytes32 _operatorRewardsHash = IMiddleware(_middleware) + .distributeOperatorRewards( + router.implAddresses.wrappedVara, _commitment.operators.amount, _commitment.operators.root + ); + + bytes32 _stakerRewardsHash = + IMiddleware(_middleware).distributeStakerRewards(_commitment.stakers, _commitment.timestamp); + + return Gear.rewardsCommitmentHash(_operatorRewardsHash, _stakerRewardsHash, _commitment.timestamp); + } + + /** + * @dev Set validators for the next era. + */ + function _commitValidators(Storage storage router, Gear.BatchCommitment calldata _batch) private returns (bytes32) { + require(_batch.validatorsCommitment.length <= 1, TooManyValidatorsCommitments()); + + if (_batch.validatorsCommitment.length == 0) { + /** + * forge-lint: disable-next-item(asm-keccak256) + */ + return keccak256(""); + } + + Gear.ValidatorsCommitment calldata _commitment = _batch.validatorsCommitment[0]; + + require(_commitment.validators.length > 0, EmptyValidatorsList()); + + // forge-lint: disable-start(block-timestamp) + uint256 currentEraIndex = (block.timestamp - router.genesisBlock.timestamp) / router.timelines.era; + + require(_commitment.eraIndex == currentEraIndex + 1, CommitmentEraNotNext()); + + uint256 nextEraStart = router.genesisBlock.timestamp + router.timelines.era * _commitment.eraIndex; + require(block.timestamp >= nextEraStart - router.timelines.election, ElectionNotStarted()); + + // Maybe free slot for new validators: + Gear.Validators storage _validators = Gear.previousEraValidators(router); + require(_validators.useFromTimestamp < block.timestamp, ValidatorsAlreadyScheduled()); + // forge-lint: disable-end(block-timestamp) + + _resetValidators( + _validators, + _commitment.aggregatedPublicKey, + _commitment.verifiableSecretSharingCommitment, + _commitment.validators, + nextEraStart + ); + + emit ValidatorsCommittedForEra(_commitment.eraIndex); + + return Gear.validatorsCommitmentHash(_commitment); + } + + function _commitTransitions(Storage storage router, Gear.StateTransition[] calldata _transitions) + private + returns (bytes32) + { + uint256 transitionsLen = _transitions.length; + uint256 transitionsHashSize = transitionsLen * 32; + uint256 transitionsHashesMemPtr = Memory.allocate(transitionsHashSize); + uint256 offset = 0; + + for (uint256 i = 0; i < transitionsLen; i++) { + Gear.StateTransition calldata transition = _transitions[i]; + + require(router.protocolData.programs[transition.actorId] != 0, UnknownProgram()); + + uint128 value = 0; + + if (transition.valueToReceive != 0 && !transition.valueToReceiveNegativeSign) { + value = transition.valueToReceive; + } + + bytes32 transitionHash = IMirror(transition.actorId).performStateTransition{value: value}(transition); + Memory.writeWordAsBytes32(transitionsHashesMemPtr, offset, transitionHash); + unchecked { + offset += 32; + } + } + + return Hashes.efficientKeccak256AsBytes32(transitionsHashesMemPtr, 0, transitionsHashSize); + } + + function _resetValidators( + Gear.Validators storage _validators, + Gear.AggregatedPublicKey memory _newAggregatedPublicKey, + bytes memory _verifiableSecretSharingCommitment, + address[] memory _newValidators, + uint256 _useFromTimestamp + ) private { + // basic checks for aggregated public key + // but it probably should be checked with + // [`frost_core::keys::PublicKeyPackage::{from_commitment, from_dkg_commitments}`] + // https://docs.rs/frost-core/latest/frost_core/keys/struct.PublicKeyPackage.html#method.from_dkg_commitments + // ideally onchain + require( + FROST.isValidPublicKey(_newAggregatedPublicKey.x, _newAggregatedPublicKey.y), + InvalidFROSTAggregatedPublicKey() + ); + _validators.aggregatedPublicKey = _newAggregatedPublicKey; + _validators.verifiableSecretSharingCommitmentPointer = SSTORE2.write(_verifiableSecretSharingCommitment); + for (uint256 i = 0; i < _validators.list.length; i++) { + address _validator = _validators.list[i]; + _validators.map[_validator] = false; + } + for (uint256 i = 0; i < _newValidators.length; i++) { + address _validator = _newValidators[i]; + _validators.map[_validator] = true; + } + _validators.list = _newValidators; + _validators.useFromTimestamp = _useFromTimestamp; + } + + function _router() private view returns (Storage storage router) { + bytes32 slot = _getStorageSlot(); + + assembly ("memory-safe") { + router.slot := slot + } + } + + function _getStorageSlot() private view returns (bytes32) { + return StorageSlot.getBytes32Slot(SLOT_STORAGE).value; + } + + function _setStorageSlot(string memory namespace) private onlyOwner { + bytes32 slot = SlotDerivation.erc7201Slot(namespace); + StorageSlot.getBytes32Slot(SLOT_STORAGE).value = slot; + + emit StorageSlotChanged(slot); + } + + /** + * @dev Receives Ether from the `Mirror` instances when they + * perform state transitions with `valueToReceive`. + */ + receive() external payable whenNotPaused { + Storage storage router = _router(); + require(router.genesisBlock.hash != bytes32(0), RouterGenesisHashNotInitialized()); + + uint128 value = uint128(msg.value); + require(value > 0, ZeroValueTransfer()); + + address actorId = msg.sender; + require(router.protocolData.programs[actorId] != 0, UnknownProgram()); + } +} diff --git a/ethexe/ethereum/Cargo.toml b/ethexe/ethereum/Cargo.toml index 6632c40aec0..9b37ef9838e 100644 --- a/ethexe/ethereum/Cargo.toml +++ b/ethexe/ethereum/Cargo.toml @@ -25,6 +25,7 @@ alloy = { workspace = true, features = [ "rpc-types-eth", "rpc-client", "signers", + "signer-mnemonic", "kzg", ] } futures.workspace = true @@ -36,6 +37,7 @@ serde.workspace = true nonempty.workspace = true rand.workspace = true gear-workspace-hack.workspace = true +revm.workspace = true [dev-dependencies] alloy = { workspace = true, features = [ diff --git a/ethexe/ethereum/abi/BatchMulticall.json b/ethexe/ethereum/abi/BatchMulticall.json index ecd4970f8a7..ebb5d74edeb 100644 --- a/ethexe/ethereum/abi/BatchMulticall.json +++ b/ethexe/ethereum/abi/BatchMulticall.json @@ -1 +1 @@ -{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"createProgramBatch","inputs":[{"name":"router","type":"address","internalType":"contract IRouter"},{"name":"calls","type":"tuple[]","internalType":"struct BatchMulticall.CreateProgramCall[]","components":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initPayload","type":"bytes","internalType":"bytes"},{"name":"initValue","type":"uint128","internalType":"uint128"},{"name":"topUpValue","type":"uint128","internalType":"uint128"}]}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"},{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"payable"},{"type":"function","name":"sendMessageBatch","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct BatchMulticall.MessageCall[]","components":[{"name":"mirror","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"SendMessageBatchResult","inputs":[{"name":"messageIds","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"error","name":"ApproveFailed","inputs":[]},{"type":"error","name":"InsufficientValue","inputs":[{"name":"expected","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]}],"bytecode":{"object":"0x608080604052346015576108b7908161001a8239f35b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80633cb1083b146102095763564abd5f0361000e5760203660031901126101bf5760043567ffffffffffffffff81116101bf57610060903690600401610652565b9061006a82610704565b915f905f5b8181106101d6575061008534833481111561078a565b5f5b81811061010a5784833481106100d6575b7fbf5656409246fcf8590b3724124bfed7999e445c6e39ab2b4ad848f29915ecd06100d183604051918291602083526020830190610683565b0390a1005b5f80806100e4819434610849565b335af16100ef610856565b50156100fb5781610098565b633c31275160e21b5f5260045ffd5b610115818386610895565b9081356001600160a01b038116908190036101bf57826020916101536001600160801b03610148604061016f9801610755565b1692848101906107e8565b926040518097819582946242129d60e81b84526004840161081b565b03925af180156101cb575f90610195575b6001925061018e82886107a8565b5201610087565b506020823d82116101c3575b816101ae602093836106b6565b810103126101bf5760019151610180565b5f80fd5b3d91506101a1565b6040513d5f823e3d90fd5b916102026001916001600160801b036101fb60406101f588888b610895565b01610755565b1690610769565b920161006f565b60403660031901126101bf576004356001600160a01b038116908190036101bf5760243567ffffffffffffffff81116101bf5761024a903690600401610652565b91610254836106ec565b9061026260405192836106b6565b83825261026e846106ec565b602083019390601f190136853761028485610704565b9260405163088f50cf60e41b8152602081600481875afa9081156101cb575f91610633575b5036839003609e190196955f936001600160a01b0392909216929190845b888110156105aa578060051b830135908a8212156101bf575f9184016102fc60608201986001600160801b036101fb8b610755565b9761030b348a3481111561078a565b60208a606460405180978193631b41e26960e11b8352873560048401528588013560248401523060448401525af19384156101cb575f9461057a575b5061035283886107a8565b6001600160a01b0390941693849052608082016001600160801b0361037682610755565b166103fc575b50906103a4936101536001600160801b03610398602095610755565b169260408101906107e8565b03925af180156101cb575f906103ca575b600192506103c3828b6107a8565b52016102c7565b506020823d82116103f4575b816103e3602093836106b6565b810103126101bf57600191516103b5565b3d91506103d6565b8860206001600160801b03606461041585979697610755565b5f60405195869485936323b872dd60e01b85523360048601523060248601521660448401525af19081156101cb575f9161055c575b501561054d578860206001600160801b03604461046685610755565b5f604051958694859363095ea7b360e01b85528d60048601521660248401525af19081156101cb575f9161051f575b5015610510576104a490610755565b93803b156101bf576001600160801b03604051956338276aa160e11b87521660048601525f8560248183855af19283156101cb576001600160801b03610398610153926103a498602097610500575b509495505050509361037c565b5f61050a916106b6565b5f6104f3565b633e3f8f7360e01b5f5260045ffd5b610540915060203d8111610546575b61053881836106b6565b8101906107d0565b8f610495565b503d61052e565b631e4e7d0960e21b5f5260045ffd5b610574915060203d81116105465761053881836106b6565b8f61044a565b61059c91945060203d81116105a3575b61059481836106b6565b810190610736565b928d610347565b503d61058a565b5082878634811061060e575b5060405191604083019060408452518091526060830193905f5b8181106105ef5784806105eb88878382036020850152610683565b0390f35b82516001600160a01b03168652602095860195909201916001016105d0565b5f808061061c819434610849565b335af1610627610856565b50156100fb57836105b6565b61064c915060203d6020116105a35761059481836106b6565b876102a9565b9181601f840112156101bf5782359167ffffffffffffffff83116101bf576020808501948460051b0101116101bf57565b90602080835192838152019201905f5b8181106106a05750505090565b8251845260209384019390920191600101610693565b90601f8019910116810190811067ffffffffffffffff8211176106d857604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116106d85760051b60200190565b9061070e826106ec565b61071b60405191826106b6565b828152809261072c601f19916106ec565b0190602036910137565b908160209103126101bf57516001600160a01b03811681036101bf5790565b356001600160801b03811681036101bf5790565b9190820180921161077657565b634e487b7160e01b5f52601160045260245ffd5b15610793575050565b631c102d6360e21b5f5260045260245260445ffd5b80518210156107bc5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b908160209103126101bf575180151581036101bf5790565b903590601e19813603018212156101bf570180359067ffffffffffffffff82116101bf576020019181360383136101bf57565b92916060816020925f94604088528160408901528388013783828288010152601f8019910116850101930152565b9190820391821161077657565b3d15610890573d9067ffffffffffffffff82116106d85760405191610885601f8201601f1916602001846106b6565b82523d5f602084013e565b606090565b91908110156107bc5760051b81013590605e19813603018212156101bf57019056","sourceMap":"1190:5485:153:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80633cb1083b146102095763564abd5f0361000e5760203660031901126101bf5760043567ffffffffffffffff81116101bf57610060903690600401610652565b9061006a82610704565b915f905f5b8181106101d6575061008534833481111561078a565b5f5b81811061010a5784833481106100d6575b7fbf5656409246fcf8590b3724124bfed7999e445c6e39ab2b4ad848f29915ecd06100d183604051918291602083526020830190610683565b0390a1005b5f80806100e4819434610849565b335af16100ef610856565b50156100fb5781610098565b633c31275160e21b5f5260045ffd5b610115818386610895565b9081356001600160a01b038116908190036101bf57826020916101536001600160801b03610148604061016f9801610755565b1692848101906107e8565b926040518097819582946242129d60e81b84526004840161081b565b03925af180156101cb575f90610195575b6001925061018e82886107a8565b5201610087565b506020823d82116101c3575b816101ae602093836106b6565b810103126101bf5760019151610180565b5f80fd5b3d91506101a1565b6040513d5f823e3d90fd5b916102026001916001600160801b036101fb60406101f588888b610895565b01610755565b1690610769565b920161006f565b60403660031901126101bf576004356001600160a01b038116908190036101bf5760243567ffffffffffffffff81116101bf5761024a903690600401610652565b91610254836106ec565b9061026260405192836106b6565b83825261026e846106ec565b602083019390601f190136853761028485610704565b9260405163088f50cf60e41b8152602081600481875afa9081156101cb575f91610633575b5036839003609e190196955f936001600160a01b0392909216929190845b888110156105aa578060051b830135908a8212156101bf575f9184016102fc60608201986001600160801b036101fb8b610755565b9761030b348a3481111561078a565b60208a606460405180978193631b41e26960e11b8352873560048401528588013560248401523060448401525af19384156101cb575f9461057a575b5061035283886107a8565b6001600160a01b0390941693849052608082016001600160801b0361037682610755565b166103fc575b50906103a4936101536001600160801b03610398602095610755565b169260408101906107e8565b03925af180156101cb575f906103ca575b600192506103c3828b6107a8565b52016102c7565b506020823d82116103f4575b816103e3602093836106b6565b810103126101bf57600191516103b5565b3d91506103d6565b8860206001600160801b03606461041585979697610755565b5f60405195869485936323b872dd60e01b85523360048601523060248601521660448401525af19081156101cb575f9161055c575b501561054d578860206001600160801b03604461046685610755565b5f604051958694859363095ea7b360e01b85528d60048601521660248401525af19081156101cb575f9161051f575b5015610510576104a490610755565b93803b156101bf576001600160801b03604051956338276aa160e11b87521660048601525f8560248183855af19283156101cb576001600160801b03610398610153926103a498602097610500575b509495505050509361037c565b5f61050a916106b6565b5f6104f3565b633e3f8f7360e01b5f5260045ffd5b610540915060203d8111610546575b61053881836106b6565b8101906107d0565b8f610495565b503d61052e565b631e4e7d0960e21b5f5260045ffd5b610574915060203d81116105465761053881836106b6565b8f61044a565b61059c91945060203d81116105a3575b61059481836106b6565b810190610736565b928d610347565b503d61058a565b5082878634811061060e575b5060405191604083019060408452518091526060830193905f5b8181106105ef5784806105eb88878382036020850152610683565b0390f35b82516001600160a01b03168652602095860195909201916001016105d0565b5f808061061c819434610849565b335af1610627610856565b50156100fb57836105b6565b61064c915060203d6020116105a35761059481836106b6565b876102a9565b9181601f840112156101bf5782359167ffffffffffffffff83116101bf576020808501948460051b0101116101bf57565b90602080835192838152019201905f5b8181106106a05750505090565b8251845260209384019390920191600101610693565b90601f8019910116810190811067ffffffffffffffff8211176106d857604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116106d85760051b60200190565b9061070e826106ec565b61071b60405191826106b6565b828152809261072c601f19916106ec565b0190602036910137565b908160209103126101bf57516001600160a01b03811681036101bf5790565b356001600160801b03811681036101bf5790565b9190820180921161077657565b634e487b7160e01b5f52601160045260245ffd5b15610793575050565b631c102d6360e21b5f5260045260245260445ffd5b80518210156107bc5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b908160209103126101bf575180151581036101bf5790565b903590601e19813603018212156101bf570180359067ffffffffffffffff82116101bf576020019181360383136101bf57565b92916060816020925f94604088528160408901528388013783828288010152601f8019910116850101930152565b9190820391821161077657565b3d15610890573d9067ffffffffffffffff82116106d85760405191610885601f8201601f1916602001846106b6565b82523d5f602084013e565b606090565b91908110156107bc5760051b81013590605e19813603018212156101bf57019056","sourceMap":"1190:5485:153:-:0;;;;;;;;;-1:-1:-1;1190:5485:153;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1190:5485:153;;;;;;;;;;;;;;;;;;:::i;:::-;3392:27;;;;:::i;:::-;3430:16;1190:5485;3462:13;1190:5485;3477:16;;;;;;3581:9;3561:70;3581:9;;;3569:21;;;3561:70;:::i;:::-;1190:5485;3662:16;;;;;;3581:9;;;3907:20;;3903:163;;3642:251;4081:34;1190:5485;;;;;;;;;;;;;;;:::i;:::-;4081:34;;;1190:5485;3903:163;1190:5485;3581:9;;3984:20;3581:9;;;3984:20;:::i;:::-;3961:10;:48;;;;:::i;:::-;;1190:5485;;;3903:163;;;1190:5485;;;;;;;;;3680:3;3734:8;;;;;:::i;:::-;1190:5485;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;;3836:17;1190:5485;3836:17;3855:19;-1:-1:-1;;;;;3836:17:153;1190:5485;3789:93;3836:17;;;:::i;:::-;1190:5485;3855:19;;;;;;:::i;:::-;1190:5485;;;;;;;;;;;;3789:93;;1190:5485;3789:93;;;:::i;:::-;;;;;;;;;1190:5485;3789:93;;;3680:3;1190:5485;3757:125;;;;;;:::i;:::-;1190:5485;;3647:13;;3789:93;;1190:5485;3789:93;;;;;;;;;1190:5485;3789:93;;;:::i;:::-;;;1190:5485;;;;;;;3789:93;;1190:5485;;;;3789:93;;;-1:-1:-1;3789:93:153;;;1190:5485;;;;;;;;;3495:3;3526:8;3514:26;1190:5485;3526:8;-1:-1:-1;;;;;3526:14:153;1190:5485;3526:8;;;;;:::i;:::-;:14;;:::i;:::-;1190:5485;3514:26;;:::i;:::-;3495:3;1190:5485;3462:13;;1190:5485;;;-1:-1:-1;;1190:5485:153;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1190:5485:153;;;;4847:27;;;:::i;:::-;1190:5485;;;;;;4919:20;;1190:5485;4919:20;1190:5485;4919:20;;;;;;;;;1190:5485;4919:20;;;1190:5485;-1:-1:-1;1190:5485:153;;;;-1:-1:-1;;1190:5485:153;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;4951:16;4983:13;1190:5485;5016:3;4998:16;;;;;;1190:5485;;;;;;;;;;;;;;;;;5104:39;5116:27;;;;-1:-1:-1;;;;;5116:27:153;;;:::i;5104:39::-;5178:9;5158:70;5178:9;;;5166:21;;;5158:70;:::i;:::-;1190:5485;;5263:85;1190:5485;;;;;;;;;5263:85;;1190:5485;;;5263:85;;1190:5485;5310:22;;;1190:5485;;;;;5342:4;1190:5485;;;;5263:85;;;;;;;1190:5485;5263:85;;;5016:3;5362:25;;;;;:::i;:::-;-1:-1:-1;;;;;1190:5485:153;;;;;;;5455:28;;;-1:-1:-1;;;;;5455:28:153;;;:::i;:::-;1190:5485;5451:390;;5016:3;5917:27;;5891:92;5917:27;5946:29;-1:-1:-1;;;;;5917:27:153;1190:5485;5917:27;;:::i;:::-;1190:5485;5946:29;1190:5485;5946:29;;;;:::i;5891:92::-;;;;;;;;;1190:5485;5891:92;;;5016:3;1190:5485;5997:25;;;;;;:::i;:::-;1190:5485;;4983:13;;5891:92;;1190:5485;5891:92;;;;;;;;;1190:5485;5891:92;;;:::i;:::-;;;1190:5485;;;;;;;5891:92;;;;;-1:-1:-1;5891:92:153;;5451:390;5582:28;1190:5485;-1:-1:-1;;;;;5263:85:153;5582:28;;;;;;:::i;:::-;1190:5485;;;;;;;;;;;5536:75;;5555:10;1190:5485;5536:75;;1190:5485;5342:4;1190:5485;;;;;;;;;5536:75;;;;;;;1190:5485;5536:75;;;5451:390;1190:5485;;;;5702:28;1190:5485;-1:-1:-1;;;;;1190:5485:153;5702:28;;;:::i;:::-;1190:5485;;;;;;;;;;;5677:54;;;1190:5485;5677:54;;1190:5485;;;;;;5677:54;;;;;;;1190:5485;5677:54;;;5451:390;1190:5485;;;;5797:28;;;:::i;:::-;5767:59;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;5767:59;;1190:5485;;5767:59;;1190:5485;;5767:59;1190:5485;5767:59;;;;;;;;;;-1:-1:-1;;;;;5917:27:153;5946:29;5767:59;5891:92;5767:59;1190:5485;5767:59;;;5451:390;;;;;;;;;;;5767:59;1190:5485;5767:59;;;:::i;:::-;;;;1190:5485;;;;;;;;;5677:54;;;;1190:5485;5677:54;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1190:5485;;;;;;;;;5536:75;;;;1190:5485;5536:75;;;;;;;;;:::i;:::-;;;;5263:85;;;;;1190:5485;5263:85;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;4998:16;;;;;5178:9;6047:20;;6043:163;;4978:1055;1190:5485;;;;;;;;;;;;;;;5116:27;1190:5485;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;;;;;;;;;;6043:163;1190:5485;5178:9;;6124:20;5178:9;;;6124:20;:::i;:::-;6101:10;:48;;;;:::i;:::-;;1190:5485;;;6043:163;;;4919:20;;;;1190:5485;4919:20;1190:5485;4919:20;;;;;;;:::i;:::-;;;;1190:5485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1190:5485:153;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1190:5485:153;;;;;-1:-1:-1;1190:5485:153;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;:::o;:::-;;-1:-1:-1;;;;;1190:5485:153;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1190:5485:153;;;;;:::i;:::-;;;;-1:-1:-1;1190:5485:153;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createProgramBatch(address,(bytes32,bytes32,bytes,uint128,uint128)[])":"3cb1083b","sendMessageBatch((address,bytes,uint128)[])":"564abd5f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApproveFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"messageIds\",\"type\":\"bytes32[]\"}],\"name\":\"SendMessageBatchResult\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IRouter\",\"name\":\"router\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"initValue\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"topUpValue\",\"type\":\"uint128\"}],\"internalType\":\"struct BatchMulticall.CreateProgramCall[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"createProgramBatch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"mirror\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct BatchMulticall.MessageCall[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"sendMessageBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"BatchMulticall smart contract is responsible for batching multiple calls to Mirror smart contracts. This is useful for reducing number of transactions when interacting with multiple Mirror contracts. Mostly used in crate [`ethexe-node-loader`](ethexe/node-loader), which is responsible for testing our network. Since we use `anvil` as Ethereum node, this contract allows us to avoid waiting for block time and load node much faster. This contract allows both batching of messages and batching of program creations. Furthermore, when creating programs, it offers full flow: - approval of WVARA ERC20 token for created program (Mirror) - top-up of executable balance for created program in WVARA ERC20 token (Mirror) - sending initial message to created program (Mirror) All of these actions are done in one transaction, which is much faster than doing them separately.\",\"errors\":{\"ApproveFailed()\":[{\"details\":\"Approving WVARA token for created program (Mirror) failed.\"}],\"InsufficientValue(uint256,uint256)\":[{\"details\":\"There is not enough value sent with transaction to cover calls.\"}],\"RefundFailed()\":[{\"details\":\"Refunding excess value to sender failed.\"}],\"TransferFromFailed()\":[{\"details\":\"Transferring WVARA token from sender to this contract failed.\"}]},\"events\":{\"SendMessageBatchResult(bytes32[])\":{\"details\":\"Emitted when batch of messages is sent. It contains array of message ids that were sent.\"}},\"kind\":\"dev\",\"methods\":{\"createProgramBatch(address,(bytes32,bytes32,bytes,uint128,uint128)[])\":{\"details\":\"Creates batch of programs through Router contract and sends initial messages to them.\",\"params\":{\"calls\":\"Array of `CreateProgramCall` structs representing calls to create programs through Router contract.\",\"router\":\"The Router contract address.\"},\"returns\":{\"_0\":\"programIds Array of created program IDs.\",\"_1\":\"messageIds Array of message IDs for the initial messages sent to each created program.\"}},\"sendMessageBatch((address,bytes,uint128)[])\":{\"details\":\"Sends batch of messages through Mirror contracts.\",\"params\":{\"calls\":\"Array of `MessageCall` structs representing calls to send messages through Mirror contracts.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BatchMulticall.sol\":\"BatchMulticall\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/BatchMulticall.sol\":{\"keccak256\":\"0x541b0651932d90c6cd3716e3dd9e35818a0510ed6ad87d3f702d87675e590c74\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://bea6fd0b5a5a2789b301344e2d69424e1d016d8b668735ea6ca8167b8e9aabbf\",\"dweb:/ipfs/QmPB66s2aPfzZZF9BMubtpr86P8jfpWkDRiq2S9ZjnRdFB\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ApproveFailed"},{"inputs":[{"internalType":"uint256","name":"expected","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"type":"error","name":"InsufficientValue"},{"inputs":[],"type":"error","name":"RefundFailed"},{"inputs":[],"type":"error","name":"TransferFromFailed"},{"inputs":[{"internalType":"bytes32[]","name":"messageIds","type":"bytes32[]","indexed":false}],"type":"event","name":"SendMessageBatchResult","anonymous":false},{"inputs":[{"internalType":"contract IRouter","name":"router","type":"address"},{"internalType":"struct BatchMulticall.CreateProgramCall[]","name":"calls","type":"tuple[]","components":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initPayload","type":"bytes"},{"internalType":"uint128","name":"initValue","type":"uint128"},{"internalType":"uint128","name":"topUpValue","type":"uint128"}]}],"stateMutability":"payable","type":"function","name":"createProgramBatch","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct BatchMulticall.MessageCall[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"mirror","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"}]}],"stateMutability":"payable","type":"function","name":"sendMessageBatch"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"createProgramBatch(address,(bytes32,bytes32,bytes,uint128,uint128)[])":{"details":"Creates batch of programs through Router contract and sends initial messages to them.","params":{"calls":"Array of `CreateProgramCall` structs representing calls to create programs through Router contract.","router":"The Router contract address."},"returns":{"_0":"programIds Array of created program IDs.","_1":"messageIds Array of message IDs for the initial messages sent to each created program."}},"sendMessageBatch((address,bytes,uint128)[])":{"details":"Sends batch of messages through Mirror contracts.","params":{"calls":"Array of `MessageCall` structs representing calls to send messages through Mirror contracts."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/BatchMulticall.sol":"BatchMulticall"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/BatchMulticall.sol":{"keccak256":"0x541b0651932d90c6cd3716e3dd9e35818a0510ed6ad87d3f702d87675e590c74","urls":["bzz-raw://bea6fd0b5a5a2789b301344e2d69424e1d016d8b668735ea6ca8167b8e9aabbf","dweb:/ipfs/QmPB66s2aPfzZZF9BMubtpr86P8jfpWkDRiq2S9ZjnRdFB"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/BatchMulticall.sol","id":73729,"exportedSymbols":{"BatchMulticall":[73728],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001]},"nodeType":"SourceUnit","src":"74:6602:153","nodes":[{"id":73346,"nodeType":"PragmaDirective","src":"74:24:153","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":73348,"nodeType":"ImportDirective","src":"100:40:153","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":73729,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":73347,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"108:7:153","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73350,"nodeType":"ImportDirective","src":"141:40:153","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":73729,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":73349,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"149:7:153","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73352,"nodeType":"ImportDirective","src":"182:50:153","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":73729,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":73351,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"190:12:153","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73728,"nodeType":"ContractDefinition","src":"1190:5485:153","nodes":[{"id":73360,"nodeType":"ErrorDefinition","src":"1312:58:153","nodes":[],"documentation":{"id":73354,"nodeType":"StructuredDocumentation","src":"1220:87:153","text":" @dev There is not enough value sent with transaction to cover calls."},"errorSelector":"7040b58c","name":"InsufficientValue","nameLocation":"1318:17:153","parameters":{"id":73359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73356,"mutability":"mutable","name":"expected","nameLocation":"1344:8:153","nodeType":"VariableDeclaration","scope":73360,"src":"1336:16:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73358,"mutability":"mutable","name":"actual","nameLocation":"1362:6:153","nodeType":"VariableDeclaration","scope":73360,"src":"1354:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1354:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:34:153"}},{"id":73363,"nodeType":"ErrorDefinition","src":"1445:21:153","nodes":[],"documentation":{"id":73361,"nodeType":"StructuredDocumentation","src":"1376:64:153","text":" @dev Refunding excess value to sender failed."},"errorSelector":"f0c49d44","name":"RefundFailed","nameLocation":"1451:12:153","parameters":{"id":73362,"nodeType":"ParameterList","parameters":[],"src":"1463:2:153"}},{"id":73366,"nodeType":"ErrorDefinition","src":"1562:27:153","nodes":[],"documentation":{"id":73364,"nodeType":"StructuredDocumentation","src":"1472:85:153","text":" @dev Transferring WVARA token from sender to this contract failed."},"errorSelector":"7939f424","name":"TransferFromFailed","nameLocation":"1568:18:153","parameters":{"id":73365,"nodeType":"ParameterList","parameters":[],"src":"1586:2:153"}},{"id":73369,"nodeType":"ErrorDefinition","src":"1682:22:153","nodes":[],"documentation":{"id":73367,"nodeType":"StructuredDocumentation","src":"1595:82:153","text":" @dev Approving WVARA token for created program (Mirror) failed."},"errorSelector":"3e3f8f73","name":"ApproveFailed","nameLocation":"1688:13:153","parameters":{"id":73368,"nodeType":"ParameterList","parameters":[],"src":"1701:2:153"}},{"id":73375,"nodeType":"EventDefinition","src":"1827:51:153","nodes":[],"anonymous":false,"documentation":{"id":73370,"nodeType":"StructuredDocumentation","src":"1710:112:153","text":" @dev Emitted when batch of messages is sent. It contains array of message ids that were sent."},"eventSelector":"bf5656409246fcf8590b3724124bfed7999e445c6e39ab2b4ad848f29915ecd0","name":"SendMessageBatchResult","nameLocation":"1833:22:153","parameters":{"id":73374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73373,"indexed":false,"mutability":"mutable","name":"messageIds","nameLocation":"1866:10:153","nodeType":"VariableDeclaration","scope":73375,"src":"1856:20:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1856:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73372,"nodeType":"ArrayTypeName","src":"1856:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"1855:22:153"}},{"id":73383,"nodeType":"StructDefinition","src":"2150:96:153","nodes":[],"canonicalName":"BatchMulticall.MessageCall","documentation":{"id":73376,"nodeType":"StructuredDocumentation","src":"1884:261:153","text":" @dev Represents call to send message through Mirror contract.\n It will be sent through `IMirror(mirror).sendMessage{value: value}(payload, false)`.\n (`callReply` is always `false` since we don't want to call reply hook)."},"members":[{"constant":false,"id":73378,"mutability":"mutable","name":"mirror","nameLocation":"2187:6:153","nodeType":"VariableDeclaration","scope":73383,"src":"2179:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73377,"name":"address","nodeType":"ElementaryTypeName","src":"2179:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73380,"mutability":"mutable","name":"payload","nameLocation":"2209:7:153","nodeType":"VariableDeclaration","scope":73383,"src":"2203:13:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":73379,"name":"bytes","nodeType":"ElementaryTypeName","src":"2203:5:153","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":73382,"mutability":"mutable","name":"value","nameLocation":"2234:5:153","nodeType":"VariableDeclaration","scope":73383,"src":"2226:13:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":73381,"name":"uint128","nodeType":"ElementaryTypeName","src":"2226:7:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"MessageCall","nameLocation":"2157:11:153","scope":73728,"visibility":"public"},{"id":73395,"nodeType":"StructDefinition","src":"2922:160:153","nodes":[],"canonicalName":"BatchMulticall.CreateProgramCall","documentation":{"id":73384,"nodeType":"StructuredDocumentation","src":"2252:665:153","text":" @dev Represents call to create Mirror through Router contract.\n It will be sent through `IRouter(router).createProgram(codeId, salt, address(this))`,\n where `overrideInitializer` is always `address(this)` since we want to send initial message from this contract.\n Then, if `topUpValue` is greater than 0, it will approve WVARA token and top up executable balance for created Mirror.\n Finally, it will send initial message to created Mirror through `IMirror(programId).sendMessage{value: initValue}(initPayload, false)`.\n (`callReply` is always `false` since we don't want to call reply hook)."},"members":[{"constant":false,"id":73386,"mutability":"mutable","name":"codeId","nameLocation":"2965:6:153","nodeType":"VariableDeclaration","scope":73395,"src":"2957:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2957:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":73388,"mutability":"mutable","name":"salt","nameLocation":"2989:4:153","nodeType":"VariableDeclaration","scope":73395,"src":"2981:12:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2981:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":73390,"mutability":"mutable","name":"initPayload","nameLocation":"3009:11:153","nodeType":"VariableDeclaration","scope":73395,"src":"3003:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":73389,"name":"bytes","nodeType":"ElementaryTypeName","src":"3003:5:153","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":73392,"mutability":"mutable","name":"initValue","nameLocation":"3038:9:153","nodeType":"VariableDeclaration","scope":73395,"src":"3030:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":73391,"name":"uint128","nodeType":"ElementaryTypeName","src":"3030:7:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":73394,"mutability":"mutable","name":"topUpValue","nameLocation":"3065:10:153","nodeType":"VariableDeclaration","scope":73395,"src":"3057:18:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":73393,"name":"uint128","nodeType":"ElementaryTypeName","src":"3057:7:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"CreateProgramCall","nameLocation":"2929:17:153","scope":73728,"visibility":"public"},{"id":73517,"nodeType":"FunctionDefinition","src":"3279:843:153","nodes":[],"body":{"id":73516,"nodeType":"Block","src":"3352:770:153","nodes":[],"statements":[{"assignments":[73407],"declarations":[{"constant":false,"id":73407,"mutability":"mutable","name":"messageIds","nameLocation":"3379:10:153","nodeType":"VariableDeclaration","scope":73516,"src":"3362:27:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3362:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73406,"nodeType":"ArrayTypeName","src":"3362:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":73414,"initialValue":{"arguments":[{"expression":{"id":73411,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3406:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3412:6:153","memberName":"length","nodeType":"MemberAccess","src":"3406:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3392:13:153","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":73408,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3396:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73409,"nodeType":"ArrayTypeName","src":"3396:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":73413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3392:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3362:57:153"},{"assignments":[73416],"declarations":[{"constant":false,"id":73416,"mutability":"mutable","name":"consumed","nameLocation":"3438:8:153","nodeType":"VariableDeclaration","scope":73516,"src":"3430:16:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73415,"name":"uint256","nodeType":"ElementaryTypeName","src":"3430:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73417,"nodeType":"VariableDeclarationStatement","src":"3430:16:153"},{"body":{"id":73436,"nodeType":"Block","src":"3500:51:153","statements":[{"expression":{"id":73434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73429,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3514:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":73430,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3526:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73432,"indexExpression":{"id":73431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73419,"src":"3532:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3526:8:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3535:5:153","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":73382,"src":"3526:14:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3514:26:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73435,"nodeType":"ExpressionStatement","src":"3514:26:153"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73419,"src":"3477:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73423,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3481:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3487:6:153","memberName":"length","nodeType":"MemberAccess","src":"3481:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3477:16:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73437,"initializationExpression":{"assignments":[73419],"declarations":[{"constant":false,"id":73419,"mutability":"mutable","name":"i","nameLocation":"3470:1:153","nodeType":"VariableDeclaration","scope":73437,"src":"3462:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73418,"name":"uint256","nodeType":"ElementaryTypeName","src":"3462:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73421,"initialValue":{"hexValue":"30","id":73420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3474:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3462:13:153"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":73427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3495:3:153","subExpression":{"id":73426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73419,"src":"3497:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73428,"nodeType":"ExpressionStatement","src":"3495:3:153"},"nodeType":"ForStatement","src":"3457:94:153"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73439,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3569:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":73440,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3581:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3585:5:153","memberName":"value","nodeType":"MemberAccess","src":"3581:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3569:21:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":73444,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3610:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3620:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3624:5:153","memberName":"value","nodeType":"MemberAccess","src":"3620:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73443,"name":"InsufficientValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73360,"src":"3592:17:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":73447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3592:38:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73438,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3561:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:70:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73449,"nodeType":"ExpressionStatement","src":"3561:70:153"},{"body":{"id":73485,"nodeType":"Block","src":"3685:208:153","statements":[{"assignments":[73463],"declarations":[{"constant":false,"id":73463,"mutability":"mutable","name":"messageCall","nameLocation":"3720:11:153","nodeType":"VariableDeclaration","scope":73485,"src":"3699:32:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall"},"typeName":{"id":73462,"nodeType":"UserDefinedTypeName","pathNode":{"id":73461,"name":"MessageCall","nameLocations":["3699:11:153"],"nodeType":"IdentifierPath","referencedDeclaration":73383,"src":"3699:11:153"},"referencedDeclaration":73383,"src":"3699:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_storage_ptr","typeString":"struct BatchMulticall.MessageCall"}},"visibility":"internal"}],"id":73467,"initialValue":{"baseExpression":{"id":73464,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3734:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73466,"indexExpression":{"id":73465,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3740:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3734:8:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"nodeType":"VariableDeclarationStatement","src":"3699:43:153"},{"expression":{"id":73483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73468,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73407,"src":"3757:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":73470,"indexExpression":{"id":73469,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3768:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3757:13:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":73479,"name":"messageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73463,"src":"3855:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3867:7:153","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":73380,"src":"3855:19:153","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"66616c7365","id":73481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3876:5:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"expression":{"id":73472,"name":"messageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73463,"src":"3797:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3809:6:153","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":73378,"src":"3797:18:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73471,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"3789:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":73474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3789:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":73475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3817:11:153","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":74335,"src":"3789:39:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":73476,"name":"messageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73463,"src":"3836:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3848:5:153","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":73382,"src":"3836:17:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"3789:65:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$value","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3789:93:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3757:125:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73484,"nodeType":"ExpressionStatement","src":"3757:125:153"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3662:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73455,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3666:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3672:6:153","memberName":"length","nodeType":"MemberAccess","src":"3666:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3662:16:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73486,"initializationExpression":{"assignments":[73451],"declarations":[{"constant":false,"id":73451,"mutability":"mutable","name":"i","nameLocation":"3655:1:153","nodeType":"VariableDeclaration","scope":73486,"src":"3647:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73450,"name":"uint256","nodeType":"ElementaryTypeName","src":"3647:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73453,"initialValue":{"hexValue":"30","id":73452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3659:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3647:13:153"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":73459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3680:3:153","subExpression":{"id":73458,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3682:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73460,"nodeType":"ExpressionStatement","src":"3680:3:153"},"nodeType":"ForStatement","src":"3642:251:153"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73487,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3907:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73488,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3918:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3922:5:153","memberName":"value","nodeType":"MemberAccess","src":"3918:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3907:20:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73511,"nodeType":"IfStatement","src":"3903:163:153","trueBody":{"id":73510,"nodeType":"Block","src":"3929:137:153","statements":[{"assignments":[73492,null],"declarations":[{"constant":false,"id":73492,"mutability":"mutable","name":"success","nameLocation":"3949:7:153","nodeType":"VariableDeclaration","scope":73510,"src":"3944:12:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73491,"name":"bool","nodeType":"ElementaryTypeName","src":"3944:4:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":73503,"initialValue":{"arguments":[{"hexValue":"","id":73501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4006:2:153","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":73493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3961:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3965:6:153","memberName":"sender","nodeType":"MemberAccess","src":"3961:10:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3972:4:153","memberName":"call","nodeType":"MemberAccess","src":"3961:15:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73496,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3984:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3988:5:153","memberName":"value","nodeType":"MemberAccess","src":"3984:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":73498,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3996:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3984:20:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3961:44:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3961:48:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3943:66:153"},{"expression":{"arguments":[{"id":73505,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73492,"src":"4031:7:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73506,"name":"RefundFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73363,"src":"4040:12:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4040:14:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73504,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4023:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4023:32:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73509,"nodeType":"ExpressionStatement","src":"4023:32:153"}]}},{"eventCall":{"arguments":[{"id":73513,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73407,"src":"4104:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":73512,"name":"SendMessageBatchResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73375,"src":"4081:22:153","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes32[] memory)"}},"id":73514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:34:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73515,"nodeType":"EmitStatement","src":"4076:39:153"}]},"documentation":{"id":73396,"nodeType":"StructuredDocumentation","src":"3088:186:153","text":" @dev Sends batch of messages through Mirror contracts.\n @param calls Array of `MessageCall` structs representing calls to send messages through Mirror contracts."},"functionSelector":"564abd5f","implemented":true,"kind":"function","modifiers":[],"name":"sendMessageBatch","nameLocation":"3288:16:153","parameters":{"id":73401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73400,"mutability":"mutable","name":"calls","nameLocation":"3328:5:153","nodeType":"VariableDeclaration","scope":73517,"src":"3305:28:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall[]"},"typeName":{"baseType":{"id":73398,"nodeType":"UserDefinedTypeName","pathNode":{"id":73397,"name":"MessageCall","nameLocations":["3305:11:153"],"nodeType":"IdentifierPath","referencedDeclaration":73383,"src":"3305:11:153"},"referencedDeclaration":73383,"src":"3305:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_storage_ptr","typeString":"struct BatchMulticall.MessageCall"}},"id":73399,"nodeType":"ArrayTypeName","src":"3305:13:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_storage_$dyn_storage_ptr","typeString":"struct BatchMulticall.MessageCall[]"}},"visibility":"internal"}],"src":"3304:30:153"},"returnParameters":{"id":73402,"nodeType":"ParameterList","parameters":[],"src":"3352:0:153"},"scope":73728,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":73722,"nodeType":"FunctionDefinition","src":"4570:1684:153","nodes":[],"body":{"id":73721,"nodeType":"Block","src":"4740:1514:153","nodes":[],"statements":[{"assignments":[73538],"declarations":[{"constant":false,"id":73538,"mutability":"mutable","name":"programIds","nameLocation":"4767:10:153","nodeType":"VariableDeclaration","scope":73721,"src":"4750:27:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":73536,"name":"address","nodeType":"ElementaryTypeName","src":"4750:7:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73537,"nodeType":"ArrayTypeName","src":"4750:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":73545,"initialValue":{"arguments":[{"expression":{"id":73542,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"4794:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4800:6:153","memberName":"length","nodeType":"MemberAccess","src":"4794:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4780:13:153","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":73539,"name":"address","nodeType":"ElementaryTypeName","src":"4784:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73540,"nodeType":"ArrayTypeName","src":"4784:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":73544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4780:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4750:57:153"},{"assignments":[73550],"declarations":[{"constant":false,"id":73550,"mutability":"mutable","name":"messageIds","nameLocation":"4834:10:153","nodeType":"VariableDeclaration","scope":73721,"src":"4817:27:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4817:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73549,"nodeType":"ArrayTypeName","src":"4817:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":73557,"initialValue":{"arguments":[{"expression":{"id":73554,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"4861:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4867:6:153","memberName":"length","nodeType":"MemberAccess","src":"4861:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4847:13:153","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":73551,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4851:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73552,"nodeType":"ArrayTypeName","src":"4851:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":73556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4847:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4817:57:153"},{"assignments":[73560],"declarations":[{"constant":false,"id":73560,"mutability":"mutable","name":"wvara","nameLocation":"4898:5:153","nodeType":"VariableDeclaration","scope":73721,"src":"4885:18:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":73559,"nodeType":"UserDefinedTypeName","pathNode":{"id":73558,"name":"IWrappedVara","nameLocations":["4885:12:153"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"4885:12:153"},"referencedDeclaration":75001,"src":"4885:12:153","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":73566,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":73562,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73521,"src":"4919:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":73563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4926:11:153","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":74679,"src":"4919:18:153","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":73564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:20:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73561,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"4906:12:153","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":73565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:34:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"4885:55:153"},{"assignments":[73568],"declarations":[{"constant":false,"id":73568,"mutability":"mutable","name":"consumed","nameLocation":"4959:8:153","nodeType":"VariableDeclaration","scope":73721,"src":"4951:16:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73567,"name":"uint256","nodeType":"ElementaryTypeName","src":"4951:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73569,"nodeType":"VariableDeclarationStatement","src":"4951:16:153"},{"body":{"id":73690,"nodeType":"Block","src":"5021:1012:153","statements":[{"assignments":[73583],"declarations":[{"constant":false,"id":73583,"mutability":"mutable","name":"createProgramCall","nameLocation":"5062:17:153","nodeType":"VariableDeclaration","scope":73690,"src":"5035:44:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall"},"typeName":{"id":73582,"nodeType":"UserDefinedTypeName","pathNode":{"id":73581,"name":"CreateProgramCall","nameLocations":["5035:17:153"],"nodeType":"IdentifierPath","referencedDeclaration":73395,"src":"5035:17:153"},"referencedDeclaration":73395,"src":"5035:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_storage_ptr","typeString":"struct BatchMulticall.CreateProgramCall"}},"visibility":"internal"}],"id":73587,"initialValue":{"baseExpression":{"id":73584,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"5082:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73586,"indexExpression":{"id":73585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"5088:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5082:8:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"nodeType":"VariableDeclarationStatement","src":"5035:55:153"},{"expression":{"id":73591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73588,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"5104:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":73589,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5116:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5134:9:153","memberName":"initValue","nodeType":"MemberAccess","referencedDeclaration":73392,"src":"5116:27:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5104:39:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73592,"nodeType":"ExpressionStatement","src":"5104:39:153"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73594,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"5166:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":73595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5178:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5182:5:153","memberName":"value","nodeType":"MemberAccess","src":"5178:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5166:21:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":73599,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"5207:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73600,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5217:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5221:5:153","memberName":"value","nodeType":"MemberAccess","src":"5217:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73598,"name":"InsufficientValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73360,"src":"5189:17:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":73602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5189:38:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73593,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5158:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5158:70:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73604,"nodeType":"ExpressionStatement","src":"5158:70:153"},{"assignments":[73606],"declarations":[{"constant":false,"id":73606,"mutability":"mutable","name":"programId","nameLocation":"5251:9:153","nodeType":"VariableDeclaration","scope":73690,"src":"5243:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73605,"name":"address","nodeType":"ElementaryTypeName","src":"5243:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":73618,"initialValue":{"arguments":[{"expression":{"id":73609,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5284:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5302:6:153","memberName":"codeId","nodeType":"MemberAccess","referencedDeclaration":73386,"src":"5284:24:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":73611,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5310:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:4:153","memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":73388,"src":"5310:22:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":73615,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5342:4:153","typeDescriptions":{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}],"id":73614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5334:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":73613,"name":"address","nodeType":"ElementaryTypeName","src":"5334:7:153","typeDescriptions":{}}},"id":73616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:13:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":73607,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73521,"src":"5263:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":73608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5270:13:153","memberName":"createProgram","nodeType":"MemberAccess","referencedDeclaration":74911,"src":"5263:20:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes32,address) external returns (address)"}},"id":73617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5263:85:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5243:105:153"},{"expression":{"id":73623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73619,"name":"programIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73538,"src":"5362:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":73621,"indexExpression":{"id":73620,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"5373:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5362:13:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73622,"name":"programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73606,"src":"5378:9:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5362:25:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73624,"nodeType":"ExpressionStatement","src":"5362:25:153"},{"assignments":[73627],"declarations":[{"constant":false,"id":73627,"mutability":"mutable","name":"mirror","nameLocation":"5409:6:153","nodeType":"VariableDeclaration","scope":73690,"src":"5401:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"},"typeName":{"id":73626,"nodeType":"UserDefinedTypeName","pathNode":{"id":73625,"name":"IMirror","nameLocations":["5401:7:153"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"5401:7:153"},"referencedDeclaration":74395,"src":"5401:7:153","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"visibility":"internal"}],"id":73631,"initialValue":{"arguments":[{"id":73629,"name":"programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73606,"src":"5426:9:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73628,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"5418:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":73630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5418:18:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"5401:35:153"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":73635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73632,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5455:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5473:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5455:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5486:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5455:32:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73671,"nodeType":"IfStatement","src":"5451:390:153","trueBody":{"id":73670,"nodeType":"Block","src":"5489:352:153","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":73639,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5555:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5559:6:153","memberName":"sender","nodeType":"MemberAccess","src":"5555:10:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":73643,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5575:4:153","typeDescriptions":{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}],"id":73642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5567:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":73641,"name":"address","nodeType":"ElementaryTypeName","src":"5567:7:153","typeDescriptions":{}}},"id":73644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5567:13:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":73645,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5582:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5600:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5582:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":73637,"name":"wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73560,"src":"5536:5:153","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":73638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5542:12:153","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"5536:18:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":73647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5536:75:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73648,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73366,"src":"5613:18:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:20:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73636,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5507:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5507:144:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73651,"nodeType":"ExpressionStatement","src":"5507:144:153"},{"expression":{"arguments":[{"arguments":[{"id":73655,"name":"programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73606,"src":"5691:9:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":73656,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5702:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5720:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5702:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":73653,"name":"wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73560,"src":"5677:5:153","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":73654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5683:7:153","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":46823,"src":"5677:13:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":73658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5677:54:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73659,"name":"ApproveFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73369,"src":"5733:13:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5733:15:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5669:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5669:80:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73662,"nodeType":"ExpressionStatement","src":"5669:80:153"},{"expression":{"arguments":[{"expression":{"id":73666,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5797:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5815:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5797:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":73663,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73627,"src":"5767:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":73665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5774:22:153","memberName":"executableBalanceTopUp","nodeType":"MemberAccess","referencedDeclaration":74355,"src":"5767:29:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128) external"}},"id":73668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:59:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73669,"nodeType":"ExpressionStatement","src":"5767:59:153"}]}},{"assignments":[73673],"declarations":[{"constant":false,"id":73673,"mutability":"mutable","name":"messageId","nameLocation":"5863:9:153","nodeType":"VariableDeclaration","scope":73690,"src":"5855:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5855:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":73683,"initialValue":{"arguments":[{"expression":{"id":73679,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5946:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5964:11:153","memberName":"initPayload","nodeType":"MemberAccess","referencedDeclaration":73390,"src":"5946:29:153","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"66616c7365","id":73681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5977:5:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":73674,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73627,"src":"5891:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":73675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5898:11:153","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":74335,"src":"5891:18:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":73676,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5917:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5935:9:153","memberName":"initValue","nodeType":"MemberAccess","referencedDeclaration":73392,"src":"5917:27:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"5891:54:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$value","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5891:92:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5855:128:153"},{"expression":{"id":73688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73684,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73550,"src":"5997:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":73686,"indexExpression":{"id":73685,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"6008:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5997:13:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73687,"name":"messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73673,"src":"6013:9:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5997:25:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73689,"nodeType":"ExpressionStatement","src":"5997:25:153"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"4998:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73575,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"5002:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5008:6:153","memberName":"length","nodeType":"MemberAccess","src":"5002:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4998:16:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73691,"initializationExpression":{"assignments":[73571],"declarations":[{"constant":false,"id":73571,"mutability":"mutable","name":"i","nameLocation":"4991:1:153","nodeType":"VariableDeclaration","scope":73691,"src":"4983:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73570,"name":"uint256","nodeType":"ElementaryTypeName","src":"4983:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73573,"initialValue":{"hexValue":"30","id":73572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4995:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4983:13:153"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":73579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5016:3:153","subExpression":{"id":73578,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"5018:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73580,"nodeType":"ExpressionStatement","src":"5016:3:153"},"nodeType":"ForStatement","src":"4978:1055:153"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73692,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"6047:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73693,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6058:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6062:5:153","memberName":"value","nodeType":"MemberAccess","src":"6058:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6047:20:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73716,"nodeType":"IfStatement","src":"6043:163:153","trueBody":{"id":73715,"nodeType":"Block","src":"6069:137:153","statements":[{"assignments":[73697,null],"declarations":[{"constant":false,"id":73697,"mutability":"mutable","name":"success","nameLocation":"6089:7:153","nodeType":"VariableDeclaration","scope":73715,"src":"6084:12:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73696,"name":"bool","nodeType":"ElementaryTypeName","src":"6084:4:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":73708,"initialValue":{"arguments":[{"hexValue":"","id":73706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6146:2:153","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":73698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6101:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6105:6:153","memberName":"sender","nodeType":"MemberAccess","src":"6101:10:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6112:4:153","memberName":"call","nodeType":"MemberAccess","src":"6101:15:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6124:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6128:5:153","memberName":"value","nodeType":"MemberAccess","src":"6124:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":73703,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"6136:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6124:20:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"6101:44:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6101:48:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6083:66:153"},{"expression":{"arguments":[{"id":73710,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73697,"src":"6171:7:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73711,"name":"RefundFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73363,"src":"6180:12:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6180:14:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6163:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6163:32:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73714,"nodeType":"ExpressionStatement","src":"6163:32:153"}]}},{"expression":{"components":[{"id":73717,"name":"programIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73538,"src":"6224:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":73718,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73550,"src":"6236:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"id":73719,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6223:24:153","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes32[] memory)"}},"functionReturnParameters":73533,"id":73720,"nodeType":"Return","src":"6216:31:153"}]},"documentation":{"id":73518,"nodeType":"StructuredDocumentation","src":"4128:437:153","text":" @dev Creates batch of programs through Router contract and sends initial messages to them.\n @param router The Router contract address.\n @param calls Array of `CreateProgramCall` structs representing calls to create programs through Router contract.\n @return programIds Array of created program IDs.\n @return messageIds Array of message IDs for the initial messages sent to each created program."},"functionSelector":"3cb1083b","implemented":true,"kind":"function","modifiers":[],"name":"createProgramBatch","nameLocation":"4579:18:153","parameters":{"id":73526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73521,"mutability":"mutable","name":"router","nameLocation":"4606:6:153","nodeType":"VariableDeclaration","scope":73722,"src":"4598:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"},"typeName":{"id":73520,"nodeType":"UserDefinedTypeName","pathNode":{"id":73519,"name":"IRouter","nameLocations":["4598:7:153"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"4598:7:153"},"referencedDeclaration":74985,"src":"4598:7:153","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"visibility":"internal"},{"constant":false,"id":73525,"mutability":"mutable","name":"calls","nameLocation":"4643:5:153","nodeType":"VariableDeclaration","scope":73722,"src":"4614:34:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall[]"},"typeName":{"baseType":{"id":73523,"nodeType":"UserDefinedTypeName","pathNode":{"id":73522,"name":"CreateProgramCall","nameLocations":["4614:17:153"],"nodeType":"IdentifierPath","referencedDeclaration":73395,"src":"4614:17:153"},"referencedDeclaration":73395,"src":"4614:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_storage_ptr","typeString":"struct BatchMulticall.CreateProgramCall"}},"id":73524,"nodeType":"ArrayTypeName","src":"4614:19:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_storage_$dyn_storage_ptr","typeString":"struct BatchMulticall.CreateProgramCall[]"}},"visibility":"internal"}],"src":"4597:52:153"},"returnParameters":{"id":73533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73722,"src":"4700:16:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":73527,"name":"address","nodeType":"ElementaryTypeName","src":"4700:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73528,"nodeType":"ArrayTypeName","src":"4700:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":73532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73722,"src":"4718:16:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4718:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73531,"nodeType":"ArrayTypeName","src":"4718:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4699:36:153"},"scope":73728,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":73727,"nodeType":"FunctionDefinition","src":"6644:29:153","nodes":[],"body":{"id":73726,"nodeType":"Block","src":"6671:2:153","nodes":[],"statements":[]},"documentation":{"id":73723,"nodeType":"StructuredDocumentation","src":"6260:379:153","text":" @dev Fallback function to receive Ether.\n This is necessary because `function _transferEther(address destination, uint128 value)` in `Mirror`\n will send `value` (ETH) to address of `BatchMulticall` smart contract\n (since in context of call `IMirror(messageCall.mirror).sendMessage(...)`: `msg.sender = address(BatchMulticall)`)"},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":73724,"nodeType":"ParameterList","parameters":[],"src":"6651:2:153"},"returnParameters":{"id":73725,"nodeType":"ParameterList","parameters":[],"src":"6671:0:153"},"scope":73728,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"BatchMulticall","contractDependencies":[],"contractKind":"contract","documentation":{"id":73353,"nodeType":"StructuredDocumentation","src":"234:955:153","text":" @dev BatchMulticall smart contract is responsible for batching multiple calls to Mirror smart contracts.\n This is useful for reducing number of transactions when interacting with multiple Mirror contracts.\n Mostly used in crate [`ethexe-node-loader`](ethexe/node-loader), which is responsible for testing our network.\n Since we use `anvil` as Ethereum node, this contract allows us to avoid waiting for block time and load node much faster.\n This contract allows both batching of messages and batching of program creations.\n Furthermore, when creating programs, it offers full flow:\n - approval of WVARA ERC20 token for created program (Mirror)\n - top-up of executable balance for created program in WVARA ERC20 token (Mirror)\n - sending initial message to created program (Mirror)\n All of these actions are done in one transaction, which is much faster than doing them separately."},"fullyImplemented":true,"linearizedBaseContracts":[73728],"name":"BatchMulticall","nameLocation":"1199:14:153","scope":73729,"usedErrors":[73360,73363,73366,73369],"usedEvents":[73375]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":153} \ No newline at end of file +{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"createProgramBatch","inputs":[{"name":"router","type":"address","internalType":"contract IRouter"},{"name":"calls","type":"tuple[]","internalType":"struct BatchMulticall.CreateProgramCall[]","components":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"initPayload","type":"bytes","internalType":"bytes"},{"name":"initValue","type":"uint128","internalType":"uint128"},{"name":"topUpValue","type":"uint128","internalType":"uint128"}]}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"},{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"payable"},{"type":"function","name":"sendMessageBatch","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct BatchMulticall.MessageCall[]","components":[{"name":"mirror","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"SendMessageBatchResult","inputs":[{"name":"messageIds","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"error","name":"ApproveFailed","inputs":[]},{"type":"error","name":"InsufficientValue","inputs":[{"name":"expected","type":"uint256","internalType":"uint256"},{"name":"actual","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RefundFailed","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]}],"bytecode":{"object":"0x608080604052346015576108b7908161001a8239f35b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80633cb1083b146102095763564abd5f0361000e5760203660031901126101bf5760043567ffffffffffffffff81116101bf57610060903690600401610652565b9061006a82610704565b915f905f5b8181106101d6575061008534833481111561078a565b5f5b81811061010a5784833481106100d6575b7fbf5656409246fcf8590b3724124bfed7999e445c6e39ab2b4ad848f29915ecd06100d183604051918291602083526020830190610683565b0390a1005b5f80806100e4819434610849565b335af16100ef610856565b50156100fb5781610098565b633c31275160e21b5f5260045ffd5b610115818386610895565b9081356001600160a01b038116908190036101bf57826020916101536001600160801b03610148604061016f9801610755565b1692848101906107e8565b926040518097819582946242129d60e81b84526004840161081b565b03925af180156101cb575f90610195575b6001925061018e82886107a8565b5201610087565b506020823d82116101c3575b816101ae602093836106b6565b810103126101bf5760019151610180565b5f80fd5b3d91506101a1565b6040513d5f823e3d90fd5b916102026001916001600160801b036101fb60406101f588888b610895565b01610755565b1690610769565b920161006f565b60403660031901126101bf576004356001600160a01b038116908190036101bf5760243567ffffffffffffffff81116101bf5761024a903690600401610652565b91610254836106ec565b9061026260405192836106b6565b83825261026e846106ec565b602083019390601f190136853761028485610704565b9260405163088f50cf60e41b8152602081600481875afa9081156101cb575f91610633575b5036839003609e190196955f936001600160a01b0392909216929190845b888110156105aa578060051b830135908a8212156101bf575f9184016102fc60608201986001600160801b036101fb8b610755565b9761030b348a3481111561078a565b60208a606460405180978193631b41e26960e11b8352873560048401528588013560248401523060448401525af19384156101cb575f9461057a575b5061035283886107a8565b6001600160a01b0390941693849052608082016001600160801b0361037682610755565b166103fc575b50906103a4936101536001600160801b03610398602095610755565b169260408101906107e8565b03925af180156101cb575f906103ca575b600192506103c3828b6107a8565b52016102c7565b506020823d82116103f4575b816103e3602093836106b6565b810103126101bf57600191516103b5565b3d91506103d6565b8860206001600160801b03606461041585979697610755565b5f60405195869485936323b872dd60e01b85523360048601523060248601521660448401525af19081156101cb575f9161055c575b501561054d578860206001600160801b03604461046685610755565b5f604051958694859363095ea7b360e01b85528d60048601521660248401525af19081156101cb575f9161051f575b5015610510576104a490610755565b93803b156101bf576001600160801b03604051956338276aa160e11b87521660048601525f8560248183855af19283156101cb576001600160801b03610398610153926103a498602097610500575b509495505050509361037c565b5f61050a916106b6565b5f6104f3565b633e3f8f7360e01b5f5260045ffd5b610540915060203d8111610546575b61053881836106b6565b8101906107d0565b8f610495565b503d61052e565b631e4e7d0960e21b5f5260045ffd5b610574915060203d81116105465761053881836106b6565b8f61044a565b61059c91945060203d81116105a3575b61059481836106b6565b810190610736565b928d610347565b503d61058a565b5082878634811061060e575b5060405191604083019060408452518091526060830193905f5b8181106105ef5784806105eb88878382036020850152610683565b0390f35b82516001600160a01b03168652602095860195909201916001016105d0565b5f808061061c819434610849565b335af1610627610856565b50156100fb57836105b6565b61064c915060203d6020116105a35761059481836106b6565b876102a9565b9181601f840112156101bf5782359167ffffffffffffffff83116101bf576020808501948460051b0101116101bf57565b90602080835192838152019201905f5b8181106106a05750505090565b8251845260209384019390920191600101610693565b90601f8019910116810190811067ffffffffffffffff8211176106d857604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116106d85760051b60200190565b9061070e826106ec565b61071b60405191826106b6565b828152809261072c601f19916106ec565b0190602036910137565b908160209103126101bf57516001600160a01b03811681036101bf5790565b356001600160801b03811681036101bf5790565b9190820180921161077657565b634e487b7160e01b5f52601160045260245ffd5b15610793575050565b631c102d6360e21b5f5260045260245260445ffd5b80518210156107bc5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b908160209103126101bf575180151581036101bf5790565b903590601e19813603018212156101bf570180359067ffffffffffffffff82116101bf576020019181360383136101bf57565b92916060816020925f94604088528160408901528388013783828288010152601f8019910116850101930152565b9190820391821161077657565b3d15610890573d9067ffffffffffffffff82116106d85760405191610885601f8201601f1916602001846106b6565b82523d5f602084013e565b606090565b91908110156107bc5760051b81013590605e19813603018212156101bf57019056","sourceMap":"1190:5485:153:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80633cb1083b146102095763564abd5f0361000e5760203660031901126101bf5760043567ffffffffffffffff81116101bf57610060903690600401610652565b9061006a82610704565b915f905f5b8181106101d6575061008534833481111561078a565b5f5b81811061010a5784833481106100d6575b7fbf5656409246fcf8590b3724124bfed7999e445c6e39ab2b4ad848f29915ecd06100d183604051918291602083526020830190610683565b0390a1005b5f80806100e4819434610849565b335af16100ef610856565b50156100fb5781610098565b633c31275160e21b5f5260045ffd5b610115818386610895565b9081356001600160a01b038116908190036101bf57826020916101536001600160801b03610148604061016f9801610755565b1692848101906107e8565b926040518097819582946242129d60e81b84526004840161081b565b03925af180156101cb575f90610195575b6001925061018e82886107a8565b5201610087565b506020823d82116101c3575b816101ae602093836106b6565b810103126101bf5760019151610180565b5f80fd5b3d91506101a1565b6040513d5f823e3d90fd5b916102026001916001600160801b036101fb60406101f588888b610895565b01610755565b1690610769565b920161006f565b60403660031901126101bf576004356001600160a01b038116908190036101bf5760243567ffffffffffffffff81116101bf5761024a903690600401610652565b91610254836106ec565b9061026260405192836106b6565b83825261026e846106ec565b602083019390601f190136853761028485610704565b9260405163088f50cf60e41b8152602081600481875afa9081156101cb575f91610633575b5036839003609e190196955f936001600160a01b0392909216929190845b888110156105aa578060051b830135908a8212156101bf575f9184016102fc60608201986001600160801b036101fb8b610755565b9761030b348a3481111561078a565b60208a606460405180978193631b41e26960e11b8352873560048401528588013560248401523060448401525af19384156101cb575f9461057a575b5061035283886107a8565b6001600160a01b0390941693849052608082016001600160801b0361037682610755565b166103fc575b50906103a4936101536001600160801b03610398602095610755565b169260408101906107e8565b03925af180156101cb575f906103ca575b600192506103c3828b6107a8565b52016102c7565b506020823d82116103f4575b816103e3602093836106b6565b810103126101bf57600191516103b5565b3d91506103d6565b8860206001600160801b03606461041585979697610755565b5f60405195869485936323b872dd60e01b85523360048601523060248601521660448401525af19081156101cb575f9161055c575b501561054d578860206001600160801b03604461046685610755565b5f604051958694859363095ea7b360e01b85528d60048601521660248401525af19081156101cb575f9161051f575b5015610510576104a490610755565b93803b156101bf576001600160801b03604051956338276aa160e11b87521660048601525f8560248183855af19283156101cb576001600160801b03610398610153926103a498602097610500575b509495505050509361037c565b5f61050a916106b6565b5f6104f3565b633e3f8f7360e01b5f5260045ffd5b610540915060203d8111610546575b61053881836106b6565b8101906107d0565b8f610495565b503d61052e565b631e4e7d0960e21b5f5260045ffd5b610574915060203d81116105465761053881836106b6565b8f61044a565b61059c91945060203d81116105a3575b61059481836106b6565b810190610736565b928d610347565b503d61058a565b5082878634811061060e575b5060405191604083019060408452518091526060830193905f5b8181106105ef5784806105eb88878382036020850152610683565b0390f35b82516001600160a01b03168652602095860195909201916001016105d0565b5f808061061c819434610849565b335af1610627610856565b50156100fb57836105b6565b61064c915060203d6020116105a35761059481836106b6565b876102a9565b9181601f840112156101bf5782359167ffffffffffffffff83116101bf576020808501948460051b0101116101bf57565b90602080835192838152019201905f5b8181106106a05750505090565b8251845260209384019390920191600101610693565b90601f8019910116810190811067ffffffffffffffff8211176106d857604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116106d85760051b60200190565b9061070e826106ec565b61071b60405191826106b6565b828152809261072c601f19916106ec565b0190602036910137565b908160209103126101bf57516001600160a01b03811681036101bf5790565b356001600160801b03811681036101bf5790565b9190820180921161077657565b634e487b7160e01b5f52601160045260245ffd5b15610793575050565b631c102d6360e21b5f5260045260245260445ffd5b80518210156107bc5760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b908160209103126101bf575180151581036101bf5790565b903590601e19813603018212156101bf570180359067ffffffffffffffff82116101bf576020019181360383136101bf57565b92916060816020925f94604088528160408901528388013783828288010152601f8019910116850101930152565b9190820391821161077657565b3d15610890573d9067ffffffffffffffff82116106d85760405191610885601f8201601f1916602001846106b6565b82523d5f602084013e565b606090565b91908110156107bc5760051b81013590605e19813603018212156101bf57019056","sourceMap":"1190:5485:153:-:0;;;;;;;;;-1:-1:-1;1190:5485:153;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1190:5485:153;;;;;;;;;;;;;;;;;;:::i;:::-;3392:27;;;;:::i;:::-;3430:16;1190:5485;3462:13;1190:5485;3477:16;;;;;;3581:9;3561:70;3581:9;;;3569:21;;;3561:70;:::i;:::-;1190:5485;3662:16;;;;;;3581:9;;;3907:20;;3903:163;;3642:251;4081:34;1190:5485;;;;;;;;;;;;;;;:::i;:::-;4081:34;;;1190:5485;3903:163;1190:5485;3581:9;;3984:20;3581:9;;;3984:20;:::i;:::-;3961:10;:48;;;;:::i;:::-;;1190:5485;;;3903:163;;;1190:5485;;;;;;;;;3680:3;3734:8;;;;;:::i;:::-;1190:5485;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;;3836:17;1190:5485;3836:17;3855:19;-1:-1:-1;;;;;3836:17:153;1190:5485;3789:93;3836:17;;;:::i;:::-;1190:5485;3855:19;;;;;;:::i;:::-;1190:5485;;;;;;;;;;;;3789:93;;1190:5485;3789:93;;;:::i;:::-;;;;;;;;;1190:5485;3789:93;;;3680:3;1190:5485;3757:125;;;;;;:::i;:::-;1190:5485;;3647:13;;3789:93;;1190:5485;3789:93;;;;;;;;;1190:5485;3789:93;;;:::i;:::-;;;1190:5485;;;;;;;3789:93;;1190:5485;;;;3789:93;;;-1:-1:-1;3789:93:153;;;1190:5485;;;;;;;;;3495:3;3526:8;3514:26;1190:5485;3526:8;-1:-1:-1;;;;;3526:14:153;1190:5485;3526:8;;;;;:::i;:::-;:14;;:::i;:::-;1190:5485;3514:26;;:::i;:::-;3495:3;1190:5485;3462:13;;1190:5485;;;-1:-1:-1;;1190:5485:153;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1190:5485:153;;;;4847:27;;;:::i;:::-;1190:5485;;;;;;4919:20;;1190:5485;4919:20;1190:5485;4919:20;;;;;;;;;1190:5485;4919:20;;;1190:5485;-1:-1:-1;1190:5485:153;;;;-1:-1:-1;;1190:5485:153;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;4951:16;4983:13;1190:5485;5016:3;4998:16;;;;;;1190:5485;;;;;;;;;;;;;;;;;5104:39;5116:27;;;;-1:-1:-1;;;;;5116:27:153;;;:::i;5104:39::-;5178:9;5158:70;5178:9;;;5166:21;;;5158:70;:::i;:::-;1190:5485;;5263:85;1190:5485;;;;;;;;;5263:85;;1190:5485;;;5263:85;;1190:5485;5310:22;;;1190:5485;;;;;5342:4;1190:5485;;;;5263:85;;;;;;;1190:5485;5263:85;;;5016:3;5362:25;;;;;:::i;:::-;-1:-1:-1;;;;;1190:5485:153;;;;;;;5455:28;;;-1:-1:-1;;;;;5455:28:153;;;:::i;:::-;1190:5485;5451:390;;5016:3;5917:27;;5891:92;5917:27;5946:29;-1:-1:-1;;;;;5917:27:153;1190:5485;5917:27;;:::i;:::-;1190:5485;5946:29;1190:5485;5946:29;;;;:::i;5891:92::-;;;;;;;;;1190:5485;5891:92;;;5016:3;1190:5485;5997:25;;;;;;:::i;:::-;1190:5485;;4983:13;;5891:92;;1190:5485;5891:92;;;;;;;;;1190:5485;5891:92;;;:::i;:::-;;;1190:5485;;;;;;;5891:92;;;;;-1:-1:-1;5891:92:153;;5451:390;5582:28;1190:5485;-1:-1:-1;;;;;5263:85:153;5582:28;;;;;;:::i;:::-;1190:5485;;;;;;;;;;;5536:75;;5555:10;1190:5485;5536:75;;1190:5485;5342:4;1190:5485;;;;;;;;;5536:75;;;;;;;1190:5485;5536:75;;;5451:390;1190:5485;;;;5702:28;1190:5485;-1:-1:-1;;;;;1190:5485:153;5702:28;;;:::i;:::-;1190:5485;;;;;;;;;;;5677:54;;;1190:5485;5677:54;;1190:5485;;;;;;5677:54;;;;;;;1190:5485;5677:54;;;5451:390;1190:5485;;;;5797:28;;;:::i;:::-;5767:59;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;5767:59;;1190:5485;;5767:59;;1190:5485;;5767:59;1190:5485;5767:59;;;;;;;;;;-1:-1:-1;;;;;5917:27:153;5946:29;5767:59;5891:92;5767:59;1190:5485;5767:59;;;5451:390;;;;;;;;;;;5767:59;1190:5485;5767:59;;;:::i;:::-;;;;1190:5485;;;;;;;;;5677:54;;;;1190:5485;5677:54;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1190:5485;;;;;;;;;5536:75;;;;1190:5485;5536:75;;;;;;;;;:::i;:::-;;;;5263:85;;;;;1190:5485;5263:85;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;4998:16;;;;;5178:9;6047:20;;6043:163;;4978:1055;1190:5485;;;;;;;;;;;;;;;5116:27;1190:5485;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;;;;;;;;;;6043:163;1190:5485;5178:9;;6124:20;5178:9;;;6124:20;:::i;:::-;6101:10;:48;;;;:::i;:::-;;1190:5485;;;6043:163;;;4919:20;;;;1190:5485;4919:20;1190:5485;4919:20;;;;;;;:::i;:::-;;;;1190:5485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1190:5485:153;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1190:5485:153;;;;;-1:-1:-1;1190:5485:153;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;1190:5485:153;;;;;;;:::o;:::-;;-1:-1:-1;;;;;1190:5485:153;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1190:5485:153;;;;;:::i;:::-;;;;-1:-1:-1;1190:5485:153;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"createProgramBatch(address,(bytes32,bytes32,bytes,uint128,uint128)[])":"3cb1083b","sendMessageBatch((address,bytes,uint128)[])":"564abd5f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApproveFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RefundFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"messageIds\",\"type\":\"bytes32[]\"}],\"name\":\"SendMessageBatchResult\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IRouter\",\"name\":\"router\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"initPayload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"initValue\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"topUpValue\",\"type\":\"uint128\"}],\"internalType\":\"struct BatchMulticall.CreateProgramCall[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"createProgramBatch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"mirror\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct BatchMulticall.MessageCall[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"sendMessageBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"BatchMulticall smart contract is responsible for batching multiple calls to Mirror smart contracts. This is useful for reducing number of transactions when interacting with multiple Mirror contracts. Mostly used in crate [`ethexe-node-loader`](ethexe/node-loader), which is responsible for testing our network. Since we use `anvil` as Ethereum node, this contract allows us to avoid waiting for block time and load node much faster. This contract allows both batching of messages and batching of program creations. Furthermore, when creating programs, it offers full flow: - approval of WVARA ERC20 token for created program (Mirror) - top-up of executable balance for created program in WVARA ERC20 token (Mirror) - sending initial message to created program (Mirror) All of these actions are done in one transaction, which is much faster than doing them separately.\",\"errors\":{\"ApproveFailed()\":[{\"details\":\"Approving WVARA token for created program (Mirror) failed.\"}],\"InsufficientValue(uint256,uint256)\":[{\"details\":\"There is not enough value sent with transaction to cover calls.\"}],\"RefundFailed()\":[{\"details\":\"Refunding excess value to sender failed.\"}],\"TransferFromFailed()\":[{\"details\":\"Transferring WVARA token from sender to this contract failed.\"}]},\"events\":{\"SendMessageBatchResult(bytes32[])\":{\"details\":\"Emitted when batch of messages is sent. It contains array of message ids that were sent.\"}},\"kind\":\"dev\",\"methods\":{\"createProgramBatch(address,(bytes32,bytes32,bytes,uint128,uint128)[])\":{\"details\":\"Creates batch of programs through Router contract and sends initial messages to them.\",\"params\":{\"calls\":\"Array of `CreateProgramCall` structs representing calls to create programs through Router contract.\",\"router\":\"The Router contract address.\"},\"returns\":{\"_0\":\"programIds Array of created program IDs.\",\"_1\":\"messageIds Array of message IDs for the initial messages sent to each created program.\"}},\"sendMessageBatch((address,bytes,uint128)[])\":{\"details\":\"Sends batch of messages through Mirror contracts.\",\"params\":{\"calls\":\"Array of `MessageCall` structs representing calls to send messages through Mirror contracts.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BatchMulticall.sol\":\"BatchMulticall\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/BatchMulticall.sol\":{\"keccak256\":\"0x541b0651932d90c6cd3716e3dd9e35818a0510ed6ad87d3f702d87675e590c74\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://bea6fd0b5a5a2789b301344e2d69424e1d016d8b668735ea6ca8167b8e9aabbf\",\"dweb:/ipfs/QmPB66s2aPfzZZF9BMubtpr86P8jfpWkDRiq2S9ZjnRdFB\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ApproveFailed"},{"inputs":[{"internalType":"uint256","name":"expected","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"type":"error","name":"InsufficientValue"},{"inputs":[],"type":"error","name":"RefundFailed"},{"inputs":[],"type":"error","name":"TransferFromFailed"},{"inputs":[{"internalType":"bytes32[]","name":"messageIds","type":"bytes32[]","indexed":false}],"type":"event","name":"SendMessageBatchResult","anonymous":false},{"inputs":[{"internalType":"contract IRouter","name":"router","type":"address"},{"internalType":"struct BatchMulticall.CreateProgramCall[]","name":"calls","type":"tuple[]","components":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"initPayload","type":"bytes"},{"internalType":"uint128","name":"initValue","type":"uint128"},{"internalType":"uint128","name":"topUpValue","type":"uint128"}]}],"stateMutability":"payable","type":"function","name":"createProgramBatch","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"struct BatchMulticall.MessageCall[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"mirror","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"}]}],"stateMutability":"payable","type":"function","name":"sendMessageBatch"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"createProgramBatch(address,(bytes32,bytes32,bytes,uint128,uint128)[])":{"details":"Creates batch of programs through Router contract and sends initial messages to them.","params":{"calls":"Array of `CreateProgramCall` structs representing calls to create programs through Router contract.","router":"The Router contract address."},"returns":{"_0":"programIds Array of created program IDs.","_1":"messageIds Array of message IDs for the initial messages sent to each created program."}},"sendMessageBatch((address,bytes,uint128)[])":{"details":"Sends batch of messages through Mirror contracts.","params":{"calls":"Array of `MessageCall` structs representing calls to send messages through Mirror contracts."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/BatchMulticall.sol":"BatchMulticall"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/BatchMulticall.sol":{"keccak256":"0x541b0651932d90c6cd3716e3dd9e35818a0510ed6ad87d3f702d87675e590c74","urls":["bzz-raw://bea6fd0b5a5a2789b301344e2d69424e1d016d8b668735ea6ca8167b8e9aabbf","dweb:/ipfs/QmPB66s2aPfzZZF9BMubtpr86P8jfpWkDRiq2S9ZjnRdFB"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/BatchMulticall.sol","id":73729,"exportedSymbols":{"BatchMulticall":[73728],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001]},"nodeType":"SourceUnit","src":"74:6602:153","nodes":[{"id":73346,"nodeType":"PragmaDirective","src":"74:24:153","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":73348,"nodeType":"ImportDirective","src":"100:40:153","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":73729,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":73347,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"108:7:153","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73350,"nodeType":"ImportDirective","src":"141:40:153","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":73729,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":73349,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"149:7:153","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73352,"nodeType":"ImportDirective","src":"182:50:153","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":73729,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":73351,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"190:12:153","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":73728,"nodeType":"ContractDefinition","src":"1190:5485:153","nodes":[{"id":73360,"nodeType":"ErrorDefinition","src":"1312:58:153","nodes":[],"documentation":{"id":73354,"nodeType":"StructuredDocumentation","src":"1220:87:153","text":" @dev There is not enough value sent with transaction to cover calls."},"errorSelector":"7040b58c","name":"InsufficientValue","nameLocation":"1318:17:153","parameters":{"id":73359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73356,"mutability":"mutable","name":"expected","nameLocation":"1344:8:153","nodeType":"VariableDeclaration","scope":73360,"src":"1336:16:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73358,"mutability":"mutable","name":"actual","nameLocation":"1362:6:153","nodeType":"VariableDeclaration","scope":73360,"src":"1354:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1354:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1335:34:153"}},{"id":73363,"nodeType":"ErrorDefinition","src":"1445:21:153","nodes":[],"documentation":{"id":73361,"nodeType":"StructuredDocumentation","src":"1376:64:153","text":" @dev Refunding excess value to sender failed."},"errorSelector":"f0c49d44","name":"RefundFailed","nameLocation":"1451:12:153","parameters":{"id":73362,"nodeType":"ParameterList","parameters":[],"src":"1463:2:153"}},{"id":73366,"nodeType":"ErrorDefinition","src":"1562:27:153","nodes":[],"documentation":{"id":73364,"nodeType":"StructuredDocumentation","src":"1472:85:153","text":" @dev Transferring WVARA token from sender to this contract failed."},"errorSelector":"7939f424","name":"TransferFromFailed","nameLocation":"1568:18:153","parameters":{"id":73365,"nodeType":"ParameterList","parameters":[],"src":"1586:2:153"}},{"id":73369,"nodeType":"ErrorDefinition","src":"1682:22:153","nodes":[],"documentation":{"id":73367,"nodeType":"StructuredDocumentation","src":"1595:82:153","text":" @dev Approving WVARA token for created program (Mirror) failed."},"errorSelector":"3e3f8f73","name":"ApproveFailed","nameLocation":"1688:13:153","parameters":{"id":73368,"nodeType":"ParameterList","parameters":[],"src":"1701:2:153"}},{"id":73375,"nodeType":"EventDefinition","src":"1827:51:153","nodes":[],"anonymous":false,"documentation":{"id":73370,"nodeType":"StructuredDocumentation","src":"1710:112:153","text":" @dev Emitted when batch of messages is sent. It contains array of message ids that were sent."},"eventSelector":"bf5656409246fcf8590b3724124bfed7999e445c6e39ab2b4ad848f29915ecd0","name":"SendMessageBatchResult","nameLocation":"1833:22:153","parameters":{"id":73374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73373,"indexed":false,"mutability":"mutable","name":"messageIds","nameLocation":"1866:10:153","nodeType":"VariableDeclaration","scope":73375,"src":"1856:20:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1856:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73372,"nodeType":"ArrayTypeName","src":"1856:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"1855:22:153"}},{"id":73383,"nodeType":"StructDefinition","src":"2150:96:153","nodes":[],"canonicalName":"BatchMulticall.MessageCall","documentation":{"id":73376,"nodeType":"StructuredDocumentation","src":"1884:261:153","text":" @dev Represents call to send message through Mirror contract.\n It will be sent through `IMirror(mirror).sendMessage{value: value}(payload, false)`.\n (`callReply` is always `false` since we don't want to call reply hook)."},"members":[{"constant":false,"id":73378,"mutability":"mutable","name":"mirror","nameLocation":"2187:6:153","nodeType":"VariableDeclaration","scope":73383,"src":"2179:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73377,"name":"address","nodeType":"ElementaryTypeName","src":"2179:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73380,"mutability":"mutable","name":"payload","nameLocation":"2209:7:153","nodeType":"VariableDeclaration","scope":73383,"src":"2203:13:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":73379,"name":"bytes","nodeType":"ElementaryTypeName","src":"2203:5:153","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":73382,"mutability":"mutable","name":"value","nameLocation":"2234:5:153","nodeType":"VariableDeclaration","scope":73383,"src":"2226:13:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":73381,"name":"uint128","nodeType":"ElementaryTypeName","src":"2226:7:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"MessageCall","nameLocation":"2157:11:153","scope":73728,"visibility":"public"},{"id":73395,"nodeType":"StructDefinition","src":"2922:160:153","nodes":[],"canonicalName":"BatchMulticall.CreateProgramCall","documentation":{"id":73384,"nodeType":"StructuredDocumentation","src":"2252:665:153","text":" @dev Represents call to create Mirror through Router contract.\n It will be sent through `IRouter(router).createProgram(codeId, salt, address(this))`,\n where `overrideInitializer` is always `address(this)` since we want to send initial message from this contract.\n Then, if `topUpValue` is greater than 0, it will approve WVARA token and top up executable balance for created Mirror.\n Finally, it will send initial message to created Mirror through `IMirror(programId).sendMessage{value: initValue}(initPayload, false)`.\n (`callReply` is always `false` since we don't want to call reply hook)."},"members":[{"constant":false,"id":73386,"mutability":"mutable","name":"codeId","nameLocation":"2965:6:153","nodeType":"VariableDeclaration","scope":73395,"src":"2957:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2957:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":73388,"mutability":"mutable","name":"salt","nameLocation":"2989:4:153","nodeType":"VariableDeclaration","scope":73395,"src":"2981:12:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2981:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":73390,"mutability":"mutable","name":"initPayload","nameLocation":"3009:11:153","nodeType":"VariableDeclaration","scope":73395,"src":"3003:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":73389,"name":"bytes","nodeType":"ElementaryTypeName","src":"3003:5:153","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":73392,"mutability":"mutable","name":"initValue","nameLocation":"3038:9:153","nodeType":"VariableDeclaration","scope":73395,"src":"3030:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":73391,"name":"uint128","nodeType":"ElementaryTypeName","src":"3030:7:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":73394,"mutability":"mutable","name":"topUpValue","nameLocation":"3065:10:153","nodeType":"VariableDeclaration","scope":73395,"src":"3057:18:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":73393,"name":"uint128","nodeType":"ElementaryTypeName","src":"3057:7:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"CreateProgramCall","nameLocation":"2929:17:153","scope":73728,"visibility":"public"},{"id":73517,"nodeType":"FunctionDefinition","src":"3279:843:153","nodes":[],"body":{"id":73516,"nodeType":"Block","src":"3352:770:153","nodes":[],"statements":[{"assignments":[73407],"declarations":[{"constant":false,"id":73407,"mutability":"mutable","name":"messageIds","nameLocation":"3379:10:153","nodeType":"VariableDeclaration","scope":73516,"src":"3362:27:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3362:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73406,"nodeType":"ArrayTypeName","src":"3362:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":73414,"initialValue":{"arguments":[{"expression":{"id":73411,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3406:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3412:6:153","memberName":"length","nodeType":"MemberAccess","src":"3406:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3392:13:153","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":73408,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3396:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73409,"nodeType":"ArrayTypeName","src":"3396:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":73413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3392:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3362:57:153"},{"assignments":[73416],"declarations":[{"constant":false,"id":73416,"mutability":"mutable","name":"consumed","nameLocation":"3438:8:153","nodeType":"VariableDeclaration","scope":73516,"src":"3430:16:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73415,"name":"uint256","nodeType":"ElementaryTypeName","src":"3430:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73417,"nodeType":"VariableDeclarationStatement","src":"3430:16:153"},{"body":{"id":73436,"nodeType":"Block","src":"3500:51:153","statements":[{"expression":{"id":73434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73429,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3514:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"id":73430,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3526:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73432,"indexExpression":{"id":73431,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73419,"src":"3532:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3526:8:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3535:5:153","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":73382,"src":"3526:14:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"3514:26:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73435,"nodeType":"ExpressionStatement","src":"3514:26:153"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73419,"src":"3477:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73423,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3481:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3487:6:153","memberName":"length","nodeType":"MemberAccess","src":"3481:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3477:16:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73437,"initializationExpression":{"assignments":[73419],"declarations":[{"constant":false,"id":73419,"mutability":"mutable","name":"i","nameLocation":"3470:1:153","nodeType":"VariableDeclaration","scope":73437,"src":"3462:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73418,"name":"uint256","nodeType":"ElementaryTypeName","src":"3462:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73421,"initialValue":{"hexValue":"30","id":73420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3474:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3462:13:153"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":73427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3495:3:153","subExpression":{"id":73426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73419,"src":"3497:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73428,"nodeType":"ExpressionStatement","src":"3495:3:153"},"nodeType":"ForStatement","src":"3457:94:153"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73439,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3569:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":73440,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3581:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3585:5:153","memberName":"value","nodeType":"MemberAccess","src":"3581:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3569:21:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":73444,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3610:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3620:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3624:5:153","memberName":"value","nodeType":"MemberAccess","src":"3620:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73443,"name":"InsufficientValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73360,"src":"3592:17:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":73447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3592:38:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73438,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3561:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:70:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73449,"nodeType":"ExpressionStatement","src":"3561:70:153"},{"body":{"id":73485,"nodeType":"Block","src":"3685:208:153","statements":[{"assignments":[73463],"declarations":[{"constant":false,"id":73463,"mutability":"mutable","name":"messageCall","nameLocation":"3720:11:153","nodeType":"VariableDeclaration","scope":73485,"src":"3699:32:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall"},"typeName":{"id":73462,"nodeType":"UserDefinedTypeName","pathNode":{"id":73461,"name":"MessageCall","nameLocations":["3699:11:153"],"nodeType":"IdentifierPath","referencedDeclaration":73383,"src":"3699:11:153"},"referencedDeclaration":73383,"src":"3699:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_storage_ptr","typeString":"struct BatchMulticall.MessageCall"}},"visibility":"internal"}],"id":73467,"initialValue":{"baseExpression":{"id":73464,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3734:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73466,"indexExpression":{"id":73465,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3740:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3734:8:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"nodeType":"VariableDeclarationStatement","src":"3699:43:153"},{"expression":{"id":73483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73468,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73407,"src":"3757:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":73470,"indexExpression":{"id":73469,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3768:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3757:13:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":73479,"name":"messageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73463,"src":"3855:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3867:7:153","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":73380,"src":"3855:19:153","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"66616c7365","id":73481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3876:5:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[{"expression":{"id":73472,"name":"messageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73463,"src":"3797:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3809:6:153","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":73378,"src":"3797:18:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73471,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"3789:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":73474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3789:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":73475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3817:11:153","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":74335,"src":"3789:39:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":73476,"name":"messageCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73463,"src":"3836:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata"}},"id":73477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3848:5:153","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":73382,"src":"3836:17:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"3789:65:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$value","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3789:93:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3757:125:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73484,"nodeType":"ExpressionStatement","src":"3757:125:153"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73454,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3662:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73455,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73400,"src":"3666:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall calldata[] calldata"}},"id":73456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3672:6:153","memberName":"length","nodeType":"MemberAccess","src":"3666:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3662:16:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73486,"initializationExpression":{"assignments":[73451],"declarations":[{"constant":false,"id":73451,"mutability":"mutable","name":"i","nameLocation":"3655:1:153","nodeType":"VariableDeclaration","scope":73486,"src":"3647:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73450,"name":"uint256","nodeType":"ElementaryTypeName","src":"3647:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73453,"initialValue":{"hexValue":"30","id":73452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3659:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3647:13:153"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":73459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3680:3:153","subExpression":{"id":73458,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73451,"src":"3682:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73460,"nodeType":"ExpressionStatement","src":"3680:3:153"},"nodeType":"ForStatement","src":"3642:251:153"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73487,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3907:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73488,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3918:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3922:5:153","memberName":"value","nodeType":"MemberAccess","src":"3918:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3907:20:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73511,"nodeType":"IfStatement","src":"3903:163:153","trueBody":{"id":73510,"nodeType":"Block","src":"3929:137:153","statements":[{"assignments":[73492,null],"declarations":[{"constant":false,"id":73492,"mutability":"mutable","name":"success","nameLocation":"3949:7:153","nodeType":"VariableDeclaration","scope":73510,"src":"3944:12:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73491,"name":"bool","nodeType":"ElementaryTypeName","src":"3944:4:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":73503,"initialValue":{"arguments":[{"hexValue":"","id":73501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4006:2:153","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":73493,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3961:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3965:6:153","memberName":"sender","nodeType":"MemberAccess","src":"3961:10:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3972:4:153","memberName":"call","nodeType":"MemberAccess","src":"3961:15:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73496,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3984:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3988:5:153","memberName":"value","nodeType":"MemberAccess","src":"3984:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":73498,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73416,"src":"3996:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3984:20:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3961:44:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3961:48:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3943:66:153"},{"expression":{"arguments":[{"id":73505,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73492,"src":"4031:7:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73506,"name":"RefundFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73363,"src":"4040:12:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4040:14:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73504,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4023:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4023:32:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73509,"nodeType":"ExpressionStatement","src":"4023:32:153"}]}},{"eventCall":{"arguments":[{"id":73513,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73407,"src":"4104:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":73512,"name":"SendMessageBatchResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73375,"src":"4081:22:153","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$","typeString":"function (bytes32[] memory)"}},"id":73514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4081:34:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73515,"nodeType":"EmitStatement","src":"4076:39:153"}]},"documentation":{"id":73396,"nodeType":"StructuredDocumentation","src":"3088:186:153","text":" @dev Sends batch of messages through Mirror contracts.\n @param calls Array of `MessageCall` structs representing calls to send messages through Mirror contracts."},"functionSelector":"564abd5f","implemented":true,"kind":"function","modifiers":[],"name":"sendMessageBatch","nameLocation":"3288:16:153","parameters":{"id":73401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73400,"mutability":"mutable","name":"calls","nameLocation":"3328:5:153","nodeType":"VariableDeclaration","scope":73517,"src":"3305:28:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.MessageCall[]"},"typeName":{"baseType":{"id":73398,"nodeType":"UserDefinedTypeName","pathNode":{"id":73397,"name":"MessageCall","nameLocations":["3305:11:153"],"nodeType":"IdentifierPath","referencedDeclaration":73383,"src":"3305:11:153"},"referencedDeclaration":73383,"src":"3305:11:153","typeDescriptions":{"typeIdentifier":"t_struct$_MessageCall_$73383_storage_ptr","typeString":"struct BatchMulticall.MessageCall"}},"id":73399,"nodeType":"ArrayTypeName","src":"3305:13:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_MessageCall_$73383_storage_$dyn_storage_ptr","typeString":"struct BatchMulticall.MessageCall[]"}},"visibility":"internal"}],"src":"3304:30:153"},"returnParameters":{"id":73402,"nodeType":"ParameterList","parameters":[],"src":"3352:0:153"},"scope":73728,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":73722,"nodeType":"FunctionDefinition","src":"4570:1684:153","nodes":[],"body":{"id":73721,"nodeType":"Block","src":"4740:1514:153","nodes":[],"statements":[{"assignments":[73538],"declarations":[{"constant":false,"id":73538,"mutability":"mutable","name":"programIds","nameLocation":"4767:10:153","nodeType":"VariableDeclaration","scope":73721,"src":"4750:27:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":73536,"name":"address","nodeType":"ElementaryTypeName","src":"4750:7:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73537,"nodeType":"ArrayTypeName","src":"4750:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":73545,"initialValue":{"arguments":[{"expression":{"id":73542,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"4794:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4800:6:153","memberName":"length","nodeType":"MemberAccess","src":"4794:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4780:13:153","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":73539,"name":"address","nodeType":"ElementaryTypeName","src":"4784:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73540,"nodeType":"ArrayTypeName","src":"4784:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":73544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4780:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4750:57:153"},{"assignments":[73550],"declarations":[{"constant":false,"id":73550,"mutability":"mutable","name":"messageIds","nameLocation":"4834:10:153","nodeType":"VariableDeclaration","scope":73721,"src":"4817:27:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4817:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73549,"nodeType":"ArrayTypeName","src":"4817:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":73557,"initialValue":{"arguments":[{"expression":{"id":73554,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"4861:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4867:6:153","memberName":"length","nodeType":"MemberAccess","src":"4861:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73553,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4847:13:153","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":73551,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4851:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73552,"nodeType":"ArrayTypeName","src":"4851:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":73556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4847:27:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4817:57:153"},{"assignments":[73560],"declarations":[{"constant":false,"id":73560,"mutability":"mutable","name":"wvara","nameLocation":"4898:5:153","nodeType":"VariableDeclaration","scope":73721,"src":"4885:18:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":73559,"nodeType":"UserDefinedTypeName","pathNode":{"id":73558,"name":"IWrappedVara","nameLocations":["4885:12:153"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"4885:12:153"},"referencedDeclaration":75001,"src":"4885:12:153","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":73566,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":73562,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73521,"src":"4919:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":73563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4926:11:153","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":74679,"src":"4919:18:153","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":73564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:20:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73561,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"4906:12:153","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":73565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:34:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"4885:55:153"},{"assignments":[73568],"declarations":[{"constant":false,"id":73568,"mutability":"mutable","name":"consumed","nameLocation":"4959:8:153","nodeType":"VariableDeclaration","scope":73721,"src":"4951:16:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73567,"name":"uint256","nodeType":"ElementaryTypeName","src":"4951:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73569,"nodeType":"VariableDeclarationStatement","src":"4951:16:153"},{"body":{"id":73690,"nodeType":"Block","src":"5021:1012:153","statements":[{"assignments":[73583],"declarations":[{"constant":false,"id":73583,"mutability":"mutable","name":"createProgramCall","nameLocation":"5062:17:153","nodeType":"VariableDeclaration","scope":73690,"src":"5035:44:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall"},"typeName":{"id":73582,"nodeType":"UserDefinedTypeName","pathNode":{"id":73581,"name":"CreateProgramCall","nameLocations":["5035:17:153"],"nodeType":"IdentifierPath","referencedDeclaration":73395,"src":"5035:17:153"},"referencedDeclaration":73395,"src":"5035:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_storage_ptr","typeString":"struct BatchMulticall.CreateProgramCall"}},"visibility":"internal"}],"id":73587,"initialValue":{"baseExpression":{"id":73584,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"5082:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73586,"indexExpression":{"id":73585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"5088:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5082:8:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"nodeType":"VariableDeclarationStatement","src":"5035:55:153"},{"expression":{"id":73591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73588,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"5104:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":73589,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5116:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5134:9:153","memberName":"initValue","nodeType":"MemberAccess","referencedDeclaration":73392,"src":"5116:27:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5104:39:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73592,"nodeType":"ExpressionStatement","src":"5104:39:153"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73594,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"5166:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":73595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5178:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5182:5:153","memberName":"value","nodeType":"MemberAccess","src":"5178:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5166:21:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":73599,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"5207:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73600,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5217:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5221:5:153","memberName":"value","nodeType":"MemberAccess","src":"5217:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73598,"name":"InsufficientValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73360,"src":"5189:17:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":73602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5189:38:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73593,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5158:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5158:70:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73604,"nodeType":"ExpressionStatement","src":"5158:70:153"},{"assignments":[73606],"declarations":[{"constant":false,"id":73606,"mutability":"mutable","name":"programId","nameLocation":"5251:9:153","nodeType":"VariableDeclaration","scope":73690,"src":"5243:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73605,"name":"address","nodeType":"ElementaryTypeName","src":"5243:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":73618,"initialValue":{"arguments":[{"expression":{"id":73609,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5284:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5302:6:153","memberName":"codeId","nodeType":"MemberAccess","referencedDeclaration":73386,"src":"5284:24:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":73611,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5310:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:4:153","memberName":"salt","nodeType":"MemberAccess","referencedDeclaration":73388,"src":"5310:22:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":73615,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5342:4:153","typeDescriptions":{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}],"id":73614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5334:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":73613,"name":"address","nodeType":"ElementaryTypeName","src":"5334:7:153","typeDescriptions":{}}},"id":73616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:13:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":73607,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73521,"src":"5263:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":73608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5270:13:153","memberName":"createProgram","nodeType":"MemberAccess","referencedDeclaration":74911,"src":"5263:20:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$","typeString":"function (bytes32,bytes32,address) external returns (address)"}},"id":73617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5263:85:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5243:105:153"},{"expression":{"id":73623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73619,"name":"programIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73538,"src":"5362:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":73621,"indexExpression":{"id":73620,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"5373:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5362:13:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73622,"name":"programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73606,"src":"5378:9:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5362:25:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73624,"nodeType":"ExpressionStatement","src":"5362:25:153"},{"assignments":[73627],"declarations":[{"constant":false,"id":73627,"mutability":"mutable","name":"mirror","nameLocation":"5409:6:153","nodeType":"VariableDeclaration","scope":73690,"src":"5401:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"},"typeName":{"id":73626,"nodeType":"UserDefinedTypeName","pathNode":{"id":73625,"name":"IMirror","nameLocations":["5401:7:153"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"5401:7:153"},"referencedDeclaration":74395,"src":"5401:7:153","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"visibility":"internal"}],"id":73631,"initialValue":{"arguments":[{"id":73629,"name":"programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73606,"src":"5426:9:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73628,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"5418:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":73630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5418:18:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"5401:35:153"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":73635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73632,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5455:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5473:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5455:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5486:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5455:32:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73671,"nodeType":"IfStatement","src":"5451:390:153","trueBody":{"id":73670,"nodeType":"Block","src":"5489:352:153","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":73639,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5555:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5559:6:153","memberName":"sender","nodeType":"MemberAccess","src":"5555:10:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":73643,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5575:4:153","typeDescriptions":{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BatchMulticall_$73728","typeString":"contract BatchMulticall"}],"id":73642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5567:7:153","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":73641,"name":"address","nodeType":"ElementaryTypeName","src":"5567:7:153","typeDescriptions":{}}},"id":73644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5567:13:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":73645,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5582:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5600:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5582:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":73637,"name":"wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73560,"src":"5536:5:153","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":73638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5542:12:153","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"5536:18:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":73647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5536:75:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73648,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73366,"src":"5613:18:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:20:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73636,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5507:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5507:144:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73651,"nodeType":"ExpressionStatement","src":"5507:144:153"},{"expression":{"arguments":[{"arguments":[{"id":73655,"name":"programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73606,"src":"5691:9:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":73656,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5702:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5720:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5702:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":73653,"name":"wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73560,"src":"5677:5:153","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":73654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5683:7:153","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":46823,"src":"5677:13:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":73658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5677:54:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73659,"name":"ApproveFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73369,"src":"5733:13:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5733:15:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5669:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5669:80:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73662,"nodeType":"ExpressionStatement","src":"5669:80:153"},{"expression":{"arguments":[{"expression":{"id":73666,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5797:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5815:10:153","memberName":"topUpValue","nodeType":"MemberAccess","referencedDeclaration":73394,"src":"5797:28:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":73663,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73627,"src":"5767:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":73665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5774:22:153","memberName":"executableBalanceTopUp","nodeType":"MemberAccess","referencedDeclaration":74355,"src":"5767:29:153","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128) external"}},"id":73668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:59:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73669,"nodeType":"ExpressionStatement","src":"5767:59:153"}]}},{"assignments":[73673],"declarations":[{"constant":false,"id":73673,"mutability":"mutable","name":"messageId","nameLocation":"5863:9:153","nodeType":"VariableDeclaration","scope":73690,"src":"5855:17:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5855:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":73683,"initialValue":{"arguments":[{"expression":{"id":73679,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5946:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5964:11:153","memberName":"initPayload","nodeType":"MemberAccess","referencedDeclaration":73390,"src":"5946:29:153","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"66616c7365","id":73681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5977:5:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":73674,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73627,"src":"5891:6:153","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":73675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5898:11:153","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":74335,"src":"5891:18:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":73676,"name":"createProgramCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73583,"src":"5917:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata"}},"id":73677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5935:9:153","memberName":"initValue","nodeType":"MemberAccess","referencedDeclaration":73392,"src":"5917:27:153","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"5891:54:153","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$value","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":73682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5891:92:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5855:128:153"},{"expression":{"id":73688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73684,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73550,"src":"5997:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":73686,"indexExpression":{"id":73685,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"6008:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5997:13:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73687,"name":"messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73673,"src":"6013:9:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5997:25:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73689,"nodeType":"ExpressionStatement","src":"5997:25:153"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"4998:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73575,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73525,"src":"5002:5:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall calldata[] calldata"}},"id":73576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5008:6:153","memberName":"length","nodeType":"MemberAccess","src":"5002:12:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4998:16:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73691,"initializationExpression":{"assignments":[73571],"declarations":[{"constant":false,"id":73571,"mutability":"mutable","name":"i","nameLocation":"4991:1:153","nodeType":"VariableDeclaration","scope":73691,"src":"4983:9:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73570,"name":"uint256","nodeType":"ElementaryTypeName","src":"4983:7:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73573,"initialValue":{"hexValue":"30","id":73572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4995:1:153","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4983:13:153"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":73579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5016:3:153","subExpression":{"id":73578,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73571,"src":"5018:1:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73580,"nodeType":"ExpressionStatement","src":"5016:3:153"},"nodeType":"ForStatement","src":"4978:1055:153"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73692,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"6047:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73693,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6058:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6062:5:153","memberName":"value","nodeType":"MemberAccess","src":"6058:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6047:20:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73716,"nodeType":"IfStatement","src":"6043:163:153","trueBody":{"id":73715,"nodeType":"Block","src":"6069:137:153","statements":[{"assignments":[73697,null],"declarations":[{"constant":false,"id":73697,"mutability":"mutable","name":"success","nameLocation":"6089:7:153","nodeType":"VariableDeclaration","scope":73715,"src":"6084:12:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73696,"name":"bool","nodeType":"ElementaryTypeName","src":"6084:4:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":73708,"initialValue":{"arguments":[{"hexValue":"","id":73706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6146:2:153","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"id":73698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6101:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6105:6:153","memberName":"sender","nodeType":"MemberAccess","src":"6101:10:153","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6112:4:153","memberName":"call","nodeType":"MemberAccess","src":"6101:15:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6124:3:153","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6128:5:153","memberName":"value","nodeType":"MemberAccess","src":"6124:9:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":73703,"name":"consumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73568,"src":"6136:8:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6124:20:153","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"6101:44:153","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":73707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6101:48:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6083:66:153"},{"expression":{"arguments":[{"id":73710,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73697,"src":"6171:7:153","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":73711,"name":"RefundFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73363,"src":"6180:12:153","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6180:14:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":73709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6163:7:153","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":73713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6163:32:153","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73714,"nodeType":"ExpressionStatement","src":"6163:32:153"}]}},{"expression":{"components":[{"id":73717,"name":"programIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73538,"src":"6224:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":73718,"name":"messageIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73550,"src":"6236:10:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"id":73719,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6223:24:153","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,bytes32[] memory)"}},"functionReturnParameters":73533,"id":73720,"nodeType":"Return","src":"6216:31:153"}]},"documentation":{"id":73518,"nodeType":"StructuredDocumentation","src":"4128:437:153","text":" @dev Creates batch of programs through Router contract and sends initial messages to them.\n @param router The Router contract address.\n @param calls Array of `CreateProgramCall` structs representing calls to create programs through Router contract.\n @return programIds Array of created program IDs.\n @return messageIds Array of message IDs for the initial messages sent to each created program."},"functionSelector":"3cb1083b","implemented":true,"kind":"function","modifiers":[],"name":"createProgramBatch","nameLocation":"4579:18:153","parameters":{"id":73526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73521,"mutability":"mutable","name":"router","nameLocation":"4606:6:153","nodeType":"VariableDeclaration","scope":73722,"src":"4598:14:153","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"},"typeName":{"id":73520,"nodeType":"UserDefinedTypeName","pathNode":{"id":73519,"name":"IRouter","nameLocations":["4598:7:153"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"4598:7:153"},"referencedDeclaration":74985,"src":"4598:7:153","typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"visibility":"internal"},{"constant":false,"id":73525,"mutability":"mutable","name":"calls","nameLocation":"4643:5:153","nodeType":"VariableDeclaration","scope":73722,"src":"4614:34:153","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_calldata_ptr_$dyn_calldata_ptr","typeString":"struct BatchMulticall.CreateProgramCall[]"},"typeName":{"baseType":{"id":73523,"nodeType":"UserDefinedTypeName","pathNode":{"id":73522,"name":"CreateProgramCall","nameLocations":["4614:17:153"],"nodeType":"IdentifierPath","referencedDeclaration":73395,"src":"4614:17:153"},"referencedDeclaration":73395,"src":"4614:17:153","typeDescriptions":{"typeIdentifier":"t_struct$_CreateProgramCall_$73395_storage_ptr","typeString":"struct BatchMulticall.CreateProgramCall"}},"id":73524,"nodeType":"ArrayTypeName","src":"4614:19:153","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CreateProgramCall_$73395_storage_$dyn_storage_ptr","typeString":"struct BatchMulticall.CreateProgramCall[]"}},"visibility":"internal"}],"src":"4597:52:153"},"returnParameters":{"id":73533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73722,"src":"4700:16:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":73527,"name":"address","nodeType":"ElementaryTypeName","src":"4700:7:153","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":73528,"nodeType":"ArrayTypeName","src":"4700:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":73532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73722,"src":"4718:16:153","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":73530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4718:7:153","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":73531,"nodeType":"ArrayTypeName","src":"4718:9:153","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"4699:36:153"},"scope":73728,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":73727,"nodeType":"FunctionDefinition","src":"6644:29:153","nodes":[],"body":{"id":73726,"nodeType":"Block","src":"6671:2:153","nodes":[],"statements":[]},"documentation":{"id":73723,"nodeType":"StructuredDocumentation","src":"6260:379:153","text":" @dev Fallback function to receive Ether.\n This is necessary because `function _transferEther(address destination, uint128 value)` in `Mirror`\n will send `value` (ETH) to address of `BatchMulticall` smart contract\n (since in context of call `IMirror(messageCall.mirror).sendMessage(...)`: `msg.sender = address(BatchMulticall)`)"},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":73724,"nodeType":"ParameterList","parameters":[],"src":"6651:2:153"},"returnParameters":{"id":73725,"nodeType":"ParameterList","parameters":[],"src":"6671:0:153"},"scope":73728,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"BatchMulticall","contractDependencies":[],"contractKind":"contract","documentation":{"id":73353,"nodeType":"StructuredDocumentation","src":"234:955:153","text":" @dev BatchMulticall smart contract is responsible for batching multiple calls to Mirror smart contracts.\n This is useful for reducing number of transactions when interacting with multiple Mirror contracts.\n Mostly used in crate [`ethexe-node-loader`](ethexe/node-loader), which is responsible for testing our network.\n Since we use `anvil` as Ethereum node, this contract allows us to avoid waiting for block time and load node much faster.\n This contract allows both batching of messages and batching of program creations.\n Furthermore, when creating programs, it offers full flow:\n - approval of WVARA ERC20 token for created program (Mirror)\n - top-up of executable balance for created program in WVARA ERC20 token (Mirror)\n - sending initial message to created program (Mirror)\n All of these actions are done in one transaction, which is much faster than doing them separately."},"fullyImplemented":true,"linearizedBaseContracts":[73728],"name":"BatchMulticall","nameLocation":"1199:14:153","scope":73729,"usedErrors":[73360,73363,73366,73369],"usedEvents":[73375]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":153} \ No newline at end of file diff --git a/ethexe/ethereum/abi/DemoCaller.json b/ethexe/ethereum/abi/DemoCaller.json index 91b9ef586aa..167356740ec 100644 --- a/ethexe/ethereum/abi/DemoCaller.json +++ b/ethexe/ethereum/abi/DemoCaller.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_varaEthProgram","type":"address","internalType":"contract IMirror"}],"stateMutability":"nonpayable"},{"type":"function","name":"VARA_ETH_PROGRAM","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMirror"}],"stateMutability":"view"},{"type":"function","name":"methodName","inputs":[{"name":"isPanic","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"onErrorReply","inputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"replyCode","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onErrorReplyCalled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"replyOnMethodNameCalled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"replyOn_methodName","inputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ErrorReplied","inputs":[{"name":"messageId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"replyCode","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"MethodNameReplied","inputs":[{"name":"messageId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"error","name":"UnauthorizedCaller","inputs":[]}],"bytecode":{"object":"0x60a034607357601f61040d38819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b0381168103607357608052604051610381908161008c823960805181818160700152818161019b01526103420152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80634a646c7f146102375780638ed2570c1461021357806396b3d5a914610116578063b52ab555146100c4578063d24012f8146100a35763dab506b21461005b575f80fd5b3461009f575f36600319011261009f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b3461009f575f36600319011261009f57602060ff5f54166040519015158152f35b3461009f57602036600319011261009f576100dd610340565b600160ff195f5416175f557fe84f069632bb62380c2db01d855c4a504e087d71add44c3639386496f56fcfd260206040516004358152a1005b3461009f57602036600319011261009f5760043580151580910361009f5760206040518181019260f81b83526001815261015160218261030a565b6064604051809481936242129d60e81b8352604060048401525180918160448501528484015e5f83828401015260016024830152601f801991011681010301815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610208575f906101d5575b602090604051908152f35b506020813d602011610200575b816101ef6020938361030a565b8101031261009f57602090516101ca565b3d91506101e2565b6040513d5f823e3d90fd5b3461009f575f36600319011261009f57602060ff5f5460081c166040519015158152f35b606036600319011261009f5760243567ffffffffffffffff811161009f573660238201121561009f57806004013567ffffffffffffffff811161009f57366024828401011161009f5760443563ffffffff60e01b811680910361009f577f71e1710f6581d7e128cb38d25b5ea07b760f138a9073096c50be9c23d0f2b45e926024926080926102c4610340565b61010061ff00195f5416175f558160405195869460043586526060602087015282606087015201858501375f8383018501526040830152601f01601f19168101030190a1005b90601f8019910116810190811067ffffffffffffffff82111761032c57604052565b634e487b7160e01b5f52604160045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361037257565b635c427cd960e01b5f5260045ffd","sourceMap":"198:1305:173:-:0;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;;-1:-1:-1;;;;;198:1305:173;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;198:1305:173;;;;;;574:34;;198:1305;;;;;;;;574:34;198:1305;;;;;;;;;;;;;;;;;-1:-1:-1;198:1305:173;;;;;;-1:-1:-1;198:1305:173;;;;;-1:-1:-1;198:1305:173","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80634a646c7f146102375780638ed2570c1461021357806396b3d5a914610116578063b52ab555146100c4578063d24012f8146100a35763dab506b21461005b575f80fd5b3461009f575f36600319011261009f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b3461009f575f36600319011261009f57602060ff5f54166040519015158152f35b3461009f57602036600319011261009f576100dd610340565b600160ff195f5416175f557fe84f069632bb62380c2db01d855c4a504e087d71add44c3639386496f56fcfd260206040516004358152a1005b3461009f57602036600319011261009f5760043580151580910361009f5760206040518181019260f81b83526001815261015160218261030a565b6064604051809481936242129d60e81b8352604060048401525180918160448501528484015e5f83828401015260016024830152601f801991011681010301815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610208575f906101d5575b602090604051908152f35b506020813d602011610200575b816101ef6020938361030a565b8101031261009f57602090516101ca565b3d91506101e2565b6040513d5f823e3d90fd5b3461009f575f36600319011261009f57602060ff5f5460081c166040519015158152f35b606036600319011261009f5760243567ffffffffffffffff811161009f573660238201121561009f57806004013567ffffffffffffffff811161009f57366024828401011161009f5760443563ffffffff60e01b811680910361009f577f71e1710f6581d7e128cb38d25b5ea07b760f138a9073096c50be9c23d0f2b45e926024926080926102c4610340565b61010061ff00195f5416175f558160405195869460043586526060602087015282606087015201858501375f8383018501526040830152601f01601f19168101030190a1005b90601f8019910116810190811067ffffffffffffffff82111761032c57604052565b634e487b7160e01b5f52604160045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361037257565b635c427cd960e01b5f5260045ffd","sourceMap":"198:1305:173:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;;;;242:41;-1:-1:-1;;;;;198:1305:173;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;;621:79;;:::i;:::-;198:1305;;;;;;;;;1212:28;198:1305;;;;;;;1212:28;198:1305;;;;;;;-1:-1:-1;;198:1305:173;;;;;;;;;;;;;;;;;977:25;;;198:1305;;;;;;977:25;;;;;;:::i;:::-;198:1305;;;;;;;;;;948:61;;198:1305;;948:61;;198:1305;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:61;;198:1305;;;;;;;948:16;198:1305;948:61;;;;;;198:1305;948:61;;;198:1305;;;;;;;;;948:61;;198:1305;948:61;;198:1305;948:61;;;;;;198:1305;948:61;;;:::i;:::-;;;198:1305;;;;;;;948:61;;;;;-1:-1:-1;948:61:173;;;198:1305;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:43;621:79;198:1305;621:79;198:1305;621:79;;;:::i;:::-;198:1305;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:173;;;1451:43;;;;198:1305;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;198:1305:173;;;;;-1:-1:-1;198:1305:173;706:158;787:16;-1:-1:-1;;;;;198:1305:173;765:10;:39;761:97;;706:158::o;761:97::-;827:20;;;;;;;","linkReferences":{},"immutableReferences":{"86282":[{"start":112,"length":32},{"start":411,"length":32},{"start":834,"length":32}]}},"methodIdentifiers":{"VARA_ETH_PROGRAM()":"dab506b2","methodName(bool)":"96b3d5a9","onErrorReply(bytes32,bytes,bytes4)":"4a646c7f","onErrorReplyCalled()":"8ed2570c","replyOnMethodNameCalled()":"d24012f8","replyOn_methodName(bytes32)":"b52ab555"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMirror\",\"name\":\"_varaEthProgram\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"ErrorReplied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MethodNameReplied\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VARA_ETH_PROGRAM\",\"outputs\":[{\"internalType\":\"contract IMirror\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isPanic\",\"type\":\"bool\"}],\"name\":\"methodName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"onErrorReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onErrorReplyCalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"replyOnMethodNameCalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"replyOn_methodName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onErrorReply(bytes32,bytes,bytes4)\":{\"details\":\"If reply is received, this method will be called by Mirror smart contract, but only if `gear_core::rpc::ReplyInfo` contains `gear_core::message::ReplyCode` that has `ReplyCode::Error(_)` variant.Currently this method has gas limit of 500_000 in order to prevent DoS attacks. Gas limit is proposed to be removed in the future when we switch to merkle roots approach for messages.\",\"params\":{\"messageId\":\"Message ID of reply, generated by `MessageId::generate_reply(replied_to)` in Rust-side.\",\"payload\":\"Payload of reply (e.g., error message in case of `UserspacePanic`).\",\"replyCode\":\"Reply code of reply (`gear_core::message::ReplyCode.to_bytes()`).\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"replyOn_methodName(bytes32)\":{\"notice\":\"forge-lint: disable-next-line(mixed-case-function)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/DemoCaller.sol\":\"DemoCaller\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/ICallbacks.sol\":{\"keccak256\":\"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf\",\"dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"test/DemoCaller.sol\":{\"keccak256\":\"0x42ef529fac84a409b712e6b6a94ee0b3852a351c5edb7849035876745a26cb97\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://b24118f80827fd8da316e7d22dc33928f5bb5f29027826938b3d89b4a58ec186\",\"dweb:/ipfs/QmYr1hKiJ9ku7T4uFAvnE8dACtrobV2C3sMaWvQB92j9Kz\"]},\"test/IDemoCallbacks.sol\":{\"keccak256\":\"0xd76edaaf6eded433143f382e16fa35681616537df11f7108178763874539fa46\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d952ba6f3e3bc017740605a47121b8ddf0b447ceec72de5dc75a6c323a1f413d\",\"dweb:/ipfs/QmUY6LM6Uya3vn1AAzziAtfgEsp5YeMCF6GNo7jSpSgDDU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IMirror","name":"_varaEthProgram","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"UnauthorizedCaller"},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32","indexed":false},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":false}],"type":"event","name":"ErrorReplied","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32","indexed":false}],"type":"event","name":"MethodNameReplied","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"VARA_ETH_PROGRAM","outputs":[{"internalType":"contract IMirror","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"isPanic","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"methodName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes4","name":"replyCode","type":"bytes4"}],"stateMutability":"payable","type":"function","name":"onErrorReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"onErrorReplyCalled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"replyOnMethodNameCalled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"replyOn_methodName"}],"devdoc":{"kind":"dev","methods":{"onErrorReply(bytes32,bytes,bytes4)":{"details":"If reply is received, this method will be called by Mirror smart contract, but only if `gear_core::rpc::ReplyInfo` contains `gear_core::message::ReplyCode` that has `ReplyCode::Error(_)` variant.Currently this method has gas limit of 500_000 in order to prevent DoS attacks. Gas limit is proposed to be removed in the future when we switch to merkle roots approach for messages.","params":{"messageId":"Message ID of reply, generated by `MessageId::generate_reply(replied_to)` in Rust-side.","payload":"Payload of reply (e.g., error message in case of `UserspacePanic`).","replyCode":"Reply code of reply (`gear_core::message::ReplyCode.to_bytes()`)."}}},"version":1},"userdoc":{"kind":"user","methods":{"replyOn_methodName(bytes32)":{"notice":"forge-lint: disable-next-line(mixed-case-function)"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"test/DemoCaller.sol":"DemoCaller"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/ICallbacks.sol":{"keccak256":"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0","urls":["bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf","dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"test/DemoCaller.sol":{"keccak256":"0x42ef529fac84a409b712e6b6a94ee0b3852a351c5edb7849035876745a26cb97","urls":["bzz-raw://b24118f80827fd8da316e7d22dc33928f5bb5f29027826938b3d89b4a58ec186","dweb:/ipfs/QmYr1hKiJ9ku7T4uFAvnE8dACtrobV2C3sMaWvQB92j9Kz"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"test/IDemoCallbacks.sol":{"keccak256":"0xd76edaaf6eded433143f382e16fa35681616537df11f7108178763874539fa46","urls":["bzz-raw://d952ba6f3e3bc017740605a47121b8ddf0b447ceec72de5dc75a6c323a1f413d","dweb:/ipfs/QmUY6LM6Uya3vn1AAzziAtfgEsp5YeMCF6GNo7jSpSgDDU"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":86284,"contract":"test/DemoCaller.sol:DemoCaller","label":"replyOnMethodNameCalled","offset":0,"slot":"0","type":"t_bool"},{"astId":86286,"contract":"test/DemoCaller.sol:DemoCaller","label":"onErrorReplyCalled","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"ast":{"absolutePath":"test/DemoCaller.sol","id":86392,"exportedSymbols":{"DemoCaller":[86391],"IDemoCallbacks":[86404],"IMirror":[74395]},"nodeType":"SourceUnit","src":"74:1430:173","nodes":[{"id":86273,"nodeType":"PragmaDirective","src":"74:24:173","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":86275,"nodeType":"ImportDirective","src":"100:40:173","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":86392,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":86274,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"108:7:173","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":86277,"nodeType":"ImportDirective","src":"141:55:173","nodes":[],"absolutePath":"test/IDemoCallbacks.sol","file":"test/IDemoCallbacks.sol","nameLocation":"-1:-1:-1","scope":86392,"sourceUnit":86405,"symbolAliases":[{"foreign":{"id":86276,"name":"IDemoCallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86404,"src":"149:14:173","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":86391,"nodeType":"ContractDefinition","src":"198:1305:173","nodes":[{"id":86282,"nodeType":"VariableDeclaration","src":"242:41:173","nodes":[],"constant":false,"functionSelector":"dab506b2","mutability":"immutable","name":"VARA_ETH_PROGRAM","nameLocation":"267:16:173","scope":86391,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"},"typeName":{"id":86281,"nodeType":"UserDefinedTypeName","pathNode":{"id":86280,"name":"IMirror","nameLocations":["242:7:173"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"242:7:173"},"referencedDeclaration":74395,"src":"242:7:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"visibility":"public"},{"id":86284,"nodeType":"VariableDeclaration","src":"290:35:173","nodes":[],"constant":false,"functionSelector":"d24012f8","mutability":"mutable","name":"replyOnMethodNameCalled","nameLocation":"302:23:173","scope":86391,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86283,"name":"bool","nodeType":"ElementaryTypeName","src":"290:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":86286,"nodeType":"VariableDeclaration","src":"331:30:173","nodes":[],"constant":false,"functionSelector":"8ed2570c","mutability":"mutable","name":"onErrorReplyCalled","nameLocation":"343:18:173","scope":86391,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86285,"name":"bool","nodeType":"ElementaryTypeName","src":"331:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":86290,"nodeType":"EventDefinition","src":"368:43:173","nodes":[],"anonymous":false,"eventSelector":"e84f069632bb62380c2db01d855c4a504e087d71add44c3639386496f56fcfd2","name":"MethodNameReplied","nameLocation":"374:17:173","parameters":{"id":86289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86288,"indexed":false,"mutability":"mutable","name":"messageId","nameLocation":"400:9:173","nodeType":"VariableDeclaration","scope":86290,"src":"392:17:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"392:7:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"391:19:173"}},{"id":86298,"nodeType":"EventDefinition","src":"417:71:173","nodes":[],"anonymous":false,"eventSelector":"71e1710f6581d7e128cb38d25b5ea07b760f138a9073096c50be9c23d0f2b45e","name":"ErrorReplied","nameLocation":"423:12:173","parameters":{"id":86297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86292,"indexed":false,"mutability":"mutable","name":"messageId","nameLocation":"444:9:173","nodeType":"VariableDeclaration","scope":86298,"src":"436:17:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"436:7:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":86294,"indexed":false,"mutability":"mutable","name":"payload","nameLocation":"461:7:173","nodeType":"VariableDeclaration","scope":86298,"src":"455:13:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86293,"name":"bytes","nodeType":"ElementaryTypeName","src":"455:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":86296,"indexed":false,"mutability":"mutable","name":"replyCode","nameLocation":"477:9:173","nodeType":"VariableDeclaration","scope":86298,"src":"470:16:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":86295,"name":"bytes4","nodeType":"ElementaryTypeName","src":"470:6:173","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"435:52:173"}},{"id":86300,"nodeType":"ErrorDefinition","src":"494:27:173","nodes":[],"errorSelector":"5c427cd9","name":"UnauthorizedCaller","nameLocation":"500:18:173","parameters":{"id":86299,"nodeType":"ParameterList","parameters":[],"src":"518:2:173"}},{"id":86311,"nodeType":"FunctionDefinition","src":"527:88:173","nodes":[],"body":{"id":86310,"nodeType":"Block","src":"564:51:173","nodes":[],"statements":[{"expression":{"id":86308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86306,"name":"VARA_ETH_PROGRAM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86282,"src":"574:16:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86307,"name":"_varaEthProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86303,"src":"593:15:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"src":"574:34:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":86309,"nodeType":"ExpressionStatement","src":"574:34:173"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":86304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86303,"mutability":"mutable","name":"_varaEthProgram","nameLocation":"547:15:173","nodeType":"VariableDeclaration","scope":86311,"src":"539:23:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"},"typeName":{"id":86302,"nodeType":"UserDefinedTypeName","pathNode":{"id":86301,"name":"IMirror","nameLocations":["539:7:173"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"539:7:173"},"referencedDeclaration":74395,"src":"539:7:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"visibility":"internal"}],"src":"538:25:173"},"returnParameters":{"id":86305,"nodeType":"ParameterList","parameters":[],"src":"564:0:173"},"scope":86391,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":86318,"nodeType":"ModifierDefinition","src":"621:79:173","nodes":[],"body":{"id":86317,"nodeType":"Block","src":"651:49:173","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":86313,"name":"_onlyVaraEthProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86334,"src":"661:19:173","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":86314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"661:21:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86315,"nodeType":"ExpressionStatement","src":"661:21:173"},{"id":86316,"nodeType":"PlaceholderStatement","src":"692:1:173"}]},"name":"onlyVaraEthProgram","nameLocation":"630:18:173","parameters":{"id":86312,"nodeType":"ParameterList","parameters":[],"src":"648:2:173"},"virtual":false,"visibility":"internal"},{"id":86334,"nodeType":"FunctionDefinition","src":"706:158:173","nodes":[],"body":{"id":86333,"nodeType":"Block","src":"751:113:173","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":86327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86321,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"765:3:173","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":86322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"769:6:173","memberName":"sender","nodeType":"MemberAccess","src":"765:10:173","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":86325,"name":"VARA_ETH_PROGRAM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86282,"src":"787:16:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}],"id":86324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"779:7:173","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":86323,"name":"address","nodeType":"ElementaryTypeName","src":"779:7:173","typeDescriptions":{}}},"id":86326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"779:25:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"765:39:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86332,"nodeType":"IfStatement","src":"761:97:173","trueBody":{"id":86331,"nodeType":"Block","src":"806:52:173","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":86328,"name":"UnauthorizedCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86300,"src":"827:18:173","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"827:20:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":86330,"nodeType":"RevertStatement","src":"820:27:173"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyVaraEthProgram","nameLocation":"715:19:173","parameters":{"id":86319,"nodeType":"ParameterList","parameters":[],"src":"734:2:173"},"returnParameters":{"id":86320,"nodeType":"ParameterList","parameters":[],"src":"751:0:173"},"scope":86391,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":86351,"nodeType":"FunctionDefinition","src":"870:146:173","nodes":[],"body":{"id":86350,"nodeType":"Block","src":"931:85:173","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":86345,"name":"isPanic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86336,"src":"994:7:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":86343,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"977:3:173","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":86344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"981:12:173","memberName":"encodePacked","nodeType":"MemberAccess","src":"977:16:173","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":86346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"977:25:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":86347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1004:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":86341,"name":"VARA_ETH_PROGRAM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86282,"src":"948:16:173","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":86342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"965:11:173","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":74335,"src":"948:28:173","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":86348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:61:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86340,"id":86349,"nodeType":"Return","src":"941:68:173"}]},"functionSelector":"96b3d5a9","implemented":true,"kind":"function","modifiers":[],"name":"methodName","nameLocation":"879:10:173","parameters":{"id":86337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86336,"mutability":"mutable","name":"isPanic","nameLocation":"895:7:173","nodeType":"VariableDeclaration","scope":86351,"src":"890:12:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86335,"name":"bool","nodeType":"ElementaryTypeName","src":"890:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"889:14:173"},"returnParameters":{"id":86340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86351,"src":"922:7:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86338,"name":"bytes32","nodeType":"ElementaryTypeName","src":"922:7:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"921:9:173"},"scope":86391,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":86368,"nodeType":"FunctionDefinition","src":"1081:166:173","nodes":[],"body":{"id":86367,"nodeType":"Block","src":"1156:91:173","nodes":[],"statements":[{"expression":{"id":86361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86359,"name":"replyOnMethodNameCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86284,"src":"1166:23:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":86360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1192:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1166:30:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86362,"nodeType":"ExpressionStatement","src":"1166:30:173"},{"eventCall":{"arguments":[{"id":86364,"name":"messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86354,"src":"1230:9:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":86363,"name":"MethodNameReplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86290,"src":"1212:17:173","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":86365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:28:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86366,"nodeType":"EmitStatement","src":"1207:33:173"}]},"baseFunctions":[86403],"documentation":{"id":86352,"nodeType":"StructuredDocumentation","src":"1022:54:173","text":"forge-lint: disable-next-line(mixed-case-function)"},"functionSelector":"b52ab555","implemented":true,"kind":"function","modifiers":[{"id":86357,"kind":"modifierInvocation","modifierName":{"id":86356,"name":"onlyVaraEthProgram","nameLocations":["1137:18:173"],"nodeType":"IdentifierPath","referencedDeclaration":86318,"src":"1137:18:173"},"nodeType":"ModifierInvocation","src":"1137:18:173"}],"name":"replyOn_methodName","nameLocation":"1090:18:173","parameters":{"id":86355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86354,"mutability":"mutable","name":"messageId","nameLocation":"1117:9:173","nodeType":"VariableDeclaration","scope":86368,"src":"1109:17:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1108:19:173"},"returnParameters":{"id":86358,"nodeType":"ParameterList","parameters":[],"src":"1156:0:173"},"scope":86391,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":86390,"nodeType":"FunctionDefinition","src":"1253:248:173","nodes":[],"body":{"id":86389,"nodeType":"Block","src":"1400:101:173","nodes":[],"statements":[{"expression":{"id":86381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86379,"name":"onErrorReplyCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86286,"src":"1410:18:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":86380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1431:4:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1410:25:173","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86382,"nodeType":"ExpressionStatement","src":"1410:25:173"},{"eventCall":{"arguments":[{"id":86384,"name":"messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86370,"src":"1464:9:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86385,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86372,"src":"1475:7:173","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":86386,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86374,"src":"1484:9:173","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":86383,"name":"ErrorReplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86298,"src":"1451:12:173","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$","typeString":"function (bytes32,bytes memory,bytes4)"}},"id":86387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:43:173","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86388,"nodeType":"EmitStatement","src":"1446:48:173"}]},"baseFunctions":[73741],"functionSelector":"4a646c7f","implemented":true,"kind":"function","modifiers":[{"id":86377,"kind":"modifierInvocation","modifierName":{"id":86376,"name":"onlyVaraEthProgram","nameLocations":["1377:18:173"],"nodeType":"IdentifierPath","referencedDeclaration":86318,"src":"1377:18:173"},"nodeType":"ModifierInvocation","src":"1377:18:173"}],"name":"onErrorReply","nameLocation":"1262:12:173","parameters":{"id":86375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86370,"mutability":"mutable","name":"messageId","nameLocation":"1283:9:173","nodeType":"VariableDeclaration","scope":86390,"src":"1275:17:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86369,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1275:7:173","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":86372,"mutability":"mutable","name":"payload","nameLocation":"1309:7:173","nodeType":"VariableDeclaration","scope":86390,"src":"1294:22:173","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":86371,"name":"bytes","nodeType":"ElementaryTypeName","src":"1294:5:173","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":86374,"mutability":"mutable","name":"replyCode","nameLocation":"1325:9:173","nodeType":"VariableDeclaration","scope":86390,"src":"1318:16:173","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":86373,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1318:6:173","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1274:61:173"},"returnParameters":{"id":86378,"nodeType":"ParameterList","parameters":[],"src":"1400:0:173"},"scope":86391,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":86278,"name":"IDemoCallbacks","nameLocations":["221:14:173"],"nodeType":"IdentifierPath","referencedDeclaration":86404,"src":"221:14:173"},"id":86279,"nodeType":"InheritanceSpecifier","src":"221:14:173"}],"canonicalName":"DemoCaller","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[86391,86404,73742],"name":"DemoCaller","nameLocation":"207:10:173","scope":86392,"usedErrors":[86300],"usedEvents":[86290,86298]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":173} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_varaEthProgram","type":"address","internalType":"contract IMirror"}],"stateMutability":"nonpayable"},{"type":"function","name":"VARA_ETH_PROGRAM","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMirror"}],"stateMutability":"view"},{"type":"function","name":"methodName","inputs":[{"name":"isPanic","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"onErrorReply","inputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"replyCode","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onErrorReplyCalled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"replyOnMethodNameCalled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"replyOn_methodName","inputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ErrorReplied","inputs":[{"name":"messageId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"replyCode","type":"bytes4","indexed":false,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"MethodNameReplied","inputs":[{"name":"messageId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"error","name":"UnauthorizedCaller","inputs":[]}],"bytecode":{"object":"0x60a034607357601f61040d38819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b0381168103607357608052604051610381908161008c823960805181818160700152818161019b01526103420152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80634a646c7f146102375780638ed2570c1461021357806396b3d5a914610116578063b52ab555146100c4578063d24012f8146100a35763dab506b21461005b575f80fd5b3461009f575f36600319011261009f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b3461009f575f36600319011261009f57602060ff5f54166040519015158152f35b3461009f57602036600319011261009f576100dd610340565b600160ff195f5416175f557fe84f069632bb62380c2db01d855c4a504e087d71add44c3639386496f56fcfd260206040516004358152a1005b3461009f57602036600319011261009f5760043580151580910361009f5760206040518181019260f81b83526001815261015160218261030a565b6064604051809481936242129d60e81b8352604060048401525180918160448501528484015e5f83828401015260016024830152601f801991011681010301815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610208575f906101d5575b602090604051908152f35b506020813d602011610200575b816101ef6020938361030a565b8101031261009f57602090516101ca565b3d91506101e2565b6040513d5f823e3d90fd5b3461009f575f36600319011261009f57602060ff5f5460081c166040519015158152f35b606036600319011261009f5760243567ffffffffffffffff811161009f573660238201121561009f57806004013567ffffffffffffffff811161009f57366024828401011161009f5760443563ffffffff60e01b811680910361009f577f71e1710f6581d7e128cb38d25b5ea07b760f138a9073096c50be9c23d0f2b45e926024926080926102c4610340565b61010061ff00195f5416175f558160405195869460043586526060602087015282606087015201858501375f8383018501526040830152601f01601f19168101030190a1005b90601f8019910116810190811067ffffffffffffffff82111761032c57604052565b634e487b7160e01b5f52604160045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361037257565b635c427cd960e01b5f5260045ffd","sourceMap":"198:1305:175:-:0;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;;-1:-1:-1;;;;;198:1305:175;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;198:1305:175;;;;;;574:34;;198:1305;;;;;;;;574:34;198:1305;;;;;;;;;;;;;;;;;-1:-1:-1;198:1305:175;;;;;;-1:-1:-1;198:1305:175;;;;;-1:-1:-1;198:1305:175","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80634a646c7f146102375780638ed2570c1461021357806396b3d5a914610116578063b52ab555146100c4578063d24012f8146100a35763dab506b21461005b575f80fd5b3461009f575f36600319011261009f576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f80fd5b3461009f575f36600319011261009f57602060ff5f54166040519015158152f35b3461009f57602036600319011261009f576100dd610340565b600160ff195f5416175f557fe84f069632bb62380c2db01d855c4a504e087d71add44c3639386496f56fcfd260206040516004358152a1005b3461009f57602036600319011261009f5760043580151580910361009f5760206040518181019260f81b83526001815261015160218261030a565b6064604051809481936242129d60e81b8352604060048401525180918160448501528484015e5f83828401015260016024830152601f801991011681010301815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610208575f906101d5575b602090604051908152f35b506020813d602011610200575b816101ef6020938361030a565b8101031261009f57602090516101ca565b3d91506101e2565b6040513d5f823e3d90fd5b3461009f575f36600319011261009f57602060ff5f5460081c166040519015158152f35b606036600319011261009f5760243567ffffffffffffffff811161009f573660238201121561009f57806004013567ffffffffffffffff811161009f57366024828401011161009f5760443563ffffffff60e01b811680910361009f577f71e1710f6581d7e128cb38d25b5ea07b760f138a9073096c50be9c23d0f2b45e926024926080926102c4610340565b61010061ff00195f5416175f558160405195869460043586526060602087015282606087015201858501375f8383018501526040830152601f01601f19168101030190a1005b90601f8019910116810190811067ffffffffffffffff82111761032c57604052565b634e487b7160e01b5f52604160045260245ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361037257565b635c427cd960e01b5f5260045ffd","sourceMap":"198:1305:175:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;;;;242:41;-1:-1:-1;;;;;198:1305:175;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;;621:79;;:::i;:::-;198:1305;;;;;;;;;1212:28;198:1305;;;;;;;1212:28;198:1305;;;;;;;-1:-1:-1;;198:1305:175;;;;;;;;;;;;;;;;;977:25;;;198:1305;;;;;;977:25;;;;;;:::i;:::-;198:1305;;;;;;;;;;948:61;;198:1305;;948:61;;198:1305;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;948:61;;198:1305;;;;;;;948:16;198:1305;948:61;;;;;;198:1305;948:61;;;198:1305;;;;;;;;;948:61;;198:1305;948:61;;198:1305;948:61;;;;;;198:1305;948:61;;;:::i;:::-;;;198:1305;;;;;;;948:61;;;;;-1:-1:-1;948:61:175;;;198:1305;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:43;621:79;198:1305;621:79;198:1305;621:79;;;:::i;:::-;198:1305;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;198:1305:175;;;1451:43;;;;198:1305;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;198:1305:175;;;;;-1:-1:-1;198:1305:175;706:158;787:16;-1:-1:-1;;;;;198:1305:175;765:10;:39;761:97;;706:158::o;761:97::-;827:20;;;;;;;","linkReferences":{},"immutableReferences":{"90812":[{"start":112,"length":32},{"start":411,"length":32},{"start":834,"length":32}]}},"methodIdentifiers":{"VARA_ETH_PROGRAM()":"dab506b2","methodName(bool)":"96b3d5a9","onErrorReply(bytes32,bytes,bytes4)":"4a646c7f","onErrorReplyCalled()":"8ed2570c","replyOnMethodNameCalled()":"d24012f8","replyOn_methodName(bytes32)":"b52ab555"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IMirror\",\"name\":\"_varaEthProgram\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"ErrorReplied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"MethodNameReplied\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"VARA_ETH_PROGRAM\",\"outputs\":[{\"internalType\":\"contract IMirror\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isPanic\",\"type\":\"bool\"}],\"name\":\"methodName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"onErrorReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onErrorReplyCalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"replyOnMethodNameCalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"name\":\"replyOn_methodName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onErrorReply(bytes32,bytes,bytes4)\":{\"details\":\"If reply is received, this method will be called by Mirror smart contract, but only if `gear_core::rpc::ReplyInfo` contains `gear_core::message::ReplyCode` that has `ReplyCode::Error(_)` variant.Currently this method has gas limit of 500_000 in order to prevent DoS attacks. Gas limit is proposed to be removed in the future when we switch to merkle roots approach for messages.\",\"params\":{\"messageId\":\"Message ID of reply, generated by `MessageId::generate_reply(replied_to)` in Rust-side.\",\"payload\":\"Payload of reply (e.g., error message in case of `UserspacePanic`).\",\"replyCode\":\"Reply code of reply (`gear_core::message::ReplyCode.to_bytes()`).\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"replyOn_methodName(bytes32)\":{\"notice\":\"forge-lint: disable-next-line(mixed-case-function)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/DemoCaller.sol\":\"DemoCaller\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/ICallbacks.sol\":{\"keccak256\":\"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf\",\"dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"test/DemoCaller.sol\":{\"keccak256\":\"0x42ef529fac84a409b712e6b6a94ee0b3852a351c5edb7849035876745a26cb97\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://b24118f80827fd8da316e7d22dc33928f5bb5f29027826938b3d89b4a58ec186\",\"dweb:/ipfs/QmYr1hKiJ9ku7T4uFAvnE8dACtrobV2C3sMaWvQB92j9Kz\"]},\"test/IDemoCallbacks.sol\":{\"keccak256\":\"0xd76edaaf6eded433143f382e16fa35681616537df11f7108178763874539fa46\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d952ba6f3e3bc017740605a47121b8ddf0b447ceec72de5dc75a6c323a1f413d\",\"dweb:/ipfs/QmUY6LM6Uya3vn1AAzziAtfgEsp5YeMCF6GNo7jSpSgDDU\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IMirror","name":"_varaEthProgram","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"UnauthorizedCaller"},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32","indexed":false},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":false}],"type":"event","name":"ErrorReplied","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32","indexed":false}],"type":"event","name":"MethodNameReplied","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"VARA_ETH_PROGRAM","outputs":[{"internalType":"contract IMirror","name":"","type":"address"}]},{"inputs":[{"internalType":"bool","name":"isPanic","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"methodName","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes4","name":"replyCode","type":"bytes4"}],"stateMutability":"payable","type":"function","name":"onErrorReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"onErrorReplyCalled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"replyOnMethodNameCalled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"replyOn_methodName"}],"devdoc":{"kind":"dev","methods":{"onErrorReply(bytes32,bytes,bytes4)":{"details":"If reply is received, this method will be called by Mirror smart contract, but only if `gear_core::rpc::ReplyInfo` contains `gear_core::message::ReplyCode` that has `ReplyCode::Error(_)` variant.Currently this method has gas limit of 500_000 in order to prevent DoS attacks. Gas limit is proposed to be removed in the future when we switch to merkle roots approach for messages.","params":{"messageId":"Message ID of reply, generated by `MessageId::generate_reply(replied_to)` in Rust-side.","payload":"Payload of reply (e.g., error message in case of `UserspacePanic`).","replyCode":"Reply code of reply (`gear_core::message::ReplyCode.to_bytes()`)."}}},"version":1},"userdoc":{"kind":"user","methods":{"replyOn_methodName(bytes32)":{"notice":"forge-lint: disable-next-line(mixed-case-function)"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"test/DemoCaller.sol":"DemoCaller"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/ICallbacks.sol":{"keccak256":"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0","urls":["bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf","dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"test/DemoCaller.sol":{"keccak256":"0x42ef529fac84a409b712e6b6a94ee0b3852a351c5edb7849035876745a26cb97","urls":["bzz-raw://b24118f80827fd8da316e7d22dc33928f5bb5f29027826938b3d89b4a58ec186","dweb:/ipfs/QmYr1hKiJ9ku7T4uFAvnE8dACtrobV2C3sMaWvQB92j9Kz"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"test/IDemoCallbacks.sol":{"keccak256":"0xd76edaaf6eded433143f382e16fa35681616537df11f7108178763874539fa46","urls":["bzz-raw://d952ba6f3e3bc017740605a47121b8ddf0b447ceec72de5dc75a6c323a1f413d","dweb:/ipfs/QmUY6LM6Uya3vn1AAzziAtfgEsp5YeMCF6GNo7jSpSgDDU"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":90814,"contract":"test/DemoCaller.sol:DemoCaller","label":"replyOnMethodNameCalled","offset":0,"slot":"0","type":"t_bool"},{"astId":90816,"contract":"test/DemoCaller.sol:DemoCaller","label":"onErrorReplyCalled","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"}}},"ast":{"absolutePath":"test/DemoCaller.sol","id":90922,"exportedSymbols":{"DemoCaller":[90921],"IDemoCallbacks":[90934],"IMirror":[74395]},"nodeType":"SourceUnit","src":"74:1430:175","nodes":[{"id":90803,"nodeType":"PragmaDirective","src":"74:24:175","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":90805,"nodeType":"ImportDirective","src":"100:40:175","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":90922,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":90804,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"108:7:175","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90807,"nodeType":"ImportDirective","src":"141:55:175","nodes":[],"absolutePath":"test/IDemoCallbacks.sol","file":"test/IDemoCallbacks.sol","nameLocation":"-1:-1:-1","scope":90922,"sourceUnit":90935,"symbolAliases":[{"foreign":{"id":90806,"name":"IDemoCallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90934,"src":"149:14:175","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90921,"nodeType":"ContractDefinition","src":"198:1305:175","nodes":[{"id":90812,"nodeType":"VariableDeclaration","src":"242:41:175","nodes":[],"constant":false,"functionSelector":"dab506b2","mutability":"immutable","name":"VARA_ETH_PROGRAM","nameLocation":"267:16:175","scope":90921,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"},"typeName":{"id":90811,"nodeType":"UserDefinedTypeName","pathNode":{"id":90810,"name":"IMirror","nameLocations":["242:7:175"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"242:7:175"},"referencedDeclaration":74395,"src":"242:7:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"visibility":"public"},{"id":90814,"nodeType":"VariableDeclaration","src":"290:35:175","nodes":[],"constant":false,"functionSelector":"d24012f8","mutability":"mutable","name":"replyOnMethodNameCalled","nameLocation":"302:23:175","scope":90921,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90813,"name":"bool","nodeType":"ElementaryTypeName","src":"290:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":90816,"nodeType":"VariableDeclaration","src":"331:30:175","nodes":[],"constant":false,"functionSelector":"8ed2570c","mutability":"mutable","name":"onErrorReplyCalled","nameLocation":"343:18:175","scope":90921,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90815,"name":"bool","nodeType":"ElementaryTypeName","src":"331:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":90820,"nodeType":"EventDefinition","src":"368:43:175","nodes":[],"anonymous":false,"eventSelector":"e84f069632bb62380c2db01d855c4a504e087d71add44c3639386496f56fcfd2","name":"MethodNameReplied","nameLocation":"374:17:175","parameters":{"id":90819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90818,"indexed":false,"mutability":"mutable","name":"messageId","nameLocation":"400:9:175","nodeType":"VariableDeclaration","scope":90820,"src":"392:17:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"392:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"391:19:175"}},{"id":90828,"nodeType":"EventDefinition","src":"417:71:175","nodes":[],"anonymous":false,"eventSelector":"71e1710f6581d7e128cb38d25b5ea07b760f138a9073096c50be9c23d0f2b45e","name":"ErrorReplied","nameLocation":"423:12:175","parameters":{"id":90827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90822,"indexed":false,"mutability":"mutable","name":"messageId","nameLocation":"444:9:175","nodeType":"VariableDeclaration","scope":90828,"src":"436:17:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"436:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":90824,"indexed":false,"mutability":"mutable","name":"payload","nameLocation":"461:7:175","nodeType":"VariableDeclaration","scope":90828,"src":"455:13:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90823,"name":"bytes","nodeType":"ElementaryTypeName","src":"455:5:175","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":90826,"indexed":false,"mutability":"mutable","name":"replyCode","nameLocation":"477:9:175","nodeType":"VariableDeclaration","scope":90828,"src":"470:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90825,"name":"bytes4","nodeType":"ElementaryTypeName","src":"470:6:175","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"435:52:175"}},{"id":90830,"nodeType":"ErrorDefinition","src":"494:27:175","nodes":[],"errorSelector":"5c427cd9","name":"UnauthorizedCaller","nameLocation":"500:18:175","parameters":{"id":90829,"nodeType":"ParameterList","parameters":[],"src":"518:2:175"}},{"id":90841,"nodeType":"FunctionDefinition","src":"527:88:175","nodes":[],"body":{"id":90840,"nodeType":"Block","src":"564:51:175","nodes":[],"statements":[{"expression":{"id":90838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90836,"name":"VARA_ETH_PROGRAM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90812,"src":"574:16:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":90837,"name":"_varaEthProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90833,"src":"593:15:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"src":"574:34:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":90839,"nodeType":"ExpressionStatement","src":"574:34:175"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90833,"mutability":"mutable","name":"_varaEthProgram","nameLocation":"547:15:175","nodeType":"VariableDeclaration","scope":90841,"src":"539:23:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"},"typeName":{"id":90832,"nodeType":"UserDefinedTypeName","pathNode":{"id":90831,"name":"IMirror","nameLocations":["539:7:175"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"539:7:175"},"referencedDeclaration":74395,"src":"539:7:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"visibility":"internal"}],"src":"538:25:175"},"returnParameters":{"id":90835,"nodeType":"ParameterList","parameters":[],"src":"564:0:175"},"scope":90921,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90848,"nodeType":"ModifierDefinition","src":"621:79:175","nodes":[],"body":{"id":90847,"nodeType":"Block","src":"651:49:175","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":90843,"name":"_onlyVaraEthProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90864,"src":"661:19:175","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":90844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"661:21:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90845,"nodeType":"ExpressionStatement","src":"661:21:175"},{"id":90846,"nodeType":"PlaceholderStatement","src":"692:1:175"}]},"name":"onlyVaraEthProgram","nameLocation":"630:18:175","parameters":{"id":90842,"nodeType":"ParameterList","parameters":[],"src":"648:2:175"},"virtual":false,"visibility":"internal"},{"id":90864,"nodeType":"FunctionDefinition","src":"706:158:175","nodes":[],"body":{"id":90863,"nodeType":"Block","src":"751:113:175","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":90851,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"765:3:175","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"769:6:175","memberName":"sender","nodeType":"MemberAccess","src":"765:10:175","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":90855,"name":"VARA_ETH_PROGRAM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90812,"src":"787:16:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}],"id":90854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"779:7:175","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90853,"name":"address","nodeType":"ElementaryTypeName","src":"779:7:175","typeDescriptions":{}}},"id":90856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"779:25:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"765:39:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90862,"nodeType":"IfStatement","src":"761:97:175","trueBody":{"id":90861,"nodeType":"Block","src":"806:52:175","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":90858,"name":"UnauthorizedCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90830,"src":"827:18:175","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":90859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"827:20:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":90860,"nodeType":"RevertStatement","src":"820:27:175"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyVaraEthProgram","nameLocation":"715:19:175","parameters":{"id":90849,"nodeType":"ParameterList","parameters":[],"src":"734:2:175"},"returnParameters":{"id":90850,"nodeType":"ParameterList","parameters":[],"src":"751:0:175"},"scope":90921,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":90881,"nodeType":"FunctionDefinition","src":"870:146:175","nodes":[],"body":{"id":90880,"nodeType":"Block","src":"931:85:175","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":90875,"name":"isPanic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90866,"src":"994:7:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":90873,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"977:3:175","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":90874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"981:12:175","memberName":"encodePacked","nodeType":"MemberAccess","src":"977:16:175","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":90876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"977:25:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"74727565","id":90877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1004:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":90871,"name":"VARA_ETH_PROGRAM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90812,"src":"948:16:175","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":90872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"965:11:175","memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":74335,"src":"948:28:175","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes memory,bool) payable external returns (bytes32)"}},"id":90878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:61:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":90870,"id":90879,"nodeType":"Return","src":"941:68:175"}]},"functionSelector":"96b3d5a9","implemented":true,"kind":"function","modifiers":[],"name":"methodName","nameLocation":"879:10:175","parameters":{"id":90867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90866,"mutability":"mutable","name":"isPanic","nameLocation":"895:7:175","nodeType":"VariableDeclaration","scope":90881,"src":"890:12:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":90865,"name":"bool","nodeType":"ElementaryTypeName","src":"890:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"889:14:175"},"returnParameters":{"id":90870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90881,"src":"922:7:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"922:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"921:9:175"},"scope":90921,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90898,"nodeType":"FunctionDefinition","src":"1081:166:175","nodes":[],"body":{"id":90897,"nodeType":"Block","src":"1156:91:175","nodes":[],"statements":[{"expression":{"id":90891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90889,"name":"replyOnMethodNameCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90814,"src":"1166:23:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":90890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1192:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1166:30:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90892,"nodeType":"ExpressionStatement","src":"1166:30:175"},{"eventCall":{"arguments":[{"id":90894,"name":"messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90884,"src":"1230:9:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":90893,"name":"MethodNameReplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90820,"src":"1212:17:175","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":90895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1212:28:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90896,"nodeType":"EmitStatement","src":"1207:33:175"}]},"baseFunctions":[90933],"documentation":{"id":90882,"nodeType":"StructuredDocumentation","src":"1022:54:175","text":"forge-lint: disable-next-line(mixed-case-function)"},"functionSelector":"b52ab555","implemented":true,"kind":"function","modifiers":[{"id":90887,"kind":"modifierInvocation","modifierName":{"id":90886,"name":"onlyVaraEthProgram","nameLocations":["1137:18:175"],"nodeType":"IdentifierPath","referencedDeclaration":90848,"src":"1137:18:175"},"nodeType":"ModifierInvocation","src":"1137:18:175"}],"name":"replyOn_methodName","nameLocation":"1090:18:175","parameters":{"id":90885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90884,"mutability":"mutable","name":"messageId","nameLocation":"1117:9:175","nodeType":"VariableDeclaration","scope":90898,"src":"1109:17:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1108:19:175"},"returnParameters":{"id":90888,"nodeType":"ParameterList","parameters":[],"src":"1156:0:175"},"scope":90921,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":90920,"nodeType":"FunctionDefinition","src":"1253:248:175","nodes":[],"body":{"id":90919,"nodeType":"Block","src":"1400:101:175","nodes":[],"statements":[{"expression":{"id":90911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":90909,"name":"onErrorReplyCalled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90816,"src":"1410:18:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":90910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1431:4:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1410:25:175","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":90912,"nodeType":"ExpressionStatement","src":"1410:25:175"},{"eventCall":{"arguments":[{"id":90914,"name":"messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90900,"src":"1464:9:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":90915,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90902,"src":"1475:7:175","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":90916,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90904,"src":"1484:9:175","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":90913,"name":"ErrorReplied","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90828,"src":"1451:12:175","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes4_$returns$__$","typeString":"function (bytes32,bytes memory,bytes4)"}},"id":90917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1451:43:175","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90918,"nodeType":"EmitStatement","src":"1446:48:175"}]},"baseFunctions":[73741],"functionSelector":"4a646c7f","implemented":true,"kind":"function","modifiers":[{"id":90907,"kind":"modifierInvocation","modifierName":{"id":90906,"name":"onlyVaraEthProgram","nameLocations":["1377:18:175"],"nodeType":"IdentifierPath","referencedDeclaration":90848,"src":"1377:18:175"},"nodeType":"ModifierInvocation","src":"1377:18:175"}],"name":"onErrorReply","nameLocation":"1262:12:175","parameters":{"id":90905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90900,"mutability":"mutable","name":"messageId","nameLocation":"1283:9:175","nodeType":"VariableDeclaration","scope":90920,"src":"1275:17:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":90899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1275:7:175","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":90902,"mutability":"mutable","name":"payload","nameLocation":"1309:7:175","nodeType":"VariableDeclaration","scope":90920,"src":"1294:22:175","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90901,"name":"bytes","nodeType":"ElementaryTypeName","src":"1294:5:175","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":90904,"mutability":"mutable","name":"replyCode","nameLocation":"1325:9:175","nodeType":"VariableDeclaration","scope":90920,"src":"1318:16:175","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":90903,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1318:6:175","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1274:61:175"},"returnParameters":{"id":90908,"nodeType":"ParameterList","parameters":[],"src":"1400:0:175"},"scope":90921,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":90808,"name":"IDemoCallbacks","nameLocations":["221:14:175"],"nodeType":"IdentifierPath","referencedDeclaration":90934,"src":"221:14:175"},"id":90809,"nodeType":"InheritanceSpecifier","src":"221:14:175"}],"canonicalName":"DemoCaller","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[90921,90934,73742],"name":"DemoCaller","nameLocation":"207:10:175","scope":90922,"usedErrors":[90830],"usedEvents":[90820,90828]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":175} \ No newline at end of file diff --git a/ethexe/ethereum/abi/ERC1967Proxy.json b/ethexe/ethereum/abi/ERC1967Proxy.json index 85e614af5fd..7f2ddb61d70 100644 --- a/ethexe/ethereum/abi/ERC1967Proxy.json +++ b/ethexe/ethereum/abi/ERC1967Proxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]}],"bytecode":{"object":"0x60806040526102678038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051604c908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffd","sourceMap":"600:1117:52:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;600:1117:52;;;;;;;;;;;;;;;;-1:-1:-1;;;;;600:1117:52;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;600:1117:52;;;;;;;;;;;1748:29:53;;:34;1744:119;;811:66;;;-1:-1:-1;;;;;;811:66:53;;;;;2407:36;-1:-1:-1;;2407:36:53;600:1117:52;;2458:15:53;:11;;-1:-1:-1;4065:25:66;;4107:55;4065:25;;;;;;600:1117:52;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;600:1117:52;;;;4107:55:66;:::i;:::-;;2454:148:53;600:1117:52;;;;;;;;;;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;2454:148;6159:70;6199:19;;;-1:-1:-1;6199:19:53;;-1:-1:-1;6199:19:53;1744:119;1805:47;;;-1:-1:-1;1805:47:53;;600:1117:52;;-1:-1:-1;1805:47:53;600:1117:52;-1:-1:-1;600:1117:52;;;;;;;;;-1:-1:-1;;600:1117:52;;;-1:-1:-1;;;;;600:1117:52;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;600:1117:52;;;;;-1:-1:-1;600:1117:52;;-1:-1:-1;;;;;600:1117:52;;;;;;-1:-1:-1;;600:1117:52;;;;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;600:1117:52;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;600:1117:52;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;600:1117:52;;;;4933:24:66;600:1117:52;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffd","sourceMap":"600:1117:52:-:0;;;811:66:53;;-1:-1:-1;;;;;;;;;811:66:53;1019:819:54;-1:-1:-1;;1019:819:54;;;;;;;-1:-1:-1;1019:819:54;;;;;;-1:-1:-1;1019:819:54;;;-1:-1:-1;1019:819:54","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":"ERC1967Proxy"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e","urls":["bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049","dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":45408,"exportedSymbols":{"ERC1967Proxy":[45407],"ERC1967Utils":[45701],"Proxy":[45737]},"nodeType":"SourceUnit","src":"114:1604:52","nodes":[{"id":45371,"nodeType":"PragmaDirective","src":"114:24:52","nodes":[],"literals":["solidity","^","0.8",".22"]},{"id":45373,"nodeType":"ImportDirective","src":"140:35:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"../Proxy.sol","nameLocation":"-1:-1:-1","scope":45408,"sourceUnit":45738,"symbolAliases":[{"foreign":{"id":45372,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45737,"src":"148:5:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":45375,"nodeType":"ImportDirective","src":"176:48:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":45408,"sourceUnit":45702,"symbolAliases":[{"foreign":{"id":45374,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"184:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":45407,"nodeType":"ContractDefinition","src":"600:1117:52","nodes":[{"id":45394,"nodeType":"FunctionDefinition","src":"1081:133:52","nodes":[],"body":{"id":45393,"nodeType":"Block","src":"1145:69:52","nodes":[],"statements":[{"expression":{"arguments":[{"id":45389,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45381,"src":"1185:14:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":45390,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45383,"src":"1201:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":45386,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"1155:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":45388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":45516,"src":"1155:29:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":45391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:52:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45392,"nodeType":"ExpressionStatement","src":"1155:52:52"}]},"documentation":{"id":45379,"nodeType":"StructuredDocumentation","src":"637:439:52","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":45384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45381,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:52","nodeType":"VariableDeclaration","scope":45394,"src":"1093:22:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45380,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45383,"mutability":"mutable","name":"_data","nameLocation":"1130:5:52","nodeType":"VariableDeclaration","scope":45394,"src":"1117:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45382,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:52"},"returnParameters":{"id":45385,"nodeType":"ParameterList","parameters":[],"src":"1145:0:52"},"scope":45407,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":45406,"nodeType":"FunctionDefinition","src":"1583:132:52","nodes":[],"body":{"id":45405,"nodeType":"Block","src":"1659:56:52","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":45401,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"1676:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":45402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:52","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":45453,"src":"1676:30:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":45403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":45400,"id":45404,"nodeType":"Return","src":"1669:39:52"}]},"baseFunctions":[45718],"documentation":{"id":45395,"nodeType":"StructuredDocumentation","src":"1220:358:52","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:52","overrides":{"id":45397,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:52"},"parameters":{"id":45396,"nodeType":"ParameterList","parameters":[],"src":"1607:2:52"},"returnParameters":{"id":45400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45406,"src":"1650:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45398,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:52"},"scope":45407,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":45377,"name":"Proxy","nameLocations":["625:5:52"],"nodeType":"IdentifierPath","referencedDeclaration":45737,"src":"625:5:52"},"id":45378,"nodeType":"InheritanceSpecifier","src":"625:5:52"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":45376,"nodeType":"StructuredDocumentation","src":"226:373:52","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"linearizedBaseContracts":[45407,45737],"name":"ERC1967Proxy","nameLocation":"609:12:52","scope":45408,"usedErrors":[45427,45440,47372,48774],"usedEvents":[44781]}],"license":"MIT"},"id":52} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]}],"bytecode":{"object":"0x60806040526102678038038061001481610168565b92833981016040828203126101645781516001600160a01b03811692909190838303610164576020810151906001600160401b03821161016457019281601f8501121561016457835161006e610069826101a1565b610168565b9481865260208601936020838301011161016457815f926020809301865e86010152823b15610152577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561013a575f8091610122945190845af43d15610132573d91610113610069846101a1565b9283523d5f602085013e6101bc565b505b604051604c908161021b8239f35b6060916101bc565b50505034156101245763b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761018d57604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b03811161018d57601f01601f191660200190565b906101e057508051156101d157602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580610211575b6101f1575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156101e956fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffd","sourceMap":"600:1117:52:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;600:1117:52;;;;;;;;;;;;;;;;-1:-1:-1;;;;;600:1117:52;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;600:1117:52;;;;;;;;;;;1748:29:53;;:34;1744:119;;811:66;;;-1:-1:-1;;;;;;811:66:53;;;;;2407:36;-1:-1:-1;;2407:36:53;600:1117:52;;2458:15:53;:11;;-1:-1:-1;4065:25:66;;4107:55;4065:25;;;;;;600:1117:52;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;600:1117:52;;;;4107:55:66;:::i;:::-;;2454:148:53;600:1117:52;;;;;;;;;;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;2454:148;6159:70;6199:19;;;-1:-1:-1;6199:19:53;;-1:-1:-1;6199:19:53;1744:119;1805:47;;;-1:-1:-1;1805:47:53;;600:1117:52;;-1:-1:-1;1805:47:53;600:1117:52;-1:-1:-1;600:1117:52;;;;;;;;;-1:-1:-1;;600:1117:52;;;-1:-1:-1;;;;;600:1117:52;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;600:1117:52;;;;;-1:-1:-1;600:1117:52;;-1:-1:-1;;;;;600:1117:52;;;;;;-1:-1:-1;;600:1117:52;;;;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;600:1117:52;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;600:1117:52;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;600:1117:52;;;;4933:24:66;600:1117:52;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156048573d5ff35b3d5ffd","sourceMap":"600:1117:52:-:0;;;811:66:53;;-1:-1:-1;;;;;;;;;811:66:53;1019:819:54;-1:-1:-1;;1019:819:54;;;;;;;-1:-1:-1;1019:819:54;;;;;;-1:-1:-1;1019:819:54;;;-1:-1:-1;1019:819:54","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":"ERC1967Proxy"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e","urls":["bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049","dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":45408,"exportedSymbols":{"ERC1967Proxy":[45407],"ERC1967Utils":[45701],"Proxy":[45737]},"nodeType":"SourceUnit","src":"114:1604:52","nodes":[{"id":45371,"nodeType":"PragmaDirective","src":"114:24:52","nodes":[],"literals":["solidity","^","0.8",".22"]},{"id":45373,"nodeType":"ImportDirective","src":"140:35:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"../Proxy.sol","nameLocation":"-1:-1:-1","scope":45408,"sourceUnit":45738,"symbolAliases":[{"foreign":{"id":45372,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45737,"src":"148:5:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":45375,"nodeType":"ImportDirective","src":"176:48:52","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":45408,"sourceUnit":45702,"symbolAliases":[{"foreign":{"id":45374,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"184:12:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":45407,"nodeType":"ContractDefinition","src":"600:1117:52","nodes":[{"id":45394,"nodeType":"FunctionDefinition","src":"1081:133:52","nodes":[],"body":{"id":45393,"nodeType":"Block","src":"1145:69:52","nodes":[],"statements":[{"expression":{"arguments":[{"id":45389,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45381,"src":"1185:14:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":45390,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45383,"src":"1201:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":45386,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"1155:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":45388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:52","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":45516,"src":"1155:29:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":45391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:52:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45392,"nodeType":"ExpressionStatement","src":"1155:52:52"}]},"documentation":{"id":45379,"nodeType":"StructuredDocumentation","src":"637:439:52","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":45384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45381,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:52","nodeType":"VariableDeclaration","scope":45394,"src":"1093:22:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45380,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":45383,"mutability":"mutable","name":"_data","nameLocation":"1130:5:52","nodeType":"VariableDeclaration","scope":45394,"src":"1117:18:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":45382,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:52"},"returnParameters":{"id":45385,"nodeType":"ParameterList","parameters":[],"src":"1145:0:52"},"scope":45407,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":45406,"nodeType":"FunctionDefinition","src":"1583:132:52","nodes":[],"body":{"id":45405,"nodeType":"Block","src":"1659:56:52","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":45401,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"1676:12:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":45402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:52","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":45453,"src":"1676:30:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":45403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":45400,"id":45404,"nodeType":"Return","src":"1669:39:52"}]},"baseFunctions":[45718],"documentation":{"id":45395,"nodeType":"StructuredDocumentation","src":"1220:358:52","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:52","overrides":{"id":45397,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:52"},"parameters":{"id":45396,"nodeType":"ParameterList","parameters":[],"src":"1607:2:52"},"returnParameters":{"id":45400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":45406,"src":"1650:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":45398,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:52"},"scope":45407,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":45377,"name":"Proxy","nameLocations":["625:5:52"],"nodeType":"IdentifierPath","referencedDeclaration":45737,"src":"625:5:52"},"id":45378,"nodeType":"InheritanceSpecifier","src":"625:5:52"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":45376,"nodeType":"StructuredDocumentation","src":"226:373:52","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"linearizedBaseContracts":[45407,45737],"name":"ERC1967Proxy","nameLocation":"609:12:52","scope":45408,"usedErrors":[45427,45440,47372,48774],"usedEvents":[44781]}],"license":"MIT"},"id":52} \ No newline at end of file diff --git a/ethexe/ethereum/abi/Gear.json b/ethexe/ethereum/abi/Gear.json index 81b9d138cc0..8857fceeefd 100644 --- a/ethexe/ethereum/abi/Gear.json +++ b/ethexe/ethereum/abi/Gear.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"COMPUTATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VALIDATORS_THRESHOLD_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"VALIDATORS_THRESHOLD_NUMERATOR","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"WVARA_PER_SECOND","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"error","name":"ErasTimestampMustNotBeEqual","inputs":[]},{"type":"error","name":"InvalidFrostSignatureCount","inputs":[]},{"type":"error","name":"InvalidFrostSignatureLength","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"TimestampOlderThanPreviousEra","inputs":[]},{"type":"error","name":"ValidationBeforeGenesis","inputs":[]},{"type":"error","name":"ValidatorsNotFoundForTimestamp","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760a19081601c823930815050f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c9081630279472c14608e575080632c184e1c1460745780637841919a14605c5763db3fe3f1146043575f80fd5b5f366003190112605857602060405160028152f35b5f80fd5b5f3660031901126058576020604051639502f9008152f35b5f36600319011260585760206040516509184e72a0008152f35b5f36600319011260585780600360209252f3","sourceMap":"1515:32292:169:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60808060405260043610156011575f80fd5b5f3560e01c9081630279472c14608e575080632c184e1c1460745780637841919a14605c5763db3fe3f1146043575f80fd5b5f366003190112605857602060405160028152f35b5f80fd5b5f3660031901126058576020604051639502f9008152f35b5f36600319011260585760206040516509184e72a0008152f35b5f36600319011260585780600360209252f3","sourceMap":"1515:32292:169:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1515:32292:169;;;;;;;2071:1;1515:32292;;;;;;;;;;-1:-1:-1;;1515:32292:169;;;;;;;1855:13;1515:32292;;;;;;-1:-1:-1;;1515:32292:169;;;;;;;2383:18;1515:32292;;;;;;-1:-1:-1;;1515:32292:169;;;;;2203:1;1515:32292;;;","linkReferences":{}},"methodIdentifiers":{"COMPUTATION_THRESHOLD()":"7841919a","VALIDATORS_THRESHOLD_DENOMINATOR()":"0279472c","VALIDATORS_THRESHOLD_NUMERATOR()":"db3fe3f1","WVARA_PER_SECOND()":"2c184e1c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ErasTimestampMustNotBeEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampOlderThanPreviousEra\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationBeforeGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsNotFoundForTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"COMPUTATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_THRESHOLD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_THRESHOLD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WVARA_PER_SECOND\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Library for core protocol utility functions for hashing, validation, and consensus-related logic. It provides: - Canonical hashing functions for protocol entities (messages, value claims, batch/code commitments, state transitions) - Validator set management with era-based switching and threshold configuration - Signature verification support for FROST aggregated signatures and ECDSA threshold signatures with transient storage to prevent double counting of signatures - Era and timeline utilities for selecting correct validator sets based on timestamp The library acts as a shared foundation for consensus, validation, and commitment verification across all protocol components.\",\"errors\":{\"ErasTimestampMustNotBeEqual()\":[{\"details\":\"Thrown when the timestamp of an era is equal to the timestamp of the previous era. Should never happen, because the implementation.\"}],\"InvalidFrostSignatureCount()\":[{\"details\":\"Thrown when the number of FROST signatures is invalid.\"}],\"InvalidFrostSignatureLength()\":[{\"details\":\"Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes.\"}],\"TimestampInFuture()\":[{\"details\":\"Thrown when the timestamp is in the future.\"}],\"TimestampOlderThanPreviousEra()\":[{\"details\":\"Thrown when the timestamp is older than the previous era.\"}],\"ValidationBeforeGenesis()\":[{\"details\":\"Thrown when signature validation is attempted before the genesis block.\"}],\"ValidatorsNotFoundForTimestamp()\":[{\"details\":\"Thrown when no validators are found for a given timestamp. Should never happen, because the implementation.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"COMPUTATION_THRESHOLD\":{\"details\":\"The threshold for computation cost in gear gas. 2.5 * (10 ** 9) of gear gas.\"},\"VALIDATORS_THRESHOLD_DENOMINATOR\":{\"details\":\"The validators threshold denominator.\"},\"VALIDATORS_THRESHOLD_NUMERATOR\":{\"details\":\"2/3 of validators must sign the commitment for it to be valid.The validators threshold numerator.\"},\"WVARA_PER_SECOND\":{\"details\":\"The amount of WVara tokens to be paid per compute second. 10 WVARA tokens per compute second.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Gear.sol\":\"Gear\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ErasTimestampMustNotBeEqual"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureCount"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureLength"},{"inputs":[],"type":"error","name":"TimestampInFuture"},{"inputs":[],"type":"error","name":"TimestampOlderThanPreviousEra"},{"inputs":[],"type":"error","name":"ValidationBeforeGenesis"},{"inputs":[],"type":"error","name":"ValidatorsNotFoundForTimestamp"},{"inputs":[],"stateMutability":"view","type":"function","name":"COMPUTATION_THRESHOLD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VALIDATORS_THRESHOLD_DENOMINATOR","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VALIDATORS_THRESHOLD_NUMERATOR","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WVARA_PER_SECOND","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/libraries/Gear.sol":"Gear"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/libraries/Gear.sol","id":84059,"exportedSymbols":{"ECDSA":[51038],"FROST":[40965],"Gear":[84058],"Hashes":[41483],"IRouter":[74985],"MessageHashUtils":[52237],"SafeCast":[55635],"SlotDerivation":[48965],"Time":[60343],"TransientSlot":[50690]},"nodeType":"SourceUnit","src":"74:33734:169","nodes":[{"id":82806,"nodeType":"PragmaDirective","src":"74:24:169","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":82808,"nodeType":"ImportDirective","src":"100:80:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":82807,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"108:14:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82810,"nodeType":"ImportDirective","src":"181:78:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol","file":"@openzeppelin/contracts/utils/TransientSlot.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":50691,"symbolAliases":[{"foreign":{"id":82809,"name":"TransientSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50690,"src":"189:13:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82812,"nodeType":"ImportDirective","src":"260:75:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":51039,"symbolAliases":[{"foreign":{"id":82811,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"268:5:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82814,"nodeType":"ImportDirective","src":"336:97:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":52238,"symbolAliases":[{"foreign":{"id":82813,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52237,"src":"344:16:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82816,"nodeType":"ImportDirective","src":"434:73:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":55636,"symbolAliases":[{"foreign":{"id":82815,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55635,"src":"442:8:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82818,"nodeType":"ImportDirective","src":"508:66:169","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/types/Time.sol","file":"@openzeppelin/contracts/utils/types/Time.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":60344,"symbolAliases":[{"foreign":{"id":82817,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"516:4:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82820,"nodeType":"ImportDirective","src":"575:52:169","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/FROST.sol","file":"frost-secp256k1-evm/FROST.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":40966,"symbolAliases":[{"foreign":{"id":82819,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"583:5:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82822,"nodeType":"ImportDirective","src":"628:73:169","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":82821,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"636:6:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82824,"nodeType":"ImportDirective","src":"702:40:169","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":84059,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":82823,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"710:7:169","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84058,"nodeType":"ContractDefinition","src":"1515:32292:169","nodes":[{"id":82828,"nodeType":"UsingForDirective","src":"1534:24:169","nodes":[],"global":false,"libraryName":{"id":82826,"name":"ECDSA","nameLocations":["1540:5:169"],"nodeType":"IdentifierPath","referencedDeclaration":51038,"src":"1540:5:169"},"typeName":{"id":82827,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":82831,"nodeType":"UsingForDirective","src":"1563:35:169","nodes":[],"global":false,"libraryName":{"id":82829,"name":"MessageHashUtils","nameLocations":["1569:16:169"],"nodeType":"IdentifierPath","referencedDeclaration":52237,"src":"1569:16:169"},"typeName":{"id":82830,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":82833,"nodeType":"UsingForDirective","src":"1604:26:169","nodes":[],"global":false,"libraryName":{"id":82832,"name":"TransientSlot","nameLocations":["1610:13:169"],"nodeType":"IdentifierPath","referencedDeclaration":50690,"src":"1610:13:169"}},{"id":82835,"nodeType":"UsingForDirective","src":"1635:27:169","nodes":[],"global":false,"libraryName":{"id":82834,"name":"SlotDerivation","nameLocations":["1641:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":48965,"src":"1641:14:169"}},{"id":82839,"nodeType":"VariableDeclaration","src":"1808:60:169","nodes":[],"constant":true,"documentation":{"id":82836,"nodeType":"StructuredDocumentation","src":"1691:112:169","text":" @dev The threshold for computation cost in gear gas.\n 2.5 * (10 ** 9) of gear gas."},"functionSelector":"7841919a","mutability":"constant","name":"COMPUTATION_THRESHOLD","nameLocation":"1831:21:169","scope":84058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":82837,"name":"uint64","nodeType":"ElementaryTypeName","src":"1808:6:169","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"325f3530305f3030305f303030","id":82838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1855:13:169","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"visibility":"public"},{"id":82843,"nodeType":"VariableDeclaration","src":"2014:58:169","nodes":[],"constant":true,"documentation":{"id":82840,"nodeType":"StructuredDocumentation","src":"1875:134:169","text":" @dev 2/3 of validators must sign the commitment for it to be valid.\n @dev The validators threshold numerator."},"functionSelector":"db3fe3f1","mutability":"constant","name":"VALIDATORS_THRESHOLD_NUMERATOR","nameLocation":"2038:30:169","scope":84058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82841,"name":"uint128","nodeType":"ElementaryTypeName","src":"2014:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"32","id":82842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2071:1:169","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"id":82847,"nodeType":"VariableDeclaration","src":"2144:60:169","nodes":[],"constant":true,"documentation":{"id":82844,"nodeType":"StructuredDocumentation","src":"2078:61:169","text":" @dev The validators threshold denominator."},"functionSelector":"0279472c","mutability":"constant","name":"VALIDATORS_THRESHOLD_DENOMINATOR","nameLocation":"2168:32:169","scope":84058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82845,"name":"uint128","nodeType":"ElementaryTypeName","src":"2144:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"33","id":82846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:169","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"public"},{"id":82851,"nodeType":"VariableDeclaration","src":"2340:61:169","nodes":[],"constant":true,"documentation":{"id":82848,"nodeType":"StructuredDocumentation","src":"2211:124:169","text":" @dev The amount of WVara tokens to be paid per compute second.\n 10 WVARA tokens per compute second."},"functionSelector":"2c184e1c","mutability":"constant","name":"WVARA_PER_SECOND","nameLocation":"2364:16:169","scope":84058,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82849,"name":"uint128","nodeType":"ElementaryTypeName","src":"2340:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"31305f3030305f3030305f3030305f303030","id":82850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:18:169","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000_by_1","typeString":"int_const 10000000000000"},"value":"10_000_000_000_000"},"visibility":"public"},{"id":82854,"nodeType":"ErrorDefinition","src":"2528:32:169","nodes":[],"documentation":{"id":82852,"nodeType":"StructuredDocumentation","src":"2428:95:169","text":" @dev Thrown when signature validation is attempted before the genesis block."},"errorSelector":"00f4462b","name":"ValidationBeforeGenesis","nameLocation":"2534:23:169","parameters":{"id":82853,"nodeType":"ParameterList","parameters":[],"src":"2557:2:169"}},{"id":82857,"nodeType":"ErrorDefinition","src":"2652:38:169","nodes":[],"documentation":{"id":82855,"nodeType":"StructuredDocumentation","src":"2566:81:169","text":" @dev Thrown when the timestamp is older than the previous era."},"errorSelector":"8d763ca0","name":"TimestampOlderThanPreviousEra","nameLocation":"2658:29:169","parameters":{"id":82856,"nodeType":"ParameterList","parameters":[],"src":"2687:2:169"}},{"id":82860,"nodeType":"ErrorDefinition","src":"2768:26:169","nodes":[],"documentation":{"id":82858,"nodeType":"StructuredDocumentation","src":"2696:67:169","text":" @dev Thrown when the timestamp is in the future."},"errorSelector":"47860b97","name":"TimestampInFuture","nameLocation":"2774:17:169","parameters":{"id":82859,"nodeType":"ParameterList","parameters":[],"src":"2791:2:169"}},{"id":82863,"nodeType":"ErrorDefinition","src":"2883:35:169","nodes":[],"documentation":{"id":82861,"nodeType":"StructuredDocumentation","src":"2800:78:169","text":" @dev Thrown when the number of FROST signatures is invalid."},"errorSelector":"60a1ea77","name":"InvalidFrostSignatureCount","nameLocation":"2889:26:169","parameters":{"id":82862,"nodeType":"ParameterList","parameters":[],"src":"2915:2:169"}},{"id":82866,"nodeType":"ErrorDefinition","src":"3037:36:169","nodes":[],"documentation":{"id":82864,"nodeType":"StructuredDocumentation","src":"2924:108:169","text":" @dev Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes."},"errorSelector":"2ce466bf","name":"InvalidFrostSignatureLength","nameLocation":"3043:27:169","parameters":{"id":82865,"nodeType":"ParameterList","parameters":[],"src":"3070:2:169"}},{"id":82869,"nodeType":"ErrorDefinition","src":"3251:36:169","nodes":[],"documentation":{"id":82867,"nodeType":"StructuredDocumentation","src":"3079:167:169","text":" @dev Thrown when the timestamp of an era is equal to the timestamp of the previous era.\n Should never happen, because the implementation."},"errorSelector":"f26224af","name":"ErasTimestampMustNotBeEqual","nameLocation":"3257:27:169","parameters":{"id":82868,"nodeType":"ParameterList","parameters":[],"src":"3284:2:169"}},{"id":82872,"nodeType":"ErrorDefinition","src":"3441:39:169","nodes":[],"documentation":{"id":82870,"nodeType":"StructuredDocumentation","src":"3293:143:169","text":" @dev Thrown when no validators are found for a given timestamp.\n Should never happen, because the implementation."},"errorSelector":"98715d2a","name":"ValidatorsNotFoundForTimestamp","nameLocation":"3447:30:169","parameters":{"id":82871,"nodeType":"ParameterList","parameters":[],"src":"3477:2:169"}},{"id":82878,"nodeType":"StructDefinition","src":"3714:72:169","nodes":[],"canonicalName":"Gear.AggregatedPublicKey","documentation":{"id":82873,"nodeType":"StructuredDocumentation","src":"3507:202:169","text":" @dev Represents an aggregated public key.\n It checked with `FROST.isValidPublicKey(x, y)` in `Router._resetValidators(...)`,\n so we can be sure that it is valid."},"members":[{"constant":false,"id":82875,"mutability":"mutable","name":"x","nameLocation":"3759:1:169","nodeType":"VariableDeclaration","scope":82878,"src":"3751:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82874,"name":"uint256","nodeType":"ElementaryTypeName","src":"3751:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82877,"mutability":"mutable","name":"y","nameLocation":"3778:1:169","nodeType":"VariableDeclaration","scope":82878,"src":"3770:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82876,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AggregatedPublicKey","nameLocation":"3721:19:169","scope":84058,"visibility":"public"},{"id":82899,"nodeType":"StructDefinition","src":"3855:1200:169","nodes":[],"canonicalName":"Gear.Validators","documentation":{"id":82879,"nodeType":"StructuredDocumentation","src":"3792:58:169","text":" @dev Represents validators information."},"members":[{"constant":false,"id":82883,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"4245:19:169","nodeType":"VariableDeclaration","scope":82899,"src":"4225:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":82882,"nodeType":"UserDefinedTypeName","pathNode":{"id":82881,"name":"AggregatedPublicKey","nameLocations":["4225:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":82878,"src":"4225:19:169"},"referencedDeclaration":82878,"src":"4225:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":82886,"mutability":"mutable","name":"verifiableSecretSharingCommitmentPointer","nameLocation":"4572:40:169","nodeType":"VariableDeclaration","scope":82899,"src":"4564:48:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82885,"name":"address","nodeType":"ElementaryTypeName","src":"4564:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82891,"mutability":"mutable","name":"map","nameLocation":"4830:3:169","nodeType":"VariableDeclaration","scope":82899,"src":"4805:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":82890,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":82888,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4805:24:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":82889,"name":"bool","nodeType":"ElementaryTypeName","src":"4824:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":82895,"mutability":"mutable","name":"list","nameLocation":"4922:4:169","nodeType":"VariableDeclaration","scope":82899,"src":"4912:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":82893,"name":"address","nodeType":"ElementaryTypeName","src":"4912:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82894,"nodeType":"ArrayTypeName","src":"4912:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":82898,"mutability":"mutable","name":"useFromTimestamp","nameLocation":"5032:16:169","nodeType":"VariableDeclaration","scope":82899,"src":"5024:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82897,"name":"uint256","nodeType":"ElementaryTypeName","src":"5024:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Validators","nameLocation":"3862:10:169","scope":84058,"visibility":"public"},{"id":82911,"nodeType":"StructDefinition","src":"5132:194:169","nodes":[],"canonicalName":"Gear.ValidatorsView","documentation":{"id":82900,"nodeType":"StructuredDocumentation","src":"5061:66:169","text":" @dev Represents view of validators information."},"members":[{"constant":false,"id":82903,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"5184:19:169","nodeType":"VariableDeclaration","scope":82911,"src":"5164:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":82902,"nodeType":"UserDefinedTypeName","pathNode":{"id":82901,"name":"AggregatedPublicKey","nameLocations":["5164:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":82878,"src":"5164:19:169"},"referencedDeclaration":82878,"src":"5164:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":82905,"mutability":"mutable","name":"verifiableSecretSharingCommitmentPointer","nameLocation":"5221:40:169","nodeType":"VariableDeclaration","scope":82911,"src":"5213:48:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82904,"name":"address","nodeType":"ElementaryTypeName","src":"5213:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82908,"mutability":"mutable","name":"list","nameLocation":"5281:4:169","nodeType":"VariableDeclaration","scope":82911,"src":"5271:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":82906,"name":"address","nodeType":"ElementaryTypeName","src":"5271:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82907,"nodeType":"ArrayTypeName","src":"5271:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":82910,"mutability":"mutable","name":"useFromTimestamp","nameLocation":"5303:16:169","nodeType":"VariableDeclaration","scope":82911,"src":"5295:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82909,"name":"uint256","nodeType":"ElementaryTypeName","src":"5295:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidatorsView","nameLocation":"5139:14:169","scope":84058,"visibility":"public"},{"id":82922,"nodeType":"StructDefinition","src":"5397:353:169","nodes":[],"canonicalName":"Gear.AddressBook","documentation":{"id":82912,"nodeType":"StructuredDocumentation","src":"5332:60:169","text":" @dev Represents address book information."},"members":[{"constant":false,"id":82915,"mutability":"mutable","name":"mirror","nameLocation":"5512:6:169","nodeType":"VariableDeclaration","scope":82922,"src":"5504:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82914,"name":"address","nodeType":"ElementaryTypeName","src":"5504:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82918,"mutability":"mutable","name":"wrappedVara","nameLocation":"5619:11:169","nodeType":"VariableDeclaration","scope":82922,"src":"5611:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82917,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82921,"mutability":"mutable","name":"middleware","nameLocation":"5733:10:169","nodeType":"VariableDeclaration","scope":82922,"src":"5725:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82920,"name":"address","nodeType":"ElementaryTypeName","src":"5725:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressBook","nameLocation":"5404:11:169","scope":84058,"visibility":"public"},{"id":82930,"nodeType":"StructDefinition","src":"5812:248:169","nodes":[],"canonicalName":"Gear.CodeCommitment","documentation":{"id":82923,"nodeType":"StructuredDocumentation","src":"5756:51:169","text":" @dev Represents code commitment."},"members":[{"constant":false,"id":82926,"mutability":"mutable","name":"id","nameLocation":"5956:2:169","nodeType":"VariableDeclaration","scope":82930,"src":"5948:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5948:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":82929,"mutability":"mutable","name":"valid","nameLocation":"6048:5:169","nodeType":"VariableDeclaration","scope":82930,"src":"6043:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82928,"name":"bool","nodeType":"ElementaryTypeName","src":"6043:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"CodeCommitment","nameLocation":"5819:14:169","scope":84058,"visibility":"public"},{"id":82940,"nodeType":"StructDefinition","src":"6123:270:169","nodes":[],"canonicalName":"Gear.ChainCommitment","documentation":{"id":82931,"nodeType":"StructuredDocumentation","src":"6066:52:169","text":" @dev Represents chain commitment."},"members":[{"constant":false,"id":82936,"mutability":"mutable","name":"transitions","nameLocation":"6265:11:169","nodeType":"VariableDeclaration","scope":82940,"src":"6247:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":82934,"nodeType":"UserDefinedTypeName","pathNode":{"id":82933,"name":"StateTransition","nameLocations":["6247:15:169"],"nodeType":"IdentifierPath","referencedDeclaration":83133,"src":"6247:15:169"},"referencedDeclaration":83133,"src":"6247:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":82935,"nodeType":"ArrayTypeName","src":"6247:17:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"},{"constant":false,"id":82939,"mutability":"mutable","name":"head","nameLocation":"6382:4:169","nodeType":"VariableDeclaration","scope":82940,"src":"6374:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6374:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"ChainCommitment","nameLocation":"6130:15:169","scope":84058,"visibility":"public"},{"id":82952,"nodeType":"StructDefinition","src":"6461:189:169","nodes":[],"canonicalName":"Gear.ValidatorsCommitment","documentation":{"id":82941,"nodeType":"StructuredDocumentation","src":"6399:57:169","text":" @dev Represents validators commitment."},"members":[{"constant":false,"id":82944,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"6519:19:169","nodeType":"VariableDeclaration","scope":82952,"src":"6499:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":82943,"nodeType":"UserDefinedTypeName","pathNode":{"id":82942,"name":"AggregatedPublicKey","nameLocations":["6499:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":82878,"src":"6499:19:169"},"referencedDeclaration":82878,"src":"6499:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":82946,"mutability":"mutable","name":"verifiableSecretSharingCommitment","nameLocation":"6554:33:169","nodeType":"VariableDeclaration","scope":82952,"src":"6548:39:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":82945,"name":"bytes","nodeType":"ElementaryTypeName","src":"6548:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":82949,"mutability":"mutable","name":"validators","nameLocation":"6607:10:169","nodeType":"VariableDeclaration","scope":82952,"src":"6597:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":82947,"name":"address","nodeType":"ElementaryTypeName","src":"6597:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82948,"nodeType":"ArrayTypeName","src":"6597:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":82951,"mutability":"mutable","name":"eraIndex","nameLocation":"6635:8:169","nodeType":"VariableDeclaration","scope":82952,"src":"6627:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82950,"name":"uint256","nodeType":"ElementaryTypeName","src":"6627:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidatorsCommitment","nameLocation":"6468:20:169","scope":84058,"visibility":"public"},{"id":82986,"nodeType":"StructDefinition","src":"6713:1206:169","nodes":[],"canonicalName":"Gear.BatchCommitment","documentation":{"id":82953,"nodeType":"StructuredDocumentation","src":"6656:52:169","text":" @dev Represents batch commitment."},"members":[{"constant":false,"id":82956,"mutability":"mutable","name":"blockHash","nameLocation":"6850:9:169","nodeType":"VariableDeclaration","scope":82986,"src":"6842:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82955,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6842:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":82959,"mutability":"mutable","name":"blockTimestamp","nameLocation":"6978:14:169","nodeType":"VariableDeclaration","scope":82986,"src":"6971:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":82958,"name":"uint48","nodeType":"ElementaryTypeName","src":"6971:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":82962,"mutability":"mutable","name":"previousCommittedBatchHash","nameLocation":"7091:26:169","nodeType":"VariableDeclaration","scope":82986,"src":"7083:34:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7083:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":82965,"mutability":"mutable","name":"expiry","nameLocation":"7353:6:169","nodeType":"VariableDeclaration","scope":82986,"src":"7347:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":82964,"name":"uint8","nodeType":"ElementaryTypeName","src":"7347:5:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":82970,"mutability":"mutable","name":"chainCommitment","nameLocation":"7479:15:169","nodeType":"VariableDeclaration","scope":82986,"src":"7461:33:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$82940_storage_$dyn_storage_ptr","typeString":"struct Gear.ChainCommitment[]"},"typeName":{"baseType":{"id":82968,"nodeType":"UserDefinedTypeName","pathNode":{"id":82967,"name":"ChainCommitment","nameLocations":["7461:15:169"],"nodeType":"IdentifierPath","referencedDeclaration":82940,"src":"7461:15:169"},"referencedDeclaration":82940,"src":"7461:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_storage_ptr","typeString":"struct Gear.ChainCommitment"}},"id":82969,"nodeType":"ArrayTypeName","src":"7461:17:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$82940_storage_$dyn_storage_ptr","typeString":"struct Gear.ChainCommitment[]"}},"visibility":"internal"},{"constant":false,"id":82975,"mutability":"mutable","name":"codeCommitments","nameLocation":"7606:15:169","nodeType":"VariableDeclaration","scope":82986,"src":"7589:32:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$82930_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":82973,"nodeType":"UserDefinedTypeName","pathNode":{"id":82972,"name":"CodeCommitment","nameLocations":["7589:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":82930,"src":"7589:14:169"},"referencedDeclaration":82930,"src":"7589:14:169","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":82974,"nodeType":"ArrayTypeName","src":"7589:16:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$82930_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":82980,"mutability":"mutable","name":"rewardsCommitment","nameLocation":"7745:17:169","nodeType":"VariableDeclaration","scope":82986,"src":"7725:37:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$82996_storage_$dyn_storage_ptr","typeString":"struct Gear.RewardsCommitment[]"},"typeName":{"baseType":{"id":82978,"nodeType":"UserDefinedTypeName","pathNode":{"id":82977,"name":"RewardsCommitment","nameLocations":["7725:17:169"],"nodeType":"IdentifierPath","referencedDeclaration":82996,"src":"7725:17:169"},"referencedDeclaration":82996,"src":"7725:17:169","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_storage_ptr","typeString":"struct Gear.RewardsCommitment"}},"id":82979,"nodeType":"ArrayTypeName","src":"7725:19:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$82996_storage_$dyn_storage_ptr","typeString":"struct Gear.RewardsCommitment[]"}},"visibility":"internal"},{"constant":false,"id":82985,"mutability":"mutable","name":"validatorsCommitment","nameLocation":"7892:20:169","nodeType":"VariableDeclaration","scope":82986,"src":"7869:43:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$82952_storage_$dyn_storage_ptr","typeString":"struct Gear.ValidatorsCommitment[]"},"typeName":{"baseType":{"id":82983,"nodeType":"UserDefinedTypeName","pathNode":{"id":82982,"name":"ValidatorsCommitment","nameLocations":["7869:20:169"],"nodeType":"IdentifierPath","referencedDeclaration":82952,"src":"7869:20:169"},"referencedDeclaration":82952,"src":"7869:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"id":82984,"nodeType":"ArrayTypeName","src":"7869:22:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$82952_storage_$dyn_storage_ptr","typeString":"struct Gear.ValidatorsCommitment[]"}},"visibility":"internal"}],"name":"BatchCommitment","nameLocation":"6720:15:169","scope":84058,"visibility":"public"},{"id":82996,"nodeType":"StructDefinition","src":"7984:144:169","nodes":[],"canonicalName":"Gear.RewardsCommitment","documentation":{"id":82987,"nodeType":"StructuredDocumentation","src":"7925:54:169","text":" @dev Represents rewards commitment."},"members":[{"constant":false,"id":82990,"mutability":"mutable","name":"operators","nameLocation":"8045:9:169","nodeType":"VariableDeclaration","scope":82996,"src":"8019:35:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83002_storage_ptr","typeString":"struct Gear.OperatorRewardsCommitment"},"typeName":{"id":82989,"nodeType":"UserDefinedTypeName","pathNode":{"id":82988,"name":"OperatorRewardsCommitment","nameLocations":["8019:25:169"],"nodeType":"IdentifierPath","referencedDeclaration":83002,"src":"8019:25:169"},"referencedDeclaration":83002,"src":"8019:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83002_storage_ptr","typeString":"struct Gear.OperatorRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":82993,"mutability":"mutable","name":"stakers","nameLocation":"8088:7:169","nodeType":"VariableDeclaration","scope":82996,"src":"8064:31:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":82992,"nodeType":"UserDefinedTypeName","pathNode":{"id":82991,"name":"StakerRewardsCommitment","nameLocations":["8064:23:169"],"nodeType":"IdentifierPath","referencedDeclaration":83012,"src":"8064:23:169"},"referencedDeclaration":83012,"src":"8064:23:169","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":82995,"mutability":"mutable","name":"timestamp","nameLocation":"8112:9:169","nodeType":"VariableDeclaration","scope":82996,"src":"8105:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":82994,"name":"uint48","nodeType":"ElementaryTypeName","src":"8105:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"RewardsCommitment","nameLocation":"7991:17:169","scope":84058,"visibility":"public"},{"id":83002,"nodeType":"StructDefinition","src":"8202:86:169","nodes":[],"canonicalName":"Gear.OperatorRewardsCommitment","documentation":{"id":82997,"nodeType":"StructuredDocumentation","src":"8134:63:169","text":" @dev Represents operator rewards commitment."},"members":[{"constant":false,"id":82999,"mutability":"mutable","name":"amount","nameLocation":"8253:6:169","nodeType":"VariableDeclaration","scope":83002,"src":"8245:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82998,"name":"uint256","nodeType":"ElementaryTypeName","src":"8245:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83001,"mutability":"mutable","name":"root","nameLocation":"8277:4:169","nodeType":"VariableDeclaration","scope":83002,"src":"8269:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8269:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"OperatorRewardsCommitment","nameLocation":"8209:25:169","scope":84058,"visibility":"public"},{"id":83012,"nodeType":"StructDefinition","src":"8360:128:169","nodes":[],"canonicalName":"Gear.StakerRewardsCommitment","documentation":{"id":83003,"nodeType":"StructuredDocumentation","src":"8294:61:169","text":" @dev Represents staker rewards commitment."},"members":[{"constant":false,"id":83007,"mutability":"mutable","name":"distribution","nameLocation":"8417:12:169","nodeType":"VariableDeclaration","scope":83012,"src":"8401:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$83018_storage_$dyn_storage_ptr","typeString":"struct Gear.StakerRewards[]"},"typeName":{"baseType":{"id":83005,"nodeType":"UserDefinedTypeName","pathNode":{"id":83004,"name":"StakerRewards","nameLocations":["8401:13:169"],"nodeType":"IdentifierPath","referencedDeclaration":83018,"src":"8401:13:169"},"referencedDeclaration":83018,"src":"8401:13:169","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_storage_ptr","typeString":"struct Gear.StakerRewards"}},"id":83006,"nodeType":"ArrayTypeName","src":"8401:15:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$83018_storage_$dyn_storage_ptr","typeString":"struct Gear.StakerRewards[]"}},"visibility":"internal"},{"constant":false,"id":83009,"mutability":"mutable","name":"totalAmount","nameLocation":"8447:11:169","nodeType":"VariableDeclaration","scope":83012,"src":"8439:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83008,"name":"uint256","nodeType":"ElementaryTypeName","src":"8439:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83011,"mutability":"mutable","name":"token","nameLocation":"8476:5:169","nodeType":"VariableDeclaration","scope":83012,"src":"8468:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83010,"name":"address","nodeType":"ElementaryTypeName","src":"8468:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"StakerRewardsCommitment","nameLocation":"8367:23:169","scope":84058,"visibility":"public"},{"id":83018,"nodeType":"StructDefinition","src":"8549:75:169","nodes":[],"canonicalName":"Gear.StakerRewards","documentation":{"id":83013,"nodeType":"StructuredDocumentation","src":"8494:50:169","text":" @dev Represents staker rewards."},"members":[{"constant":false,"id":83015,"mutability":"mutable","name":"vault","nameLocation":"8588:5:169","nodeType":"VariableDeclaration","scope":83018,"src":"8580:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83014,"name":"address","nodeType":"ElementaryTypeName","src":"8580:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83017,"mutability":"mutable","name":"amount","nameLocation":"8611:6:169","nodeType":"VariableDeclaration","scope":83018,"src":"8603:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83016,"name":"uint256","nodeType":"ElementaryTypeName","src":"8603:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StakerRewards","nameLocation":"8556:13:169","scope":84058,"visibility":"public"},{"id":83026,"nodeType":"EnumDefinition","src":"8699:960:169","nodes":[],"canonicalName":"Gear.CodeState","documentation":{"id":83019,"nodeType":"StructuredDocumentation","src":"8630:64:169","text":" @dev Represents the state of code commitment."},"members":[{"documentation":{"id":83020,"nodeType":"StructuredDocumentation","src":"8724:260:169","text":" @dev The code commitment is in an unknown state (`CodeState.Unknown = 0 as uint8`).\n This is the default state for all code commitments,\n and it means that the code commitment has not been processed yet."},"id":83021,"name":"Unknown","nameLocation":"8993:7:169","nodeType":"EnumValue","src":"8993:7:169"},{"documentation":{"id":83022,"nodeType":"StructuredDocumentation","src":"9010:465:169","text":" @dev The code commitment has requested validation by user (`CodeState.ValidationRequested = 1 as uint8`).\n Users calls `IRouter(router).requestCodeValidation(bytes32 _codeId)` to request code validation and\n attaches sidecar to this transaction (the transaction is encoded in EIP-7594 format),\n then validators can validate the code commitment and set `CodeState.Validated` in case of success."},"id":83023,"name":"ValidationRequested","nameLocation":"9484:19:169","nodeType":"EnumValue","src":"9484:19:169"},{"documentation":{"id":83024,"nodeType":"StructuredDocumentation","src":"9513:122:169","text":" @dev The code commitment has been validated by validators (`CodeState.Validated = 2 as uint8`)."},"id":83025,"name":"Validated","nameLocation":"9644:9:169","nodeType":"EnumValue","src":"9644:9:169"}],"name":"CodeState","nameLocation":"8704:9:169"},{"id":83032,"nodeType":"StructDefinition","src":"9739:81:169","nodes":[],"canonicalName":"Gear.CommittedBatchInfo","documentation":{"id":83027,"nodeType":"StructuredDocumentation","src":"9665:69:169","text":" @dev Represents information about committed batch."},"members":[{"constant":false,"id":83029,"mutability":"mutable","name":"hash","nameLocation":"9783:4:169","nodeType":"VariableDeclaration","scope":83032,"src":"9775:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9775:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83031,"mutability":"mutable","name":"timestamp","nameLocation":"9804:9:169","nodeType":"VariableDeclaration","scope":83032,"src":"9797:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83030,"name":"uint48","nodeType":"ElementaryTypeName","src":"9797:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"CommittedBatchInfo","nameLocation":"9746:18:169","scope":84058,"visibility":"public"},{"id":83038,"nodeType":"StructDefinition","src":"9887:92:169","nodes":[],"canonicalName":"Gear.ComputationSettings","documentation":{"id":83033,"nodeType":"StructuredDocumentation","src":"9826:56:169","text":" @dev Represents computation settings."},"members":[{"constant":false,"id":83035,"mutability":"mutable","name":"threshold","nameLocation":"9931:9:169","nodeType":"VariableDeclaration","scope":83038,"src":"9924:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":83034,"name":"uint64","nodeType":"ElementaryTypeName","src":"9924:6:169","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":83037,"mutability":"mutable","name":"wvaraPerSecond","nameLocation":"9958:14:169","nodeType":"VariableDeclaration","scope":83038,"src":"9950:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83036,"name":"uint128","nodeType":"ElementaryTypeName","src":"9950:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ComputationSettings","nameLocation":"9894:19:169","scope":84058,"visibility":"public"},{"id":83046,"nodeType":"StructDefinition","src":"10057:102:169","nodes":[],"canonicalName":"Gear.GenesisBlockInfo","documentation":{"id":83039,"nodeType":"StructuredDocumentation","src":"9985:67:169","text":" @dev Represents information about genesis block."},"members":[{"constant":false,"id":83041,"mutability":"mutable","name":"hash","nameLocation":"10099:4:169","nodeType":"VariableDeclaration","scope":83046,"src":"10091:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83040,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10091:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83043,"mutability":"mutable","name":"number","nameLocation":"10120:6:169","nodeType":"VariableDeclaration","scope":83046,"src":"10113:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":83042,"name":"uint32","nodeType":"ElementaryTypeName","src":"10113:6:169","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":83045,"mutability":"mutable","name":"timestamp","nameLocation":"10143:9:169","nodeType":"VariableDeclaration","scope":83046,"src":"10136:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83044,"name":"uint48","nodeType":"ElementaryTypeName","src":"10136:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"GenesisBlockInfo","nameLocation":"10064:16:169","scope":84058,"visibility":"public"},{"id":83067,"nodeType":"StructDefinition","src":"10213:1092:169","nodes":[],"canonicalName":"Gear.Message","documentation":{"id":83047,"nodeType":"StructuredDocumentation","src":"10165:43:169","text":" @dev Represents message."},"members":[{"constant":false,"id":83050,"mutability":"mutable","name":"id","nameLocation":"10338:2:169","nodeType":"VariableDeclaration","scope":83067,"src":"10330:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10330:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83053,"mutability":"mutable","name":"destination","nameLocation":"10534:11:169","nodeType":"VariableDeclaration","scope":83067,"src":"10526:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83052,"name":"address","nodeType":"ElementaryTypeName","src":"10526:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83056,"mutability":"mutable","name":"payload","nameLocation":"10629:7:169","nodeType":"VariableDeclaration","scope":83067,"src":"10623:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":83055,"name":"bytes","nodeType":"ElementaryTypeName","src":"10623:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":83059,"mutability":"mutable","name":"value","nameLocation":"10733:5:169","nodeType":"VariableDeclaration","scope":83067,"src":"10725:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83058,"name":"uint128","nodeType":"ElementaryTypeName","src":"10725:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83063,"mutability":"mutable","name":"replyDetails","nameLocation":"10981:12:169","nodeType":"VariableDeclaration","scope":83067,"src":"10968:25:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_storage_ptr","typeString":"struct Gear.ReplyDetails"},"typeName":{"id":83062,"nodeType":"UserDefinedTypeName","pathNode":{"id":83061,"name":"ReplyDetails","nameLocations":["10968:12:169"],"nodeType":"IdentifierPath","referencedDeclaration":83103,"src":"10968:12:169"},"referencedDeclaration":83103,"src":"10968:12:169","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_storage_ptr","typeString":"struct Gear.ReplyDetails"}},"visibility":"internal"},{"constant":false,"id":83066,"mutability":"mutable","name":"call","nameLocation":"11294:4:169","nodeType":"VariableDeclaration","scope":83067,"src":"11289:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83065,"name":"bool","nodeType":"ElementaryTypeName","src":"11289:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Message","nameLocation":"10220:7:169","scope":84058,"visibility":"public"},{"id":83095,"nodeType":"StructDefinition","src":"11369:1298:169","nodes":[],"canonicalName":"Gear.ProtocolData","documentation":{"id":83068,"nodeType":"StructuredDocumentation","src":"11311:53:169","text":" @dev Represents the protocol data."},"members":[{"constant":false,"id":83074,"mutability":"mutable","name":"codes","nameLocation":"11643:5:169","nodeType":"VariableDeclaration","scope":83095,"src":"11613:35:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"},"typeName":{"id":83073,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":83070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11621:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"11613:29:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":83072,"nodeType":"UserDefinedTypeName","pathNode":{"id":83071,"name":"CodeState","nameLocations":["11632:9:169"],"nodeType":"IdentifierPath","referencedDeclaration":83026,"src":"11632:9:169"},"referencedDeclaration":83026,"src":"11632:9:169","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}}},"visibility":"internal"},{"constant":false,"id":83079,"mutability":"mutable","name":"programs","nameLocation":"11861:8:169","nodeType":"VariableDeclaration","scope":83095,"src":"11833:36:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"typeName":{"id":83078,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":83076,"name":"address","nodeType":"ElementaryTypeName","src":"11841:7:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"11833:27:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":83077,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11852:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":83082,"mutability":"mutable","name":"programsCount","nameLocation":"11978:13:169","nodeType":"VariableDeclaration","scope":83095,"src":"11970:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83081,"name":"uint256","nodeType":"ElementaryTypeName","src":"11970:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83085,"mutability":"mutable","name":"validatedCodesCount","nameLocation":"12106:19:169","nodeType":"VariableDeclaration","scope":83095,"src":"12098:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83084,"name":"uint256","nodeType":"ElementaryTypeName","src":"12098:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83088,"mutability":"mutable","name":"maxValidators","nameLocation":"12224:13:169","nodeType":"VariableDeclaration","scope":83095,"src":"12217:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":83087,"name":"uint16","nodeType":"ElementaryTypeName","src":"12217:6:169","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":83091,"mutability":"mutable","name":"requestCodeValidationBaseFee","nameLocation":"12415:28:169","nodeType":"VariableDeclaration","scope":83095,"src":"12407:36:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83090,"name":"uint256","nodeType":"ElementaryTypeName","src":"12407:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83094,"mutability":"mutable","name":"requestCodeValidationExtraFee","nameLocation":"12631:29:169","nodeType":"VariableDeclaration","scope":83095,"src":"12623:37:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83093,"name":"uint256","nodeType":"ElementaryTypeName","src":"12623:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ProtocolData","nameLocation":"11376:12:169","scope":84058,"visibility":"public"},{"id":83103,"nodeType":"StructDefinition","src":"12733:564:169","nodes":[],"canonicalName":"Gear.ReplyDetails","documentation":{"id":83096,"nodeType":"StructuredDocumentation","src":"12673:55:169","text":" @dev Represents details about reply."},"members":[{"constant":false,"id":83099,"mutability":"mutable","name":"to","nameLocation":"12942:2:169","nodeType":"VariableDeclaration","scope":83103,"src":"12934:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83098,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12934:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83102,"mutability":"mutable","name":"code","nameLocation":"13286:4:169","nodeType":"VariableDeclaration","scope":83103,"src":"13279:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":83101,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13279:6:169","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"name":"ReplyDetails","nameLocation":"12740:12:169","scope":84058,"visibility":"public"},{"id":83133,"nodeType":"StructDefinition","src":"13574:1608:169","nodes":[],"canonicalName":"Gear.StateTransition","documentation":{"id":83104,"nodeType":"StructuredDocumentation","src":"13303:266:169","text":" @dev Represents state transition of `Mirror`.\n Most important type in this, in Rust we use this type to mutate state of `Mirror` instances.\n (see `ethexe/common/src/gear.rs` for more details on how this type is used in Rust)."},"members":[{"constant":false,"id":83107,"mutability":"mutable","name":"actorId","nameLocation":"13801:7:169","nodeType":"VariableDeclaration","scope":83133,"src":"13793:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83106,"name":"address","nodeType":"ElementaryTypeName","src":"13793:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83110,"mutability":"mutable","name":"newStateHash","nameLocation":"13982:12:169","nodeType":"VariableDeclaration","scope":83133,"src":"13974:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13974:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83113,"mutability":"mutable","name":"exited","nameLocation":"14089:6:169","nodeType":"VariableDeclaration","scope":83133,"src":"14084:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83112,"name":"bool","nodeType":"ElementaryTypeName","src":"14084:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83116,"mutability":"mutable","name":"inheritor","nameLocation":"14291:9:169","nodeType":"VariableDeclaration","scope":83133,"src":"14283:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83115,"name":"address","nodeType":"ElementaryTypeName","src":"14283:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83119,"mutability":"mutable","name":"valueToReceive","nameLocation":"14669:14:169","nodeType":"VariableDeclaration","scope":83133,"src":"14661:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83118,"name":"uint128","nodeType":"ElementaryTypeName","src":"14661:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83122,"mutability":"mutable","name":"valueToReceiveNegativeSign","nameLocation":"14965:26:169","nodeType":"VariableDeclaration","scope":83133,"src":"14960:31:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83121,"name":"bool","nodeType":"ElementaryTypeName","src":"14960:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83127,"mutability":"mutable","name":"valueClaims","nameLocation":"15077:11:169","nodeType":"VariableDeclaration","scope":83133,"src":"15064:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":83125,"nodeType":"UserDefinedTypeName","pathNode":{"id":83124,"name":"ValueClaim","nameLocations":["15064:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":83173,"src":"15064:10:169"},"referencedDeclaration":83173,"src":"15064:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":83126,"nodeType":"ArrayTypeName","src":"15064:12:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"},{"constant":false,"id":83132,"mutability":"mutable","name":"messages","nameLocation":"15167:8:169","nodeType":"VariableDeclaration","scope":83133,"src":"15157:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":83130,"nodeType":"UserDefinedTypeName","pathNode":{"id":83129,"name":"Message","nameLocations":["15157:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"15157:7:169"},"referencedDeclaration":83067,"src":"15157:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"id":83131,"nodeType":"ArrayTypeName","src":"15157:9:169","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"name":"StateTransition","nameLocation":"13581:15:169","scope":84058,"visibility":"public"},{"id":83141,"nodeType":"StructDefinition","src":"15242:104:169","nodes":[],"canonicalName":"Gear.Timelines","documentation":{"id":83134,"nodeType":"StructuredDocumentation","src":"15188:49:169","text":" @dev Represents the timelines."},"members":[{"constant":false,"id":83136,"mutability":"mutable","name":"era","nameLocation":"15277:3:169","nodeType":"VariableDeclaration","scope":83141,"src":"15269:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83135,"name":"uint256","nodeType":"ElementaryTypeName","src":"15269:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83138,"mutability":"mutable","name":"election","nameLocation":"15298:8:169","nodeType":"VariableDeclaration","scope":83141,"src":"15290:16:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83137,"name":"uint256","nodeType":"ElementaryTypeName","src":"15290:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83140,"mutability":"mutable","name":"validationDelay","nameLocation":"15324:15:169","nodeType":"VariableDeclaration","scope":83141,"src":"15316:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83139,"name":"uint256","nodeType":"ElementaryTypeName","src":"15316:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Timelines","nameLocation":"15249:9:169","scope":84058,"visibility":"public"},{"id":83153,"nodeType":"StructDefinition","src":"15416:171:169","nodes":[],"canonicalName":"Gear.ValidationSettings","documentation":{"id":83142,"nodeType":"StructuredDocumentation","src":"15352:59:169","text":" @dev Represents the validation settings."},"members":[{"constant":false,"id":83144,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15460:18:169","nodeType":"VariableDeclaration","scope":83153,"src":"15452:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83143,"name":"uint128","nodeType":"ElementaryTypeName","src":"15452:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83146,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15496:20:169","nodeType":"VariableDeclaration","scope":83153,"src":"15488:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83145,"name":"uint128","nodeType":"ElementaryTypeName","src":"15488:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83149,"mutability":"mutable","name":"validators0","nameLocation":"15537:11:169","nodeType":"VariableDeclaration","scope":83153,"src":"15526:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83148,"nodeType":"UserDefinedTypeName","pathNode":{"id":83147,"name":"Validators","nameLocations":["15526:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"15526:10:169"},"referencedDeclaration":82899,"src":"15526:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":83152,"mutability":"mutable","name":"validators1","nameLocation":"15569:11:169","nodeType":"VariableDeclaration","scope":83153,"src":"15558:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83151,"nodeType":"UserDefinedTypeName","pathNode":{"id":83150,"name":"Validators","nameLocations":["15558:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"15558:10:169"},"referencedDeclaration":82899,"src":"15558:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"name":"ValidationSettings","nameLocation":"15423:18:169","scope":84058,"visibility":"public"},{"id":83165,"nodeType":"StructDefinition","src":"15665:183:169","nodes":[],"canonicalName":"Gear.ValidationSettingsView","documentation":{"id":83154,"nodeType":"StructuredDocumentation","src":"15593:67:169","text":" @dev Represents the view of validation settings."},"members":[{"constant":false,"id":83156,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15713:18:169","nodeType":"VariableDeclaration","scope":83165,"src":"15705:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83155,"name":"uint128","nodeType":"ElementaryTypeName","src":"15705:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83158,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15749:20:169","nodeType":"VariableDeclaration","scope":83165,"src":"15741:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83157,"name":"uint128","nodeType":"ElementaryTypeName","src":"15741:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83161,"mutability":"mutable","name":"validators0","nameLocation":"15794:11:169","nodeType":"VariableDeclaration","scope":83165,"src":"15779:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":83160,"nodeType":"UserDefinedTypeName","pathNode":{"id":83159,"name":"ValidatorsView","nameLocations":["15779:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":82911,"src":"15779:14:169"},"referencedDeclaration":82911,"src":"15779:14:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"},{"constant":false,"id":83164,"mutability":"mutable","name":"validators1","nameLocation":"15830:11:169","nodeType":"VariableDeclaration","scope":83165,"src":"15815:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":83163,"nodeType":"UserDefinedTypeName","pathNode":{"id":83162,"name":"ValidatorsView","nameLocations":["15815:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":82911,"src":"15815:14:169"},"referencedDeclaration":82911,"src":"15815:14:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"name":"ValidationSettingsView","nameLocation":"15672:22:169","scope":84058,"visibility":"public"},{"id":83173,"nodeType":"StructDefinition","src":"15910:104:169","nodes":[],"canonicalName":"Gear.ValueClaim","documentation":{"id":83166,"nodeType":"StructuredDocumentation","src":"15854:51:169","text":" @dev Represents claim for value."},"members":[{"constant":false,"id":83168,"mutability":"mutable","name":"messageId","nameLocation":"15946:9:169","nodeType":"VariableDeclaration","scope":83173,"src":"15938:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83167,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15938:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83170,"mutability":"mutable","name":"destination","nameLocation":"15973:11:169","nodeType":"VariableDeclaration","scope":83173,"src":"15965:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83169,"name":"address","nodeType":"ElementaryTypeName","src":"15965:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83172,"mutability":"mutable","name":"value","nameLocation":"16002:5:169","nodeType":"VariableDeclaration","scope":83173,"src":"15994:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83171,"name":"uint128","nodeType":"ElementaryTypeName","src":"15994:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ValueClaim","nameLocation":"15917:10:169","scope":84058,"visibility":"public"},{"id":83195,"nodeType":"StructDefinition","src":"16094:436:169","nodes":[],"canonicalName":"Gear.SymbioticContracts","documentation":{"id":83174,"nodeType":"StructuredDocumentation","src":"16020:69:169","text":" @dev Represents the symbiotic contracts addresses."},"members":[{"constant":false,"id":83176,"mutability":"mutable","name":"vaultRegistry","nameLocation":"16170:13:169","nodeType":"VariableDeclaration","scope":83195,"src":"16162:21:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83175,"name":"address","nodeType":"ElementaryTypeName","src":"16162:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83178,"mutability":"mutable","name":"operatorRegistry","nameLocation":"16201:16:169","nodeType":"VariableDeclaration","scope":83195,"src":"16193:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83177,"name":"address","nodeType":"ElementaryTypeName","src":"16193:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83180,"mutability":"mutable","name":"networkRegistry","nameLocation":"16235:15:169","nodeType":"VariableDeclaration","scope":83195,"src":"16227:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83179,"name":"address","nodeType":"ElementaryTypeName","src":"16227:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83182,"mutability":"mutable","name":"middlewareService","nameLocation":"16268:17:169","nodeType":"VariableDeclaration","scope":83195,"src":"16260:25:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83181,"name":"address","nodeType":"ElementaryTypeName","src":"16260:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83184,"mutability":"mutable","name":"networkOptIn","nameLocation":"16303:12:169","nodeType":"VariableDeclaration","scope":83195,"src":"16295:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83183,"name":"address","nodeType":"ElementaryTypeName","src":"16295:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83186,"mutability":"mutable","name":"stakerRewardsFactory","nameLocation":"16333:20:169","nodeType":"VariableDeclaration","scope":83195,"src":"16325:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83185,"name":"address","nodeType":"ElementaryTypeName","src":"16325:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83188,"mutability":"mutable","name":"operatorRewards","nameLocation":"16407:15:169","nodeType":"VariableDeclaration","scope":83195,"src":"16399:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83187,"name":"address","nodeType":"ElementaryTypeName","src":"16399:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83190,"mutability":"mutable","name":"roleSlashRequester","nameLocation":"16440:18:169","nodeType":"VariableDeclaration","scope":83195,"src":"16432:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83189,"name":"address","nodeType":"ElementaryTypeName","src":"16432:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83192,"mutability":"mutable","name":"roleSlashExecutor","nameLocation":"16476:17:169","nodeType":"VariableDeclaration","scope":83195,"src":"16468:25:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83191,"name":"address","nodeType":"ElementaryTypeName","src":"16468:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83194,"mutability":"mutable","name":"vetoResolver","nameLocation":"16511:12:169","nodeType":"VariableDeclaration","scope":83195,"src":"16503:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83193,"name":"address","nodeType":"ElementaryTypeName","src":"16503:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"SymbioticContracts","nameLocation":"16101:18:169","scope":84058,"visibility":"public"},{"id":83199,"nodeType":"EnumDefinition","src":"16603:55:169","nodes":[],"canonicalName":"Gear.SignatureType","documentation":{"id":83196,"nodeType":"StructuredDocumentation","src":"16536:62:169","text":" @dev Represents the type of signature used."},"members":[{"id":83197,"name":"FROST","nameLocation":"16632:5:169","nodeType":"EnumValue","src":"16632:5:169"},{"id":83198,"name":"ECDSA","nameLocation":"16647:5:169","nodeType":"EnumValue","src":"16647:5:169"}],"name":"SignatureType","nameLocation":"16608:13:169"},{"id":83216,"nodeType":"FunctionDefinition","src":"16870:185:169","nodes":[],"body":{"id":83215,"nodeType":"Block","src":"16972:83:169","nodes":[],"statements":[{"expression":{"arguments":[{"id":83211,"name":"_transitionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83202,"src":"17024:16:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83212,"name":"_head","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83204,"src":"17042:5:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83209,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"16989:6:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":83210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16996:27:169","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41482,"src":"16989:34:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":83213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16989:59:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83208,"id":83214,"nodeType":"Return","src":"16982:66:169"}]},"documentation":{"id":83200,"nodeType":"StructuredDocumentation","src":"16664:201:169","text":" @dev Computes the hash of `ChainCommitment`.\n @param _transitionsHash The hash of the transitions in the chain commitment.\n @param _head The head of the chain commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"chainCommitmentHash","nameLocation":"16879:19:169","parameters":{"id":83205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83202,"mutability":"mutable","name":"_transitionsHash","nameLocation":"16907:16:169","nodeType":"VariableDeclaration","scope":83216,"src":"16899:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83201,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16899:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83204,"mutability":"mutable","name":"_head","nameLocation":"16933:5:169","nodeType":"VariableDeclaration","scope":83216,"src":"16925:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83203,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16925:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16898:41:169"},"returnParameters":{"id":83208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83207,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83216,"src":"16963:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16963:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16962:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83233,"nodeType":"FunctionDefinition","src":"17224:336:169","nodes":[],"body":{"id":83232,"nodeType":"Block","src":"17312:248:169","nodes":[],"statements":[{"assignments":[83227],"declarations":[{"constant":false,"id":83227,"mutability":"mutable","name":"_codeCommitmentHash","nameLocation":"17330:19:169","nodeType":"VariableDeclaration","scope":83232,"src":"17322:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17322:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83228,"nodeType":"VariableDeclarationStatement","src":"17322:27:169"},{"AST":{"nativeSrc":"17384:134:169","nodeType":"YulBlock","src":"17384:134:169","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17405:4:169","nodeType":"YulLiteral","src":"17405:4:169","type":"","value":"0x00"},{"name":"codeId","nativeSrc":"17411:6:169","nodeType":"YulIdentifier","src":"17411:6:169"}],"functionName":{"name":"mstore","nativeSrc":"17398:6:169","nodeType":"YulIdentifier","src":"17398:6:169"},"nativeSrc":"17398:20:169","nodeType":"YulFunctionCall","src":"17398:20:169"},"nativeSrc":"17398:20:169","nodeType":"YulExpressionStatement","src":"17398:20:169"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17439:4:169","nodeType":"YulLiteral","src":"17439:4:169","type":"","value":"0x20"},{"name":"valid","nativeSrc":"17445:5:169","nodeType":"YulIdentifier","src":"17445:5:169"}],"functionName":{"name":"mstore8","nativeSrc":"17431:7:169","nodeType":"YulIdentifier","src":"17431:7:169"},"nativeSrc":"17431:20:169","nodeType":"YulFunctionCall","src":"17431:20:169"},"nativeSrc":"17431:20:169","nodeType":"YulExpressionStatement","src":"17431:20:169"},{"nativeSrc":"17464:44:169","nodeType":"YulAssignment","src":"17464:44:169","value":{"arguments":[{"kind":"number","nativeSrc":"17497:4:169","nodeType":"YulLiteral","src":"17497:4:169","type":"","value":"0x00"},{"kind":"number","nativeSrc":"17503:4:169","nodeType":"YulLiteral","src":"17503:4:169","type":"","value":"0x21"}],"functionName":{"name":"keccak256","nativeSrc":"17487:9:169","nodeType":"YulIdentifier","src":"17487:9:169"},"nativeSrc":"17487:21:169","nodeType":"YulFunctionCall","src":"17487:21:169"},"variableNames":[{"name":"_codeCommitmentHash","nativeSrc":"17464:19:169","nodeType":"YulIdentifier","src":"17464:19:169"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83227,"isOffset":false,"isSlot":false,"src":"17464:19:169","valueSize":1},{"declaration":83219,"isOffset":false,"isSlot":false,"src":"17411:6:169","valueSize":1},{"declaration":83221,"isOffset":false,"isSlot":false,"src":"17445:5:169","valueSize":1}],"flags":["memory-safe"],"id":83229,"nodeType":"InlineAssembly","src":"17359:159:169"},{"expression":{"id":83230,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83227,"src":"17534:19:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83225,"id":83231,"nodeType":"Return","src":"17527:26:169"}]},"documentation":{"id":83217,"nodeType":"StructuredDocumentation","src":"17061:158:169","text":" @dev Computes the hash of `CodeCommitment`.\n @param codeId The ID of the code.\n @param valid The validation status of the code."},"implemented":true,"kind":"function","modifiers":[],"name":"codeCommitmentHash","nameLocation":"17233:18:169","parameters":{"id":83222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83219,"mutability":"mutable","name":"codeId","nameLocation":"17260:6:169","nodeType":"VariableDeclaration","scope":83233,"src":"17252:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17252:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83221,"mutability":"mutable","name":"valid","nameLocation":"17273:5:169","nodeType":"VariableDeclaration","scope":83233,"src":"17268:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83220,"name":"bool","nodeType":"ElementaryTypeName","src":"17268:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17251:28:169"},"returnParameters":{"id":83225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83224,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83233,"src":"17303:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83223,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17303:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17302:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83255,"nodeType":"FunctionDefinition","src":"17837:273:169","nodes":[],"body":{"id":83254,"nodeType":"Block","src":"18005:105:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83248,"name":"_operatorRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83236,"src":"18049:20:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83249,"name":"_stakerRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83238,"src":"18071:18:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83250,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83240,"src":"18091:10:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":83246,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18032:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18036:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"18032:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18032:70:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83245,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"18022:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18022:81:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83244,"id":83253,"nodeType":"Return","src":"18015:88:169"}]},"documentation":{"id":83234,"nodeType":"StructuredDocumentation","src":"17566:266:169","text":" @dev Computes the hash of `RewardsCommitment`.\n @param _operatorRewardsHash The hash of the operator rewards.\n @param _stakerRewardsHash The hash of the staker rewards.\n @param _timestamp The timestamp for the rewards commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"rewardsCommitmentHash","nameLocation":"17846:21:169","parameters":{"id":83241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83236,"mutability":"mutable","name":"_operatorRewardsHash","nameLocation":"17876:20:169","nodeType":"VariableDeclaration","scope":83255,"src":"17868:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17868:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83238,"mutability":"mutable","name":"_stakerRewardsHash","nameLocation":"17906:18:169","nodeType":"VariableDeclaration","scope":83255,"src":"17898:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17898:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83240,"mutability":"mutable","name":"_timestamp","nameLocation":"17933:10:169","nodeType":"VariableDeclaration","scope":83255,"src":"17926:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83239,"name":"uint48","nodeType":"ElementaryTypeName","src":"17926:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17867:77:169"},"returnParameters":{"id":83244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83255,"src":"17992:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17992:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17991:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83281,"nodeType":"FunctionDefinition","src":"18241:374:169","nodes":[],"body":{"id":83280,"nodeType":"Block","src":"18352:263:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":83267,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83259,"src":"18426:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18437:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82944,"src":"18426:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":83269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18457:1:169","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":82875,"src":"18426:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":83270,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83259,"src":"18476:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18487:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82944,"src":"18476:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":83272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18507:1:169","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":82877,"src":"18476:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":83273,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83259,"src":"18526:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18537:10:169","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":82949,"src":"18526:21:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":83275,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83259,"src":"18565:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":83276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18576:8:169","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":82951,"src":"18565:19:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83265,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18392:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18396:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"18392:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18392:206:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83264,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"18369:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18369:239:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83263,"id":83279,"nodeType":"Return","src":"18362:246:169"}]},"documentation":{"id":83256,"nodeType":"StructuredDocumentation","src":"18116:120:169","text":" @dev Computes the hash of `ValidatorsCommitment`.\n @param commitment The validators commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsCommitmentHash","nameLocation":"18250:24:169","parameters":{"id":83260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83259,"mutability":"mutable","name":"commitment","nameLocation":"18308:10:169","nodeType":"VariableDeclaration","scope":83281,"src":"18275:43:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_memory_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":83258,"nodeType":"UserDefinedTypeName","pathNode":{"id":83257,"name":"Gear.ValidatorsCommitment","nameLocations":["18275:4:169","18280:20:169"],"nodeType":"IdentifierPath","referencedDeclaration":82952,"src":"18275:25:169"},"referencedDeclaration":82952,"src":"18275:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"}],"src":"18274:45:169"},"returnParameters":{"id":83263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83281,"src":"18343:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18343:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18342:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83318,"nodeType":"FunctionDefinition","src":"19228:697:169","nodes":[],"body":{"id":83317,"nodeType":"Block","src":"19565:360:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83306,"name":"_block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83284,"src":"19639:6:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83307,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83286,"src":"19663:10:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":83308,"name":"_prevCommittedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83288,"src":"19691:19:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83309,"name":"_expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83290,"src":"19728:7:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":83310,"name":"_chainCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83292,"src":"19753:20:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83311,"name":"_codeCommitmentsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83294,"src":"19791:20:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83312,"name":"_rewardsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83296,"src":"19829:22:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83313,"name":"_validatorsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83298,"src":"19869:25:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83304,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19605:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83305,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19609:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"19605:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19605:303:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83303,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19582:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19582:336:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83302,"id":83316,"nodeType":"Return","src":"19575:343:169"}]},"documentation":{"id":83282,"nodeType":"StructuredDocumentation","src":"18621:602:169","text":" @dev Computes the hash of `BatchCommitment`.\n @param _block The hash of the block.\n @param _timestamp The timestamp for the batch commitment.\n @param _prevCommittedBlock The hash of the previous committed block.\n @param _expiry The expiry time for the batch commitment.\n @param _chainCommitmentHash The hash of the chain commitment.\n @param _codeCommitmentsHash The hash of the code commitments.\n @param _rewardsCommitmentHash The hash of the rewards commitment.\n @param _validatorsCommitmentHash The hash of the validators commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"batchCommitmentHash","nameLocation":"19237:19:169","parameters":{"id":83299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83284,"mutability":"mutable","name":"_block","nameLocation":"19274:6:169","nodeType":"VariableDeclaration","scope":83318,"src":"19266:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19266:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83286,"mutability":"mutable","name":"_timestamp","nameLocation":"19297:10:169","nodeType":"VariableDeclaration","scope":83318,"src":"19290:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":83285,"name":"uint48","nodeType":"ElementaryTypeName","src":"19290:6:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":83288,"mutability":"mutable","name":"_prevCommittedBlock","nameLocation":"19325:19:169","nodeType":"VariableDeclaration","scope":83318,"src":"19317:27:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19317:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83290,"mutability":"mutable","name":"_expiry","nameLocation":"19360:7:169","nodeType":"VariableDeclaration","scope":83318,"src":"19354:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":83289,"name":"uint8","nodeType":"ElementaryTypeName","src":"19354:5:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":83292,"mutability":"mutable","name":"_chainCommitmentHash","nameLocation":"19385:20:169","nodeType":"VariableDeclaration","scope":83318,"src":"19377:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19377:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83294,"mutability":"mutable","name":"_codeCommitmentsHash","nameLocation":"19423:20:169","nodeType":"VariableDeclaration","scope":83318,"src":"19415:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83293,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19415:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83296,"mutability":"mutable","name":"_rewardsCommitmentHash","nameLocation":"19461:22:169","nodeType":"VariableDeclaration","scope":83318,"src":"19453:30:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83295,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19453:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83298,"mutability":"mutable","name":"_validatorsCommitmentHash","nameLocation":"19501:25:169","nodeType":"VariableDeclaration","scope":83318,"src":"19493:33:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19493:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19256:276:169"},"returnParameters":{"id":83302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83318,"src":"19556:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19556:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19555:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83350,"nodeType":"FunctionDefinition","src":"20056:407:169","nodes":[],"body":{"id":83349,"nodeType":"Block","src":"20133:330:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":83330,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20207:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20215:2:169","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":83050,"src":"20207:10:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83332,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20235:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20243:11:169","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"20235:19:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83334,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20272:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20280:7:169","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"20272:15:169","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":83336,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20305:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20313:5:169","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"20305:13:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":83338,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20336:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20344:12:169","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"20336:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_memory_ptr","typeString":"struct Gear.ReplyDetails memory"}},"id":83340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20357:2:169","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":83099,"src":"20336:23:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":83341,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20377:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20385:12:169","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"20377:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_memory_ptr","typeString":"struct Gear.ReplyDetails memory"}},"id":83343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20398:4:169","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":83102,"src":"20377:25:169","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":83344,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83322,"src":"20420:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message memory"}},"id":83345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20428:4:169","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":83066,"src":"20420:12:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":83328,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20173:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20177:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"20173:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20173:273:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83327,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20150:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20150:306:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83326,"id":83348,"nodeType":"Return","src":"20143:313:169"}]},"documentation":{"id":83319,"nodeType":"StructuredDocumentation","src":"19931:120:169","text":" @dev Computes the hash of `Message`.\n @param message The message for which to compute the hash."},"implemented":true,"kind":"function","modifiers":[],"name":"messageHash","nameLocation":"20065:11:169","parameters":{"id":83323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83322,"mutability":"mutable","name":"message","nameLocation":"20092:7:169","nodeType":"VariableDeclaration","scope":83350,"src":"20077:22:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_memory_ptr","typeString":"struct Gear.Message"},"typeName":{"id":83321,"nodeType":"UserDefinedTypeName","pathNode":{"id":83320,"name":"Message","nameLocations":["20077:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"20077:7:169"},"referencedDeclaration":83067,"src":"20077:7:169","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"20076:24:169"},"returnParameters":{"id":83326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83350,"src":"20124:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20124:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20123:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83372,"nodeType":"FunctionDefinition","src":"20670:199:169","nodes":[],"body":{"id":83371,"nodeType":"Block","src":"20784:85:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83365,"name":"_messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83353,"src":"20828:10:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83366,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83355,"src":"20840:12:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83367,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83357,"src":"20854:6:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":83363,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20811:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20815:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"20811:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20811:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83362,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20801:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20801:61:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83361,"id":83370,"nodeType":"Return","src":"20794:68:169"}]},"documentation":{"id":83351,"nodeType":"StructuredDocumentation","src":"20469:196:169","text":" @dev Computes the hash of `ValueClaim`.\n @param _messageId The message ID.\n @param _destination The destination address.\n @param _value The value of the claim."},"implemented":true,"kind":"function","modifiers":[],"name":"valueClaimHash","nameLocation":"20679:14:169","parameters":{"id":83358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83353,"mutability":"mutable","name":"_messageId","nameLocation":"20702:10:169","nodeType":"VariableDeclaration","scope":83372,"src":"20694:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20694:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83355,"mutability":"mutable","name":"_destination","nameLocation":"20722:12:169","nodeType":"VariableDeclaration","scope":83372,"src":"20714:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83354,"name":"address","nodeType":"ElementaryTypeName","src":"20714:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83357,"mutability":"mutable","name":"_value","nameLocation":"20744:6:169","nodeType":"VariableDeclaration","scope":83372,"src":"20736:14:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83356,"name":"uint128","nodeType":"ElementaryTypeName","src":"20736:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"20693:58:169"},"returnParameters":{"id":83361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83372,"src":"20775:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20775:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20774:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83409,"nodeType":"FunctionDefinition","src":"21373:646:169","nodes":[],"body":{"id":83408,"nodeType":"Block","src":"21683:336:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":83397,"name":"actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83375,"src":"21757:5:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83398,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83377,"src":"21780:12:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83399,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83379,"src":"21810:6:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83400,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83381,"src":"21834:9:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83401,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83383,"src":"21861:14:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":83402,"name":"valueToReceiveNegativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83385,"src":"21893:26:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83403,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83387,"src":"21937:15:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83404,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83389,"src":"21970:18:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83395,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21723:3:169","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21727:12:169","memberName":"encodePacked","nodeType":"MemberAccess","src":"21723:16:169","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":83405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21723:279:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":83394,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"21700:9:169","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":83406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21700:312:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83393,"id":83407,"nodeType":"Return","src":"21693:319:169"}]},"documentation":{"id":83373,"nodeType":"StructuredDocumentation","src":"20875:493:169","text":" @dev Computes the hash of `StateTransition`.\n @param actor The actor address.\n @param newStateHash The hash of the new state.\n @param exited The exit status.\n @param inheritor The inheritor address.\n @param valueToReceive The value to receive.\n @param valueToReceiveNegativeSign The sign of the value to receive.\n @param valueClaimsHash The hash of the value claims.\n @param messagesHashesHash The hash of the messages hashes."},"implemented":true,"kind":"function","modifiers":[],"name":"stateTransitionHash","nameLocation":"21382:19:169","parameters":{"id":83390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83375,"mutability":"mutable","name":"actor","nameLocation":"21419:5:169","nodeType":"VariableDeclaration","scope":83409,"src":"21411:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83374,"name":"address","nodeType":"ElementaryTypeName","src":"21411:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83377,"mutability":"mutable","name":"newStateHash","nameLocation":"21442:12:169","nodeType":"VariableDeclaration","scope":83409,"src":"21434:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21434:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83379,"mutability":"mutable","name":"exited","nameLocation":"21469:6:169","nodeType":"VariableDeclaration","scope":83409,"src":"21464:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83378,"name":"bool","nodeType":"ElementaryTypeName","src":"21464:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83381,"mutability":"mutable","name":"inheritor","nameLocation":"21493:9:169","nodeType":"VariableDeclaration","scope":83409,"src":"21485:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83380,"name":"address","nodeType":"ElementaryTypeName","src":"21485:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83383,"mutability":"mutable","name":"valueToReceive","nameLocation":"21520:14:169","nodeType":"VariableDeclaration","scope":83409,"src":"21512:22:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83382,"name":"uint128","nodeType":"ElementaryTypeName","src":"21512:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83385,"mutability":"mutable","name":"valueToReceiveNegativeSign","nameLocation":"21549:26:169","nodeType":"VariableDeclaration","scope":83409,"src":"21544:31:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83384,"name":"bool","nodeType":"ElementaryTypeName","src":"21544:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":83387,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"21593:15:169","nodeType":"VariableDeclaration","scope":83409,"src":"21585:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83386,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21585:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83389,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"21626:18:169","nodeType":"VariableDeclaration","scope":83409,"src":"21618:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83388,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21618:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21401:249:169"},"returnParameters":{"id":83393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83392,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83409,"src":"21674:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83391,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21674:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21673:9:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83474,"nodeType":"FunctionDefinition","src":"22293:532:169","nodes":[],"body":{"id":83473,"nodeType":"Block","src":"22392:433:169","nodes":[],"statements":[{"assignments":[83420],"declarations":[{"constant":false,"id":83420,"mutability":"mutable","name":"start","nameLocation":"22410:5:169","nodeType":"VariableDeclaration","scope":83473,"src":"22402:13:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83419,"name":"uint256","nodeType":"ElementaryTypeName","src":"22402:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83425,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83421,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22418:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22424:6:169","memberName":"number","nodeType":"MemberAccess","src":"22418:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":83423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22433:1:169","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22418:16:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22402:32:169"},{"assignments":[83427],"declarations":[{"constant":false,"id":83427,"mutability":"mutable","name":"end","nameLocation":"22452:3:169","nodeType":"VariableDeclaration","scope":83473,"src":"22444:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83426,"name":"uint256","nodeType":"ElementaryTypeName","src":"22444:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83438,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83428,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83414,"src":"22458:6:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":83429,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22468:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22474:6:169","memberName":"number","nodeType":"MemberAccess","src":"22468:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22458:22:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83433,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22487:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22493:6:169","memberName":"number","nodeType":"MemberAccess","src":"22487:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83435,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83414,"src":"22502:6:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22487:21:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22458:50:169","trueExpression":{"hexValue":"30","id":83432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22483:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22444:64:169"},{"body":{"id":83469,"nodeType":"Block","src":"22553:243:169","statements":[{"assignments":[83447],"declarations":[{"constant":false,"id":83447,"mutability":"mutable","name":"ret","nameLocation":"22575:3:169","nodeType":"VariableDeclaration","scope":83469,"src":"22567:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83446,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22567:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83451,"initialValue":{"arguments":[{"id":83449,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83440,"src":"22591:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83448,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22581:9:169","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":83450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22581:12:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"22567:26:169"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83452,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83447,"src":"22611:3:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83453,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83412,"src":"22618:4:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22611:11:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83458,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83447,"src":"22678:3:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22685:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22678:8:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83463,"nodeType":"IfStatement","src":"22674:52:169","trueBody":{"id":83462,"nodeType":"Block","src":"22688:38:169","statements":[{"id":83461,"nodeType":"Break","src":"22706:5:169"}]}},"id":83464,"nodeType":"IfStatement","src":"22607:119:169","trueBody":{"id":83457,"nodeType":"Block","src":"22624:44:169","statements":[{"expression":{"hexValue":"74727565","id":83455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22649:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":83418,"id":83456,"nodeType":"Return","src":"22642:11:169"}]}},{"id":83468,"nodeType":"UncheckedBlock","src":"22740:46:169","statements":[{"expression":{"id":83466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"22768:3:169","subExpression":{"id":83465,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83440,"src":"22768:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83467,"nodeType":"ExpressionStatement","src":"22768:3:169"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83443,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83440,"src":"22542:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":83444,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83427,"src":"22547:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22542:8:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83470,"initializationExpression":{"assignments":[83440],"declarations":[{"constant":false,"id":83440,"mutability":"mutable","name":"i","nameLocation":"22531:1:169","nodeType":"VariableDeclaration","scope":83470,"src":"22523:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83439,"name":"uint256","nodeType":"ElementaryTypeName","src":"22523:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83442,"initialValue":{"id":83441,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83420,"src":"22535:5:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22523:17:169"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"22518:278:169"},{"expression":{"hexValue":"66616c7365","id":83471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22813:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83418,"id":83472,"nodeType":"Return","src":"22806:12:169"}]},"documentation":{"id":83410,"nodeType":"StructuredDocumentation","src":"22025:263:169","text":" @dev Checks if block is predecessor of the current block.\n @param hash The hash of the block to check.\n @param expiry The expiry time for the block.\n @return isPredecessor `true` if the block is predecessor, `false` otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"blockIsPredecessor","nameLocation":"22302:18:169","parameters":{"id":83415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83412,"mutability":"mutable","name":"hash","nameLocation":"22329:4:169","nodeType":"VariableDeclaration","scope":83474,"src":"22321:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22321:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83414,"mutability":"mutable","name":"expiry","nameLocation":"22341:6:169","nodeType":"VariableDeclaration","scope":83474,"src":"22335:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":83413,"name":"uint8","nodeType":"ElementaryTypeName","src":"22335:5:169","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"22320:28:169"},"returnParameters":{"id":83418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83417,"mutability":"mutable","name":"isPredecessor","nameLocation":"22377:13:169","nodeType":"VariableDeclaration","scope":83474,"src":"22372:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83416,"name":"bool","nodeType":"ElementaryTypeName","src":"22372:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22371:20:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83487,"nodeType":"FunctionDefinition","src":"22970:222:169","nodes":[],"body":{"id":83486,"nodeType":"Block","src":"23079:113:169","nodes":[],"statements":[{"expression":{"arguments":[{"id":83482,"name":"COMPUTATION_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82839,"src":"23128:21:169","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":83483,"name":"WVARA_PER_SECOND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82851,"src":"23167:16:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83481,"name":"ComputationSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83038,"src":"23096:19:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ComputationSettings_$83038_storage_ptr_$","typeString":"type(struct Gear.ComputationSettings storage pointer)"}},"id":83484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["23117:9:169","23151:14:169"],"names":["threshold","wvaraPerSecond"],"nodeType":"FunctionCall","src":"23096:89:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"functionReturnParameters":83480,"id":83485,"nodeType":"Return","src":"23089:96:169"}]},"documentation":{"id":83475,"nodeType":"StructuredDocumentation","src":"22831:134:169","text":" @dev Returns the default computation settings.\n @return computationSettings The default computation settings."},"implemented":true,"kind":"function","modifiers":[],"name":"defaultComputationSettings","nameLocation":"22979:26:169","parameters":{"id":83476,"nodeType":"ParameterList","parameters":[],"src":"23005:2:169"},"returnParameters":{"id":83480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83479,"mutability":"mutable","name":"computationSettings","nameLocation":"23058:19:169","nodeType":"VariableDeclaration","scope":83487,"src":"23031:46:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":83478,"nodeType":"UserDefinedTypeName","pathNode":{"id":83477,"name":"ComputationSettings","nameLocations":["23031:19:169"],"nodeType":"IdentifierPath","referencedDeclaration":83038,"src":"23031:19:169"},"referencedDeclaration":83038,"src":"23031:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"23030:48:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83510,"nodeType":"FunctionDefinition","src":"23318:229:169","nodes":[],"body":{"id":83509,"nodeType":"Block","src":"23405:142:169","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":83497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23466:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":83496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23458:7:169","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":83495,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23458:7:169","typeDescriptions":{}}},"id":83498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23458:10:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":83501,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23496:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23502:6:169","memberName":"number","nodeType":"MemberAccess","src":"23496:12:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83499,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55635,"src":"23478:8:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$55635_$","typeString":"type(library SafeCast)"}},"id":83500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23487:8:169","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":54681,"src":"23478:17:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":83503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23478:31:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83504,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"23522:4:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":83505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23527:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"23522:14:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":83506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23522:16:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":83494,"name":"GenesisBlockInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83046,"src":"23434:16:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_GenesisBlockInfo_$83046_storage_ptr_$","typeString":"type(struct Gear.GenesisBlockInfo storage pointer)"}},"id":83507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["23452:4:169","23470:6:169","23511:9:169"],"names":["hash","number","timestamp"],"nodeType":"FunctionCall","src":"23434:106:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"functionReturnParameters":83493,"id":83508,"nodeType":"Return","src":"23415:125:169"}]},"documentation":{"id":83488,"nodeType":"StructuredDocumentation","src":"23198:115:169","text":" @dev Creates new genesis block info.\n @return genesisBlockInfo The new genesis block info."},"implemented":true,"kind":"function","modifiers":[],"name":"newGenesis","nameLocation":"23327:10:169","parameters":{"id":83489,"nodeType":"ParameterList","parameters":[],"src":"23337:2:169"},"returnParameters":{"id":83493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83492,"mutability":"mutable","name":"genesisBlockInfo","nameLocation":"23387:16:169","nodeType":"VariableDeclaration","scope":83510,"src":"23363:40:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_memory_ptr","typeString":"struct Gear.GenesisBlockInfo"},"typeName":{"id":83491,"nodeType":"UserDefinedTypeName","pathNode":{"id":83490,"name":"GenesisBlockInfo","nameLocations":["23363:16:169"],"nodeType":"IdentifierPath","referencedDeclaration":83046,"src":"23363:16:169"},"referencedDeclaration":83046,"src":"23363:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage_ptr","typeString":"struct Gear.GenesisBlockInfo"}},"visibility":"internal"}],"src":"23362:42:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83760,"nodeType":"FunctionDefinition","src":"24038:3813:169","nodes":[],"body":{"id":83759,"nodeType":"Block","src":"24301:3550:169","nodes":[],"statements":[{"assignments":[83532],"declarations":[{"constant":false,"id":83532,"mutability":"mutable","name":"eraStarted","nameLocation":"24373:10:169","nodeType":"VariableDeclaration","scope":83759,"src":"24365:18:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83531,"name":"uint256","nodeType":"ElementaryTypeName","src":"24365:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83538,"initialValue":{"arguments":[{"id":83534,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"24399:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":83535,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24407:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24413:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"24407:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83533,"name":"eraStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83993,"src":"24386:12:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":83537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24386:37:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24365:58:169"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83539,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"24437:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83540,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83532,"src":"24442:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24437:15:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83542,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24456:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24462:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"24456:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83544,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83532,"src":"24474:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":83545,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"24487:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24494:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"24487:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":83547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24504:15:169","memberName":"validationDelay","nodeType":"MemberAccess","referencedDeclaration":83140,"src":"24487:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24474:45:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24456:63:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24437:82:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83592,"nodeType":"Block","src":"24880:229:169","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83575,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"24902:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":83576,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24908:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24914:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"24908:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24902:21:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83579,"name":"TimestampInFuture","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82860,"src":"24925:17:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24925:19:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83574,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24894:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24894:51:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83582,"nodeType":"ExpressionStatement","src":"24894:51:169"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83583,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"24964:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83584,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83532,"src":"24969:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24964:15:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83591,"nodeType":"IfStatement","src":"24960:69:169","trueBody":{"id":83590,"nodeType":"Block","src":"24981:48:169","statements":[{"expression":{"id":83588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83586,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"24999:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83587,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83532,"src":"25004:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24999:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83589,"nodeType":"ExpressionStatement","src":"24999:15:169"}]}}]},"id":83593,"nodeType":"IfStatement","src":"24433:676:169","trueBody":{"id":83573,"nodeType":"Block","src":"24521:353:169","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83552,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"24543:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"expression":{"id":83553,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"24549:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24556:12:169","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"24549:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":83555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24569:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"24549:29:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"24543:35:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83557,"name":"ValidationBeforeGenesis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82854,"src":"24580:23:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24580:25:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83551,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24535:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24535:71:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83560,"nodeType":"ExpressionStatement","src":"24535:71:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83562,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"24628:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":83563,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"24633:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24640:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"24633:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":83565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24650:3:169","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83136,"src":"24633:20:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24628:25:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":83567,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83532,"src":"24657:10:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24628:39:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83569,"name":"TimestampOlderThanPreviousEra","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82857,"src":"24669:29:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24669:31:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83561,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24620:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24620:81:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83572,"nodeType":"ExpressionStatement","src":"24620:81:169"}]}},{"assignments":[83596],"declarations":[{"constant":false,"id":83596,"mutability":"mutable","name":"validators","nameLocation":"25190:10:169","nodeType":"VariableDeclaration","scope":83759,"src":"25171:29:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83595,"nodeType":"UserDefinedTypeName","pathNode":{"id":83594,"name":"Validators","nameLocations":["25171:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"25171:10:169"},"referencedDeclaration":82899,"src":"25171:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":83601,"initialValue":{"arguments":[{"id":83598,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"25216:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":83599,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83526,"src":"25224:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83597,"name":"validatorsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83832,"src":"25203:12:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (struct Gear.Validators storage pointer)"}},"id":83600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25203:24:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"25171:56:169"},{"assignments":[83603],"declarations":[{"constant":false,"id":83603,"mutability":"mutable","name":"_messageHash","nameLocation":"25245:12:169","nodeType":"VariableDeclaration","scope":83759,"src":"25237:20:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83602,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25237:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83611,"initialValue":{"arguments":[{"id":83609,"name":"_dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83518,"src":"25306:9:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":83606,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25268:4:169","typeDescriptions":{"typeIdentifier":"t_contract$_Gear_$84058","typeString":"library Gear"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Gear_$84058","typeString":"library Gear"}],"id":83605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25260:7:169","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83604,"name":"address","nodeType":"ElementaryTypeName","src":"25260:7:169","typeDescriptions":{}}},"id":83607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25260:13:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25274:31:169","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":52224,"src":"25260:45:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes32) pure returns (bytes32)"}},"id":83610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25260:56:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"25237:79:169"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"},"id":83615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83612,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83521,"src":"25331:14:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":83613,"name":"SignatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83199,"src":"25349:13:169","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SignatureType_$83199_$","typeString":"type(enum Gear.SignatureType)"}},"id":83614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25363:5:169","memberName":"FROST","nodeType":"MemberAccess","referencedDeclaration":83197,"src":"25349:19:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},"src":"25331:37:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"},"id":83668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83665,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83521,"src":"26527:14:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":83666,"name":"SignatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83199,"src":"26545:13:169","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SignatureType_$83199_$","typeString":"type(enum Gear.SignatureType)"}},"id":83667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26559:5:169","memberName":"ECDSA","nodeType":"MemberAccess","referencedDeclaration":83198,"src":"26545:19:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},"src":"26527:37:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83755,"nodeType":"IfStatement","src":"26523:1299:169","trueBody":{"id":83754,"nodeType":"Block","src":"26566:1256:169","statements":[{"assignments":[83670],"declarations":[{"constant":false,"id":83670,"mutability":"mutable","name":"threshold","nameLocation":"26588:9:169","nodeType":"VariableDeclaration","scope":83754,"src":"26580:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83669,"name":"uint256","nodeType":"ElementaryTypeName","src":"26580:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83682,"initialValue":{"arguments":[{"expression":{"expression":{"id":83672,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83596,"src":"26637:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26648:4:169","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"26637:15:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":83674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26653:6:169","memberName":"length","nodeType":"MemberAccess","src":"26637:22:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":83675,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"26677:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26684:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"26677:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26703:18:169","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83144,"src":"26677:44:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":83678,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83514,"src":"26739:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26746:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"26739:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26765:20:169","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83146,"src":"26739:46:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83671,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83945,"src":"26600:19:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint128_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint256,uint128,uint128) pure returns (uint256)"}},"id":83681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26600:199:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26580:219:169"},{"assignments":[83684],"declarations":[{"constant":false,"id":83684,"mutability":"mutable","name":"validSignatures","nameLocation":"26822:15:169","nodeType":"VariableDeclaration","scope":83754,"src":"26814:23:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83683,"name":"uint256","nodeType":"ElementaryTypeName","src":"26814:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83686,"initialValue":{"hexValue":"30","id":83685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26840:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26814:27:169"},{"body":{"id":83750,"nodeType":"Block","src":"26905:880:169","statements":[{"assignments":[83699],"declarations":[{"constant":false,"id":83699,"mutability":"mutable","name":"signature","nameLocation":"26938:9:169","nodeType":"VariableDeclaration","scope":83750,"src":"26923:24:169","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":83698,"name":"bytes","nodeType":"ElementaryTypeName","src":"26923:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":83703,"initialValue":{"baseExpression":{"id":83700,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83524,"src":"26950:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83702,"indexExpression":{"id":83701,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83688,"src":"26962:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26950:14:169","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"26923:41:169"},{"assignments":[83705],"declarations":[{"constant":false,"id":83705,"mutability":"mutable","name":"validator","nameLocation":"26991:9:169","nodeType":"VariableDeclaration","scope":83750,"src":"26983:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83704,"name":"address","nodeType":"ElementaryTypeName","src":"26983:7:169","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":83710,"initialValue":{"arguments":[{"id":83708,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83699,"src":"27024:9:169","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":83706,"name":"_messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83603,"src":"27003:12:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27016:7:169","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":50794,"src":"27003:20:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":83709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27003:31:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"26983:51:169"},{"condition":{"baseExpression":{"expression":{"id":83711,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83596,"src":"27057:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27068:3:169","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":82891,"src":"27057:14:169","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":83714,"indexExpression":{"id":83713,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83705,"src":"27072:9:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27057:25:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83749,"nodeType":"IfStatement","src":"27053:718:169","trueBody":{"id":83748,"nodeType":"Block","src":"27084:687:169","statements":[{"assignments":[83717],"declarations":[{"constant":false,"id":83717,"mutability":"mutable","name":"transientStorageValidatorsSlot","nameLocation":"27309:30:169","nodeType":"VariableDeclaration","scope":83748,"src":"27301:38:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83716,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27301:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev SECURITY:\n We use transient storage to prevent multiple signatures from the same validator.","id":83722,"initialValue":{"arguments":[{"id":83720,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83705,"src":"27379:9:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":83718,"name":"routerTransientStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83516,"src":"27342:22:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27365:13:169","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":48892,"src":"27342:36:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":83721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27342:47:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27301:88:169"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83723,"name":"transientStorageValidatorsSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83717,"src":"27416:30:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27447:9:169","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":50528,"src":"27416:40:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$50513_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":83725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27416:42:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$50513","typeString":"TransientSlot.BooleanSlot"}},"id":83726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27459:5:169","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":50612,"src":"27416:48:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlot_$50513_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlot_$50513_$","typeString":"function (TransientSlot.BooleanSlot) view returns (bool)"}},"id":83727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27416:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83738,"nodeType":"Block","src":"27531:104:169","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":83735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27607:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":83730,"name":"transientStorageValidatorsSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83717,"src":"27557:30:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27588:9:169","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":50528,"src":"27557:40:169","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$50513_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":83733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27557:42:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$50513","typeString":"TransientSlot.BooleanSlot"}},"id":83734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27600:6:169","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":50623,"src":"27557:49:169","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$50513_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$50513_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":83736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27557:55:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83737,"nodeType":"ExpressionStatement","src":"27557:55:169"}]},"id":83739,"nodeType":"IfStatement","src":"27412:223:169","trueBody":{"id":83729,"nodeType":"Block","src":"27468:57:169","statements":[{"id":83728,"nodeType":"Continue","src":"27494:8:169"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"27661:17:169","subExpression":{"id":83740,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83684,"src":"27663:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83742,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83670,"src":"27682:9:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27661:30:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83747,"nodeType":"IfStatement","src":"27657:96:169","trueBody":{"id":83746,"nodeType":"Block","src":"27693:60:169","statements":[{"expression":{"hexValue":"74727565","id":83744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27726:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":83530,"id":83745,"nodeType":"Return","src":"27719:11:169"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83691,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83688,"src":"26876:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":83692,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83524,"src":"26880:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26892:6:169","memberName":"length","nodeType":"MemberAccess","src":"26880:18:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26876:22:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83751,"initializationExpression":{"assignments":[83688],"declarations":[{"constant":false,"id":83688,"mutability":"mutable","name":"i","nameLocation":"26869:1:169","nodeType":"VariableDeclaration","scope":83751,"src":"26861:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83687,"name":"uint256","nodeType":"ElementaryTypeName","src":"26861:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83690,"initialValue":{"hexValue":"30","id":83689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26873:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26861:13:169"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":83696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26900:3:169","subExpression":{"id":83695,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83688,"src":"26900:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83697,"nodeType":"ExpressionStatement","src":"26900:3:169"},"nodeType":"ForStatement","src":"26856:929:169"},{"expression":{"hexValue":"66616c7365","id":83752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27806:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83530,"id":83753,"nodeType":"Return","src":"27799:12:169"}]}},"id":83756,"nodeType":"IfStatement","src":"25327:2495:169","trueBody":{"id":83664,"nodeType":"Block","src":"25370:1147:169","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83617,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83524,"src":"25392:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25404:6:169","memberName":"length","nodeType":"MemberAccess","src":"25392:18:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":83619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25414:1:169","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25392:23:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83621,"name":"InvalidFrostSignatureCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82863,"src":"25417:26:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25417:28:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83616,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25384:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25384:62:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83624,"nodeType":"ExpressionStatement","src":"25384:62:169"},{"assignments":[83626],"declarations":[{"constant":false,"id":83626,"mutability":"mutable","name":"_signature","nameLocation":"25474:10:169","nodeType":"VariableDeclaration","scope":83664,"src":"25461:23:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":83625,"name":"bytes","nodeType":"ElementaryTypeName","src":"25461:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":83630,"initialValue":{"baseExpression":{"id":83627,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83524,"src":"25487:11:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":83629,"indexExpression":{"hexValue":"30","id":83628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25499:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25487:14:169","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"25461:40:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83632,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83626,"src":"25523:10:169","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":83633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25534:6:169","memberName":"length","nodeType":"MemberAccess","src":"25523:17:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3936","id":83634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25544:2:169","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"25523:23:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83636,"name":"InvalidFrostSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82866,"src":"25548:27:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25548:29:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83631,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25515:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25515:63:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83639,"nodeType":"ExpressionStatement","src":"25515:63:169"},{"assignments":[83641],"declarations":[{"constant":false,"id":83641,"mutability":"mutable","name":"_signatureCommitmentX","nameLocation":"25601:21:169","nodeType":"VariableDeclaration","scope":83664,"src":"25593:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83640,"name":"uint256","nodeType":"ElementaryTypeName","src":"25593:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83642,"nodeType":"VariableDeclarationStatement","src":"25593:29:169"},{"assignments":[83644],"declarations":[{"constant":false,"id":83644,"mutability":"mutable","name":"_signatureCommitmentY","nameLocation":"25644:21:169","nodeType":"VariableDeclaration","scope":83664,"src":"25636:29:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83643,"name":"uint256","nodeType":"ElementaryTypeName","src":"25636:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83645,"nodeType":"VariableDeclarationStatement","src":"25636:29:169"},{"assignments":[83647],"declarations":[{"constant":false,"id":83647,"mutability":"mutable","name":"_signatureZ","nameLocation":"25687:11:169","nodeType":"VariableDeclaration","scope":83664,"src":"25679:19:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83646,"name":"uint256","nodeType":"ElementaryTypeName","src":"25679:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83648,"nodeType":"VariableDeclarationStatement","src":"25679:19:169"},{"AST":{"nativeSrc":"25738:215:169","nodeType":"YulBlock","src":"25738:215:169","statements":[{"nativeSrc":"25756:53:169","nodeType":"YulAssignment","src":"25756:53:169","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"25791:10:169","nodeType":"YulIdentifier","src":"25791:10:169"},{"kind":"number","nativeSrc":"25803:4:169","nodeType":"YulLiteral","src":"25803:4:169","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25787:3:169","nodeType":"YulIdentifier","src":"25787:3:169"},"nativeSrc":"25787:21:169","nodeType":"YulFunctionCall","src":"25787:21:169"}],"functionName":{"name":"mload","nativeSrc":"25781:5:169","nodeType":"YulIdentifier","src":"25781:5:169"},"nativeSrc":"25781:28:169","nodeType":"YulFunctionCall","src":"25781:28:169"},"variableNames":[{"name":"_signatureCommitmentX","nativeSrc":"25756:21:169","nodeType":"YulIdentifier","src":"25756:21:169"}]},{"nativeSrc":"25826:53:169","nodeType":"YulAssignment","src":"25826:53:169","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"25861:10:169","nodeType":"YulIdentifier","src":"25861:10:169"},{"kind":"number","nativeSrc":"25873:4:169","nodeType":"YulLiteral","src":"25873:4:169","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"25857:3:169","nodeType":"YulIdentifier","src":"25857:3:169"},"nativeSrc":"25857:21:169","nodeType":"YulFunctionCall","src":"25857:21:169"}],"functionName":{"name":"mload","nativeSrc":"25851:5:169","nodeType":"YulIdentifier","src":"25851:5:169"},"nativeSrc":"25851:28:169","nodeType":"YulFunctionCall","src":"25851:28:169"},"variableNames":[{"name":"_signatureCommitmentY","nativeSrc":"25826:21:169","nodeType":"YulIdentifier","src":"25826:21:169"}]},{"nativeSrc":"25896:43:169","nodeType":"YulAssignment","src":"25896:43:169","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"25921:10:169","nodeType":"YulIdentifier","src":"25921:10:169"},{"kind":"number","nativeSrc":"25933:4:169","nodeType":"YulLiteral","src":"25933:4:169","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"25917:3:169","nodeType":"YulIdentifier","src":"25917:3:169"},"nativeSrc":"25917:21:169","nodeType":"YulFunctionCall","src":"25917:21:169"}],"functionName":{"name":"mload","nativeSrc":"25911:5:169","nodeType":"YulIdentifier","src":"25911:5:169"},"nativeSrc":"25911:28:169","nodeType":"YulFunctionCall","src":"25911:28:169"},"variableNames":[{"name":"_signatureZ","nativeSrc":"25896:11:169","nodeType":"YulIdentifier","src":"25896:11:169"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83626,"isOffset":false,"isSlot":false,"src":"25791:10:169","valueSize":1},{"declaration":83626,"isOffset":false,"isSlot":false,"src":"25861:10:169","valueSize":1},{"declaration":83626,"isOffset":false,"isSlot":false,"src":"25921:10:169","valueSize":1},{"declaration":83641,"isOffset":false,"isSlot":false,"src":"25756:21:169","valueSize":1},{"declaration":83644,"isOffset":false,"isSlot":false,"src":"25826:21:169","valueSize":1},{"declaration":83647,"isOffset":false,"isSlot":false,"src":"25896:11:169","valueSize":1}],"flags":["memory-safe"],"id":83649,"nodeType":"InlineAssembly","src":"25713:240:169"},{"documentation":" @dev SECURITY: `FROST.isValidPublicKey(validators.aggregatedPublicKey.x, validators.aggregatedPublicKey.y)` is not called here,\n because it is already checked in `Router._resetValidators(...)`.","expression":{"arguments":[{"expression":{"expression":{"id":83652,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83596,"src":"26273:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26284:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82883,"src":"26273:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":83654,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26304:1:169","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":82875,"src":"26273:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":83655,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83596,"src":"26323:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":83656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26334:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82883,"src":"26323:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":83657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26354:1:169","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":82877,"src":"26323:32:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83658,"name":"_signatureCommitmentX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83641,"src":"26373:21:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83659,"name":"_signatureCommitmentY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83644,"src":"26412:21:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83660,"name":"_signatureZ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83647,"src":"26451:11:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83661,"name":"_messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83603,"src":"26480:12:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83650,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"26234:5:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FROST_$40965_$","typeString":"type(library FROST)"}},"id":83651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26240:15:169","memberName":"verifySignature","nodeType":"MemberAccess","referencedDeclaration":40964,"src":"26234:21:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$_t_bool_$","typeString":"function (uint256,uint256,uint256,uint256,uint256,bytes32) view returns (bool)"}},"id":83662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26234:272:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":83530,"id":83663,"nodeType":"Return","src":"26227:279:169"}]}},{"expression":{"hexValue":"66616c7365","id":83757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27839:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83530,"id":83758,"nodeType":"Return","src":"27832:12:169"}]},"documentation":{"id":83511,"nodeType":"StructuredDocumentation","src":"23553:480:169","text":" @dev Validates signatures of the given data hash at the given timestamp.\n @param router The router storage.\n @param routerTransientStorage The router transient storage slot for this validation.\n @param _dataHash The hash of the data to validate signatures for.\n @param _signatureType The type of signatures to validate.\n @param _signatures The signatures to validate.\n @param ts The timestamp at which to validate signatures."},"implemented":true,"kind":"function","modifiers":[],"name":"validateSignaturesAt","nameLocation":"24047:20:169","parameters":{"id":83527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83514,"mutability":"mutable","name":"router","nameLocation":"24101:6:169","nodeType":"VariableDeclaration","scope":83760,"src":"24077:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83513,"nodeType":"UserDefinedTypeName","pathNode":{"id":83512,"name":"IRouter.Storage","nameLocations":["24077:7:169","24085:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"24077:15:169"},"referencedDeclaration":74490,"src":"24077:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83516,"mutability":"mutable","name":"routerTransientStorage","nameLocation":"24125:22:169","nodeType":"VariableDeclaration","scope":83760,"src":"24117:30:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24117:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83518,"mutability":"mutable","name":"_dataHash","nameLocation":"24165:9:169","nodeType":"VariableDeclaration","scope":83760,"src":"24157:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24157:7:169","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83521,"mutability":"mutable","name":"_signatureType","nameLocation":"24198:14:169","nodeType":"VariableDeclaration","scope":83760,"src":"24184:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"},"typeName":{"id":83520,"nodeType":"UserDefinedTypeName","pathNode":{"id":83519,"name":"SignatureType","nameLocations":["24184:13:169"],"nodeType":"IdentifierPath","referencedDeclaration":83199,"src":"24184:13:169"},"referencedDeclaration":83199,"src":"24184:13:169","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},"visibility":"internal"},{"constant":false,"id":83524,"mutability":"mutable","name":"_signatures","nameLocation":"24239:11:169","nodeType":"VariableDeclaration","scope":83760,"src":"24222:28:169","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":83522,"name":"bytes","nodeType":"ElementaryTypeName","src":"24222:5:169","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":83523,"nodeType":"ArrayTypeName","src":"24222:7:169","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":83526,"mutability":"mutable","name":"ts","nameLocation":"24268:2:169","nodeType":"VariableDeclaration","scope":83760,"src":"24260:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83525,"name":"uint256","nodeType":"ElementaryTypeName","src":"24260:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24067:209:169"},"returnParameters":{"id":83530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83529,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83760,"src":"24295:4:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83528,"name":"bool","nodeType":"ElementaryTypeName","src":"24295:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24294:6:169"},"scope":84058,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":83777,"nodeType":"FunctionDefinition","src":"27970:166:169","nodes":[],"body":{"id":83776,"nodeType":"Block","src":"28075:61:169","nodes":[],"statements":[{"expression":{"arguments":[{"id":83771,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83764,"src":"28105:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":83772,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"28113:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28119:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"28113:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83770,"name":"validatorsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83832,"src":"28092:12:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (struct Gear.Validators storage pointer)"}},"id":83774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28092:37:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"functionReturnParameters":83769,"id":83775,"nodeType":"Return","src":"28085:44:169"}]},"documentation":{"id":83761,"nodeType":"StructuredDocumentation","src":"27857:108:169","text":" @dev Returns the validators for the current era.\n @param router The router storage."},"implemented":true,"kind":"function","modifiers":[],"name":"currentEraValidators","nameLocation":"27979:20:169","parameters":{"id":83765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83764,"mutability":"mutable","name":"router","nameLocation":"28024:6:169","nodeType":"VariableDeclaration","scope":83777,"src":"28000:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83763,"nodeType":"UserDefinedTypeName","pathNode":{"id":83762,"name":"IRouter.Storage","nameLocations":["28000:7:169","28008:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"28000:15:169"},"referencedDeclaration":74490,"src":"28000:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"27999:32:169"},"returnParameters":{"id":83769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83768,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83777,"src":"28055:18:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83767,"nodeType":"UserDefinedTypeName","pathNode":{"id":83766,"name":"Validators","nameLocations":["28055:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"28055:10:169"},"referencedDeclaration":82899,"src":"28055:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28054:20:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83804,"nodeType":"FunctionDefinition","src":"28342:322:169","nodes":[],"body":{"id":83803,"nodeType":"Block","src":"28448:216:169","nodes":[],"statements":[{"condition":{"arguments":[{"id":83788,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83781,"src":"28488:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":83789,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"28496:5:169","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":83790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28502:9:169","memberName":"timestamp","nodeType":"MemberAccess","src":"28496:15:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83787,"name":"validatorsStoredInSlot1At","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83899,"src":"28462:25:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (bool)"}},"id":83791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28462:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83801,"nodeType":"Block","src":"28589:69:169","statements":[{"expression":{"expression":{"expression":{"id":83797,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83781,"src":"28610:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28617:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"28610:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28636:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83152,"src":"28610:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83786,"id":83800,"nodeType":"Return","src":"28603:44:169"}]},"id":83802,"nodeType":"IfStatement","src":"28458:200:169","trueBody":{"id":83796,"nodeType":"Block","src":"28514:69:169","statements":[{"expression":{"expression":{"expression":{"id":83792,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83781,"src":"28535:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28542:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"28535:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28561:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83149,"src":"28535:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83786,"id":83795,"nodeType":"Return","src":"28528:44:169"}]}}]},"documentation":{"id":83778,"nodeType":"StructuredDocumentation","src":"28142:195:169","text":" @dev Returns previous era validators, if there is no previous era,\n then returns free validators slot, which must be zeroed.\n @param router The router storage."},"implemented":true,"kind":"function","modifiers":[],"name":"previousEraValidators","nameLocation":"28351:21:169","parameters":{"id":83782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83781,"mutability":"mutable","name":"router","nameLocation":"28397:6:169","nodeType":"VariableDeclaration","scope":83804,"src":"28373:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83780,"nodeType":"UserDefinedTypeName","pathNode":{"id":83779,"name":"IRouter.Storage","nameLocations":["28373:7:169","28381:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"28373:15:169"},"referencedDeclaration":74490,"src":"28373:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"28372:32:169"},"returnParameters":{"id":83786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83804,"src":"28428:18:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83784,"nodeType":"UserDefinedTypeName","pathNode":{"id":83783,"name":"Validators","nameLocations":["28428:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"28428:10:169"},"referencedDeclaration":82899,"src":"28428:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28427:20:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83832,"nodeType":"FunctionDefinition","src":"28801:312:169","nodes":[],"body":{"id":83831,"nodeType":"Block","src":"28910:203:169","nodes":[],"statements":[{"condition":{"arguments":[{"id":83817,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83808,"src":"28950:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":83818,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83810,"src":"28958:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83816,"name":"validatorsStoredInSlot1At","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83899,"src":"28924:25:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (bool)"}},"id":83819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28924:37:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83829,"nodeType":"Block","src":"29038:69:169","statements":[{"expression":{"expression":{"expression":{"id":83825,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83808,"src":"29059:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29066:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"29059:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29085:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83149,"src":"29059:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83815,"id":83828,"nodeType":"Return","src":"29052:44:169"}]},"id":83830,"nodeType":"IfStatement","src":"28920:187:169","trueBody":{"id":83824,"nodeType":"Block","src":"28963:69:169","statements":[{"expression":{"expression":{"expression":{"id":83820,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83808,"src":"28984:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28991:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"28984:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29010:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83152,"src":"28984:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":83815,"id":83823,"nodeType":"Return","src":"28977:44:169"}]}}]},"documentation":{"id":83805,"nodeType":"StructuredDocumentation","src":"28670:126:169","text":" @dev Returns validators at the given timestamp.\n @param ts Timestamp for which to get the validators."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsAt","nameLocation":"28810:12:169","parameters":{"id":83811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83808,"mutability":"mutable","name":"router","nameLocation":"28847:6:169","nodeType":"VariableDeclaration","scope":83832,"src":"28823:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83807,"nodeType":"UserDefinedTypeName","pathNode":{"id":83806,"name":"IRouter.Storage","nameLocations":["28823:7:169","28831:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"28823:15:169"},"referencedDeclaration":74490,"src":"28823:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83810,"mutability":"mutable","name":"ts","nameLocation":"28863:2:169","nodeType":"VariableDeclaration","scope":83832,"src":"28855:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83809,"name":"uint256","nodeType":"ElementaryTypeName","src":"28855:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28822:44:169"},"returnParameters":{"id":83815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83832,"src":"28890:18:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83813,"nodeType":"UserDefinedTypeName","pathNode":{"id":83812,"name":"Validators","nameLocations":["28890:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"28890:10:169"},"referencedDeclaration":82899,"src":"28890:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28889:20:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83899,"nodeType":"FunctionDefinition","src":"29520:863:169","nodes":[],"body":{"id":83898,"nodeType":"Block","src":"29664:719:169","nodes":[],"statements":[{"assignments":[83844],"declarations":[{"constant":false,"id":83844,"mutability":"mutable","name":"ts0","nameLocation":"29682:3:169","nodeType":"VariableDeclaration","scope":83898,"src":"29674:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83843,"name":"uint256","nodeType":"ElementaryTypeName","src":"29674:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83849,"initialValue":{"expression":{"expression":{"expression":{"id":83845,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83836,"src":"29688:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29695:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"29688:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83847,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29714:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83149,"src":"29688:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},"id":83848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29726:16:169","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":82898,"src":"29688:54:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29674:68:169"},{"assignments":[83851],"declarations":[{"constant":false,"id":83851,"mutability":"mutable","name":"ts1","nameLocation":"29760:3:169","nodeType":"VariableDeclaration","scope":83898,"src":"29752:11:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83850,"name":"uint256","nodeType":"ElementaryTypeName","src":"29752:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83856,"initialValue":{"expression":{"expression":{"expression":{"id":83852,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83836,"src":"29766:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29773:18:169","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"29766:25:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":83854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29792:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83152,"src":"29766:37:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},"id":83855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29804:16:169","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":82898,"src":"29766:54:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29752:68:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83858,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83844,"src":"29894:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":83859,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83851,"src":"29901:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29894:10:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83861,"name":"ErasTimestampMustNotBeEqual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82869,"src":"29906:27:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29906:29:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83857,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"29886:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29886:50:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83864,"nodeType":"ExpressionStatement","src":"29886:50:169"},{"assignments":[83866],"declarations":[{"constant":false,"id":83866,"mutability":"mutable","name":"ts1Greater","nameLocation":"29952:10:169","nodeType":"VariableDeclaration","scope":83898,"src":"29947:15:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83865,"name":"bool","nodeType":"ElementaryTypeName","src":"29947:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83870,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83867,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83844,"src":"29965:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83868,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83851,"src":"29971:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29965:9:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"29947:27:169"},{"assignments":[83872],"declarations":[{"constant":false,"id":83872,"mutability":"mutable","name":"tsGe0","nameLocation":"29989:5:169","nodeType":"VariableDeclaration","scope":83898,"src":"29984:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83871,"name":"bool","nodeType":"ElementaryTypeName","src":"29984:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83876,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83873,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83844,"src":"29997:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":83874,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83838,"src":"30004:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29997:9:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"29984:22:169"},{"assignments":[83878],"declarations":[{"constant":false,"id":83878,"mutability":"mutable","name":"tsGe1","nameLocation":"30021:5:169","nodeType":"VariableDeclaration","scope":83898,"src":"30016:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83877,"name":"bool","nodeType":"ElementaryTypeName","src":"30016:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83882,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83879,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83851,"src":"30029:3:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":83880,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83838,"src":"30036:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30029:9:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"30016:22:169"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83884,"name":"tsGe0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83872,"src":"30130:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":83885,"name":"tsGe1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83878,"src":"30139:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30130:14:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83887,"name":"ValidatorsNotFoundForTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82872,"src":"30146:30:169","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30146:32:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83883,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"30122:7:169","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30122:57:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83890,"nodeType":"ExpressionStatement","src":"30122:57:169"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83891,"name":"ts1Greater","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83866,"src":"30346:10:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83892,"name":"tsGe0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83872,"src":"30361:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83893,"name":"tsGe1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83878,"src":"30370:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30361:14:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30360:16:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30346:30:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":83842,"id":83897,"nodeType":"Return","src":"30339:37:169"}]},"documentation":{"id":83833,"nodeType":"StructuredDocumentation","src":"29119:396:169","text":" @dev Returns `true` if validators at `ts` are stored in `router.validationSettings.validators1`.\n `false` means that current era validators are stored in `router.validationSettings.validators0`.\n @param ts Timestamp for which to check the validators slot.\n @return isSlot1 Whether validators at `ts` are stored in `router.validationSettings.validators1`."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsStoredInSlot1At","nameLocation":"29529:25:169","parameters":{"id":83839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83836,"mutability":"mutable","name":"router","nameLocation":"29579:6:169","nodeType":"VariableDeclaration","scope":83899,"src":"29555:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83835,"nodeType":"UserDefinedTypeName","pathNode":{"id":83834,"name":"IRouter.Storage","nameLocations":["29555:7:169","29563:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"29555:15:169"},"referencedDeclaration":74490,"src":"29555:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83838,"mutability":"mutable","name":"ts","nameLocation":"29595:2:169","nodeType":"VariableDeclaration","scope":83899,"src":"29587:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83837,"name":"uint256","nodeType":"ElementaryTypeName","src":"29587:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29554:44:169"},"returnParameters":{"id":83842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83841,"mutability":"mutable","name":"isSlot1","nameLocation":"29651:7:169","nodeType":"VariableDeclaration","scope":83899,"src":"29646:12:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83840,"name":"bool","nodeType":"ElementaryTypeName","src":"29646:4:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29645:14:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83945,"nodeType":"FunctionDefinition","src":"30885:456:169","nodes":[],"body":{"id":83944,"nodeType":"Block","src":"31068:273:169","nodes":[],"statements":[{"assignments":[83912],"declarations":[{"constant":false,"id":83912,"mutability":"mutable","name":"a","nameLocation":"31086:1:169","nodeType":"VariableDeclaration","scope":83944,"src":"31078:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83911,"name":"uint256","nodeType":"ElementaryTypeName","src":"31078:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83913,"nodeType":"VariableDeclarationStatement","src":"31078:9:169"},{"id":83920,"nodeType":"UncheckedBlock","src":"31097:76:169","statements":[{"expression":{"id":83918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83914,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83912,"src":"31121:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83915,"name":"validatorsAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83902,"src":"31125:16:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":83916,"name":"thresholdNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83904,"src":"31144:18:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31125:37:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31121:41:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83919,"nodeType":"ExpressionStatement","src":"31121:41:169"}]},{"assignments":[83922],"declarations":[{"constant":false,"id":83922,"mutability":"mutable","name":"d","nameLocation":"31190:1:169","nodeType":"VariableDeclaration","scope":83944,"src":"31182:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83921,"name":"uint256","nodeType":"ElementaryTypeName","src":"31182:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83926,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83923,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83912,"src":"31194:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":83924,"name":"thresholdDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83906,"src":"31198:20:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31194:24:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31182:36:169"},{"assignments":[83928],"declarations":[{"constant":false,"id":83928,"mutability":"mutable","name":"r","nameLocation":"31236:1:169","nodeType":"VariableDeclaration","scope":83944,"src":"31228:9:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83927,"name":"uint256","nodeType":"ElementaryTypeName","src":"31228:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83932,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83929,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83912,"src":"31240:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":83930,"name":"thresholdDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83906,"src":"31244:20:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31240:24:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31228:36:169"},{"id":83943,"nodeType":"UncheckedBlock","src":"31274:61:169","statements":[{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83933,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83928,"src":"31306:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":83934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31310:1:169","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31306:5:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31305:7:169","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":83940,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83922,"src":"31323:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31305:19:169","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83937,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83922,"src":"31315:1:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":83938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:169","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"31315:5:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83910,"id":83942,"nodeType":"Return","src":"31298:26:169"}]}]},"documentation":{"id":83900,"nodeType":"StructuredDocumentation","src":"30389:491:169","text":" @dev Calculates the threshold number of valid signatures required.\n The formula is:\n - `(validatorsAmount * thresholdNumerator).div_ceil(thresholdDenominator)`\n @param validatorsAmount The total number of validators.\n @param thresholdNumerator The numerator of the threshold fraction.\n @param thresholdDenominator The denominator of the threshold fraction.\n @return threshold The threshold number of valid signatures required."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"30894:19:169","parameters":{"id":83907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83902,"mutability":"mutable","name":"validatorsAmount","nameLocation":"30922:16:169","nodeType":"VariableDeclaration","scope":83945,"src":"30914:24:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83901,"name":"uint256","nodeType":"ElementaryTypeName","src":"30914:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":83904,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"30948:18:169","nodeType":"VariableDeclaration","scope":83945,"src":"30940:26:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83903,"name":"uint128","nodeType":"ElementaryTypeName","src":"30940:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83906,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"30976:20:169","nodeType":"VariableDeclaration","scope":83945,"src":"30968:28:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83905,"name":"uint128","nodeType":"ElementaryTypeName","src":"30968:7:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"30913:84:169"},"returnParameters":{"id":83910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83909,"mutability":"mutable","name":"threshold","nameLocation":"31053:9:169","nodeType":"VariableDeclaration","scope":83945,"src":"31045:17:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83908,"name":"uint256","nodeType":"ElementaryTypeName","src":"31045:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31044:19:169"},"scope":84058,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":83968,"nodeType":"FunctionDefinition","src":"31526:179:169","nodes":[],"body":{"id":83967,"nodeType":"Block","src":"31622:83:169","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83956,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83951,"src":"31640:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":83957,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83949,"src":"31645:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31652:12:169","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"31645:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":83959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31665:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"31645:29:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"31640:34:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":83961,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31639:36:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":83962,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83949,"src":"31678:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31685:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"31678:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":83964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31695:3:169","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83136,"src":"31678:20:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31639:59:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83955,"id":83966,"nodeType":"Return","src":"31632:66:169"}]},"documentation":{"id":83946,"nodeType":"StructuredDocumentation","src":"31347:174:169","text":" @dev Returns the era index for the given timestamp.\n @param router The router storage.\n @param ts The timestamp for which to get the era index."},"implemented":true,"kind":"function","modifiers":[],"name":"eraIndexAt","nameLocation":"31535:10:169","parameters":{"id":83952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83949,"mutability":"mutable","name":"router","nameLocation":"31570:6:169","nodeType":"VariableDeclaration","scope":83968,"src":"31546:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83948,"nodeType":"UserDefinedTypeName","pathNode":{"id":83947,"name":"IRouter.Storage","nameLocations":["31546:7:169","31554:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31546:15:169"},"referencedDeclaration":74490,"src":"31546:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83951,"mutability":"mutable","name":"ts","nameLocation":"31586:2:169","nodeType":"VariableDeclaration","scope":83968,"src":"31578:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83950,"name":"uint256","nodeType":"ElementaryTypeName","src":"31578:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31545:44:169"},"returnParameters":{"id":83955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83968,"src":"31613:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83953,"name":"uint256","nodeType":"ElementaryTypeName","src":"31613:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31612:9:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":83993,"nodeType":"FunctionDefinition","src":"31921:199:169","nodes":[],"body":{"id":83992,"nodeType":"Block","src":"32019:101:169","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":83979,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83972,"src":"32036:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32043:12:169","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"32036:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":83981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32056:9:169","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"32036:29:169","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":83983,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83972,"src":"32079:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":83984,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83974,"src":"32087:2:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83982,"name":"eraIndexAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83968,"src":"32068:10:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":83985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32068:22:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"expression":{"id":83986,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83972,"src":"32093:6:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":83987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32100:9:169","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"32093:16:169","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":83988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32110:3:169","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83136,"src":"32093:20:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32068:45:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32036:77:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":83978,"id":83991,"nodeType":"Return","src":"32029:84:169"}]},"documentation":{"id":83969,"nodeType":"StructuredDocumentation","src":"31711:205:169","text":" @dev Returns the timestamp when the era started for the given timestamp.\n @param router The router storage.\n @param ts The timestamp for which to get the era start timestamp."},"implemented":true,"kind":"function","modifiers":[],"name":"eraStartedAt","nameLocation":"31930:12:169","parameters":{"id":83975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83972,"mutability":"mutable","name":"router","nameLocation":"31967:6:169","nodeType":"VariableDeclaration","scope":83993,"src":"31943:30:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":83971,"nodeType":"UserDefinedTypeName","pathNode":{"id":83970,"name":"IRouter.Storage","nameLocations":["31943:7:169","31951:7:169"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31943:15:169"},"referencedDeclaration":74490,"src":"31943:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":83974,"mutability":"mutable","name":"ts","nameLocation":"31983:2:169","nodeType":"VariableDeclaration","scope":83993,"src":"31975:10:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83973,"name":"uint256","nodeType":"ElementaryTypeName","src":"31975:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31942:44:169"},"returnParameters":{"id":83978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83993,"src":"32010:7:169","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83976,"name":"uint256","nodeType":"ElementaryTypeName","src":"32010:7:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32009:9:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84016,"nodeType":"FunctionDefinition","src":"32460:467:169","nodes":[],"body":{"id":84015,"nodeType":"Block","src":"32606:321:169","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":84005,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83997,"src":"32678:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32689:19:169","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82883,"src":"32678:30:169","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},{"expression":{"id":84007,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83997,"src":"32764:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32775:40:169","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":82886,"src":"32764:51:169","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":84009,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83997,"src":"32835:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32846:4:169","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"32835:15:169","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":84011,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83997,"src":"32882:10:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32893:16:169","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":82898,"src":"32882:27:169","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":84003,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"32623:4:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":84004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32628:14:169","memberName":"ValidatorsView","nodeType":"MemberAccess","referencedDeclaration":82911,"src":"32623:19:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ValidatorsView_$82911_storage_ptr_$","typeString":"type(struct Gear.ValidatorsView storage pointer)"}},"id":84013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["32657:19:169","32722:40:169","32829:4:169","32864:16:169"],"names":["aggregatedPublicKey","verifiableSecretSharingCommitmentPointer","list","useFromTimestamp"],"nodeType":"FunctionCall","src":"32623:297:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"functionReturnParameters":84002,"id":84014,"nodeType":"Return","src":"32616:304:169"}]},"documentation":{"id":83994,"nodeType":"StructuredDocumentation","src":"32126:329:169","text":" @dev Converts `Gear.Validators` storage to `Gear.ValidatorsView` struct.\n Note that `validators.map` is passed as `validators.list`.\n @param validators The `Gear.Validators` storage to convert.\n @return validatorsView `Gear.ValidatorsView` struct with the same data as the input storage."},"implemented":true,"kind":"function","modifiers":[],"name":"toView","nameLocation":"32469:6:169","parameters":{"id":83998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83997,"mutability":"mutable","name":"validators","nameLocation":"32500:10:169","nodeType":"VariableDeclaration","scope":84016,"src":"32476:34:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":83996,"nodeType":"UserDefinedTypeName","pathNode":{"id":83995,"name":"Gear.Validators","nameLocations":["32476:4:169","32481:10:169"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"32476:15:169"},"referencedDeclaration":82899,"src":"32476:15:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"32475:36:169"},"returnParameters":{"id":84002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84001,"mutability":"mutable","name":"validatorsView","nameLocation":"32586:14:169","nodeType":"VariableDeclaration","scope":84016,"src":"32559:41:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":84000,"nodeType":"UserDefinedTypeName","pathNode":{"id":83999,"name":"Gear.ValidatorsView","nameLocations":["32559:4:169","32564:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":82911,"src":"32559:19:169"},"referencedDeclaration":82911,"src":"32559:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"src":"32558:43:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":84057,"nodeType":"FunctionDefinition","src":"33224:581:169","nodes":[],"body":{"id":84056,"nodeType":"Block","src":"33382:423:169","nodes":[],"statements":[{"assignments":[84030],"declarations":[{"constant":false,"id":84030,"mutability":"mutable","name":"validators0","nameLocation":"33419:11:169","nodeType":"VariableDeclaration","scope":84056,"src":"33392:38:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":84029,"nodeType":"UserDefinedTypeName","pathNode":{"id":84028,"name":"Gear.ValidatorsView","nameLocations":["33392:4:169","33397:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":82911,"src":"33392:19:169"},"referencedDeclaration":82911,"src":"33392:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"id":84035,"initialValue":{"arguments":[{"expression":{"id":84032,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84020,"src":"33440:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33449:11:169","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83149,"src":"33440:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}],"id":84031,"name":"toView","nodeType":"Identifier","overloadedDeclarations":[84016,84057],"referencedDeclaration":84016,"src":"33433:6:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Validators_$82899_storage_ptr_$returns$_t_struct$_ValidatorsView_$82911_memory_ptr_$","typeString":"function (struct Gear.Validators storage pointer) view returns (struct Gear.ValidatorsView memory)"}},"id":84034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33433:28:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"nodeType":"VariableDeclarationStatement","src":"33392:69:169"},{"assignments":[84040],"declarations":[{"constant":false,"id":84040,"mutability":"mutable","name":"validators1","nameLocation":"33498:11:169","nodeType":"VariableDeclaration","scope":84056,"src":"33471:38:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":84039,"nodeType":"UserDefinedTypeName","pathNode":{"id":84038,"name":"Gear.ValidatorsView","nameLocations":["33471:4:169","33476:14:169"],"nodeType":"IdentifierPath","referencedDeclaration":82911,"src":"33471:19:169"},"referencedDeclaration":82911,"src":"33471:19:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"id":84045,"initialValue":{"arguments":[{"expression":{"id":84042,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84020,"src":"33519:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33528:11:169","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":83152,"src":"33519:20:169","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}],"id":84041,"name":"toView","nodeType":"Identifier","overloadedDeclarations":[84016,84057],"referencedDeclaration":84016,"src":"33512:6:169","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Validators_$82899_storage_ptr_$returns$_t_struct$_ValidatorsView_$82911_memory_ptr_$","typeString":"function (struct Gear.Validators storage pointer) view returns (struct Gear.ValidatorsView memory)"}},"id":84044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33512:28:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"nodeType":"VariableDeclarationStatement","src":"33471:69:169"},{"expression":{"arguments":[{"expression":{"id":84048,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84020,"src":"33619:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33628:18:169","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83144,"src":"33619:27:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":84050,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84020,"src":"33682:8:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":84051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33691:20:169","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83146,"src":"33682:29:169","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":84052,"name":"validators0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84030,"src":"33738:11:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},{"id":84053,"name":"validators1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84040,"src":"33776:11:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"},{"typeIdentifier":"t_struct$_ValidatorsView_$82911_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}],"expression":{"id":84046,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"33557:4:169","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":84047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33562:22:169","memberName":"ValidationSettingsView","nodeType":"MemberAccess","referencedDeclaration":83165,"src":"33557:27:169","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ValidationSettingsView_$83165_storage_ptr_$","typeString":"type(struct Gear.ValidationSettingsView storage pointer)"}},"id":84054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["33599:18:169","33660:20:169","33725:11:169","33763:11:169"],"names":["thresholdNumerator","thresholdDenominator","validators0","validators1"],"nodeType":"FunctionCall","src":"33557:241:169","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},"functionReturnParameters":84025,"id":84055,"nodeType":"Return","src":"33550:248:169"}]},"documentation":{"id":84017,"nodeType":"StructuredDocumentation","src":"32933:286:169","text":" @dev Converts `Gear.ValidationSettings` storage to `Gear.ValidationSettingsView` struct.\n @param settings The `Gear.ValidationSettings` storage to convert.\n @return settingsView `Gear.ValidationSettingsView` struct with the same data as the input storage."},"implemented":true,"kind":"function","modifiers":[],"name":"toView","nameLocation":"33233:6:169","parameters":{"id":84021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84020,"mutability":"mutable","name":"settings","nameLocation":"33272:8:169","nodeType":"VariableDeclaration","scope":84057,"src":"33240:40:169","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage_ptr","typeString":"struct Gear.ValidationSettings"},"typeName":{"id":84019,"nodeType":"UserDefinedTypeName","pathNode":{"id":84018,"name":"Gear.ValidationSettings","nameLocations":["33240:4:169","33245:18:169"],"nodeType":"IdentifierPath","referencedDeclaration":83153,"src":"33240:23:169"},"referencedDeclaration":83153,"src":"33240:23:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage_ptr","typeString":"struct Gear.ValidationSettings"}},"visibility":"internal"}],"src":"33239:42:169"},"returnParameters":{"id":84025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84024,"mutability":"mutable","name":"settingsView","nameLocation":"33364:12:169","nodeType":"VariableDeclaration","scope":84057,"src":"33329:47:169","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_memory_ptr","typeString":"struct Gear.ValidationSettingsView"},"typeName":{"id":84023,"nodeType":"UserDefinedTypeName","pathNode":{"id":84022,"name":"Gear.ValidationSettingsView","nameLocations":["33329:4:169","33334:22:169"],"nodeType":"IdentifierPath","referencedDeclaration":83165,"src":"33329:27:169"},"referencedDeclaration":83165,"src":"33329:27:169","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_storage_ptr","typeString":"struct Gear.ValidationSettingsView"}},"visibility":"internal"}],"src":"33328:49:169"},"scope":84058,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Gear","contractDependencies":[],"contractKind":"library","documentation":{"id":82825,"nodeType":"StructuredDocumentation","src":"744:770:169","text":" @dev Library for core protocol utility functions for hashing, validation, and consensus-related logic.\n It provides:\n - Canonical hashing functions for protocol entities (messages, value claims, batch/code commitments, state transitions)\n - Validator set management with era-based switching and threshold configuration\n - Signature verification support for FROST aggregated signatures and ECDSA threshold signatures\n with transient storage to prevent double counting of signatures\n - Era and timeline utilities for selecting correct validator sets based on timestamp\n The library acts as a shared foundation for consensus, validation, and commitment verification\n across all protocol components."},"fullyImplemented":true,"linearizedBaseContracts":[84058],"name":"Gear","nameLocation":"1523:4:169","scope":84059,"usedErrors":[82854,82857,82860,82863,82866,82869,82872],"usedEvents":[]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":169} \ No newline at end of file +{"abi":[{"type":"function","name":"COMPUTATION_THRESHOLD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VALIDATORS_THRESHOLD_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"VALIDATORS_THRESHOLD_NUMERATOR","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"WVARA_PER_SECOND","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"error","name":"ErasTimestampMustNotBeEqual","inputs":[]},{"type":"error","name":"InvalidFrostSignatureCount","inputs":[]},{"type":"error","name":"InvalidFrostSignatureLength","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"TimestampOlderThanPreviousEra","inputs":[]},{"type":"error","name":"ValidationBeforeGenesis","inputs":[]},{"type":"error","name":"ValidatorsNotFoundForTimestamp","inputs":[]}],"bytecode":{"object":"0x6080806040523460175760a19081601c823930815050f35b5f80fdfe60808060405260043610156011575f80fd5b5f3560e01c9081630279472c14608e575080632c184e1c1460745780637841919a14605c5763db3fe3f1146043575f80fd5b5f366003190112605857602060405160028152f35b5f80fd5b5f3660031901126058576020604051639502f9008152f35b5f36600319011260585760206040516509184e72a0008152f35b5f36600319011260585780600360209252f3","sourceMap":"1515:32292:171:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60808060405260043610156011575f80fd5b5f3560e01c9081630279472c14608e575080632c184e1c1460745780637841919a14605c5763db3fe3f1146043575f80fd5b5f366003190112605857602060405160028152f35b5f80fd5b5f3660031901126058576020604051639502f9008152f35b5f36600319011260585760206040516509184e72a0008152f35b5f36600319011260585780600360209252f3","sourceMap":"1515:32292:171:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1515:32292:171;;;;;;;2071:1;1515:32292;;;;;;;;;;-1:-1:-1;;1515:32292:171;;;;;;;1855:13;1515:32292;;;;;;-1:-1:-1;;1515:32292:171;;;;;;;2383:18;1515:32292;;;;;;-1:-1:-1;;1515:32292:171;;;;;2203:1;1515:32292;;;","linkReferences":{}},"methodIdentifiers":{"COMPUTATION_THRESHOLD()":"7841919a","VALIDATORS_THRESHOLD_DENOMINATOR()":"0279472c","VALIDATORS_THRESHOLD_NUMERATOR()":"db3fe3f1","WVARA_PER_SECOND()":"2c184e1c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ErasTimestampMustNotBeEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampOlderThanPreviousEra\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationBeforeGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsNotFoundForTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"COMPUTATION_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_THRESHOLD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATORS_THRESHOLD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WVARA_PER_SECOND\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Library for core protocol utility functions for hashing, validation, and consensus-related logic. It provides: - Canonical hashing functions for protocol entities (messages, value claims, batch/code commitments, state transitions) - Validator set management with era-based switching and threshold configuration - Signature verification support for FROST aggregated signatures and ECDSA threshold signatures with transient storage to prevent double counting of signatures - Era and timeline utilities for selecting correct validator sets based on timestamp The library acts as a shared foundation for consensus, validation, and commitment verification across all protocol components.\",\"errors\":{\"ErasTimestampMustNotBeEqual()\":[{\"details\":\"Thrown when the timestamp of an era is equal to the timestamp of the previous era. Should never happen, because the implementation.\"}],\"InvalidFrostSignatureCount()\":[{\"details\":\"Thrown when the number of FROST signatures is invalid.\"}],\"InvalidFrostSignatureLength()\":[{\"details\":\"Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes.\"}],\"TimestampInFuture()\":[{\"details\":\"Thrown when the timestamp is in the future.\"}],\"TimestampOlderThanPreviousEra()\":[{\"details\":\"Thrown when the timestamp is older than the previous era.\"}],\"ValidationBeforeGenesis()\":[{\"details\":\"Thrown when signature validation is attempted before the genesis block.\"}],\"ValidatorsNotFoundForTimestamp()\":[{\"details\":\"Thrown when no validators are found for a given timestamp. Should never happen, because the implementation.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"COMPUTATION_THRESHOLD\":{\"details\":\"The threshold for computation cost in gear gas. 2.5 * (10 ** 9) of gear gas.\"},\"VALIDATORS_THRESHOLD_DENOMINATOR\":{\"details\":\"The validators threshold denominator.\"},\"VALIDATORS_THRESHOLD_NUMERATOR\":{\"details\":\"2/3 of validators must sign the commitment for it to be valid.The validators threshold numerator.\"},\"WVARA_PER_SECOND\":{\"details\":\"The amount of WVara tokens to be paid per compute second. 10 WVARA tokens per compute second.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/libraries/Gear.sol\":\"Gear\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ErasTimestampMustNotBeEqual"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureCount"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureLength"},{"inputs":[],"type":"error","name":"TimestampInFuture"},{"inputs":[],"type":"error","name":"TimestampOlderThanPreviousEra"},{"inputs":[],"type":"error","name":"ValidationBeforeGenesis"},{"inputs":[],"type":"error","name":"ValidatorsNotFoundForTimestamp"},{"inputs":[],"stateMutability":"view","type":"function","name":"COMPUTATION_THRESHOLD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VALIDATORS_THRESHOLD_DENOMINATOR","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VALIDATORS_THRESHOLD_NUMERATOR","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WVARA_PER_SECOND","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/libraries/Gear.sol":"Gear"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/libraries/Gear.sol","id":88589,"exportedSymbols":{"ECDSA":[51038],"FROST":[40965],"Gear":[88588],"Hashes":[41483],"IRouter":[74985],"MessageHashUtils":[52237],"SafeCast":[55635],"SlotDerivation":[48965],"Time":[60343],"TransientSlot":[50690]},"nodeType":"SourceUnit","src":"74:33734:171","nodes":[{"id":87336,"nodeType":"PragmaDirective","src":"74:24:171","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":87338,"nodeType":"ImportDirective","src":"100:80:171","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":87337,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"108:14:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87340,"nodeType":"ImportDirective","src":"181:78:171","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol","file":"@openzeppelin/contracts/utils/TransientSlot.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":50691,"symbolAliases":[{"foreign":{"id":87339,"name":"TransientSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50690,"src":"189:13:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87342,"nodeType":"ImportDirective","src":"260:75:171","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":51039,"symbolAliases":[{"foreign":{"id":87341,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"268:5:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87344,"nodeType":"ImportDirective","src":"336:97:171","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":52238,"symbolAliases":[{"foreign":{"id":87343,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52237,"src":"344:16:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87346,"nodeType":"ImportDirective","src":"434:73:171","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":55636,"symbolAliases":[{"foreign":{"id":87345,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55635,"src":"442:8:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87348,"nodeType":"ImportDirective","src":"508:66:171","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/types/Time.sol","file":"@openzeppelin/contracts/utils/types/Time.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":60344,"symbolAliases":[{"foreign":{"id":87347,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"516:4:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87350,"nodeType":"ImportDirective","src":"575:52:171","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/FROST.sol","file":"frost-secp256k1-evm/FROST.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":40966,"symbolAliases":[{"foreign":{"id":87349,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"583:5:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87352,"nodeType":"ImportDirective","src":"628:73:171","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":87351,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"636:6:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":87354,"nodeType":"ImportDirective","src":"702:40:171","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":88589,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":87353,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"710:7:171","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":88588,"nodeType":"ContractDefinition","src":"1515:32292:171","nodes":[{"id":87358,"nodeType":"UsingForDirective","src":"1534:24:171","nodes":[],"global":false,"libraryName":{"id":87356,"name":"ECDSA","nameLocations":["1540:5:171"],"nodeType":"IdentifierPath","referencedDeclaration":51038,"src":"1540:5:171"},"typeName":{"id":87357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":87361,"nodeType":"UsingForDirective","src":"1563:35:171","nodes":[],"global":false,"libraryName":{"id":87359,"name":"MessageHashUtils","nameLocations":["1569:16:171"],"nodeType":"IdentifierPath","referencedDeclaration":52237,"src":"1569:16:171"},"typeName":{"id":87360,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":87363,"nodeType":"UsingForDirective","src":"1604:26:171","nodes":[],"global":false,"libraryName":{"id":87362,"name":"TransientSlot","nameLocations":["1610:13:171"],"nodeType":"IdentifierPath","referencedDeclaration":50690,"src":"1610:13:171"}},{"id":87365,"nodeType":"UsingForDirective","src":"1635:27:171","nodes":[],"global":false,"libraryName":{"id":87364,"name":"SlotDerivation","nameLocations":["1641:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":48965,"src":"1641:14:171"}},{"id":87369,"nodeType":"VariableDeclaration","src":"1808:60:171","nodes":[],"constant":true,"documentation":{"id":87366,"nodeType":"StructuredDocumentation","src":"1691:112:171","text":" @dev The threshold for computation cost in gear gas.\n 2.5 * (10 ** 9) of gear gas."},"functionSelector":"7841919a","mutability":"constant","name":"COMPUTATION_THRESHOLD","nameLocation":"1831:21:171","scope":88588,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":87367,"name":"uint64","nodeType":"ElementaryTypeName","src":"1808:6:171","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"325f3530305f3030305f303030","id":87368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1855:13:171","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"visibility":"public"},{"id":87373,"nodeType":"VariableDeclaration","src":"2014:58:171","nodes":[],"constant":true,"documentation":{"id":87370,"nodeType":"StructuredDocumentation","src":"1875:134:171","text":" @dev 2/3 of validators must sign the commitment for it to be valid.\n @dev The validators threshold numerator."},"functionSelector":"db3fe3f1","mutability":"constant","name":"VALIDATORS_THRESHOLD_NUMERATOR","nameLocation":"2038:30:171","scope":88588,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87371,"name":"uint128","nodeType":"ElementaryTypeName","src":"2014:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"32","id":87372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2071:1:171","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"id":87377,"nodeType":"VariableDeclaration","src":"2144:60:171","nodes":[],"constant":true,"documentation":{"id":87374,"nodeType":"StructuredDocumentation","src":"2078:61:171","text":" @dev The validators threshold denominator."},"functionSelector":"0279472c","mutability":"constant","name":"VALIDATORS_THRESHOLD_DENOMINATOR","nameLocation":"2168:32:171","scope":88588,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87375,"name":"uint128","nodeType":"ElementaryTypeName","src":"2144:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"33","id":87376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2203:1:171","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"public"},{"id":87381,"nodeType":"VariableDeclaration","src":"2340:61:171","nodes":[],"constant":true,"documentation":{"id":87378,"nodeType":"StructuredDocumentation","src":"2211:124:171","text":" @dev The amount of WVara tokens to be paid per compute second.\n 10 WVARA tokens per compute second."},"functionSelector":"2c184e1c","mutability":"constant","name":"WVARA_PER_SECOND","nameLocation":"2364:16:171","scope":88588,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87379,"name":"uint128","nodeType":"ElementaryTypeName","src":"2340:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"value":{"hexValue":"31305f3030305f3030305f3030305f303030","id":87380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2383:18:171","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000_by_1","typeString":"int_const 10000000000000"},"value":"10_000_000_000_000"},"visibility":"public"},{"id":87384,"nodeType":"ErrorDefinition","src":"2528:32:171","nodes":[],"documentation":{"id":87382,"nodeType":"StructuredDocumentation","src":"2428:95:171","text":" @dev Thrown when signature validation is attempted before the genesis block."},"errorSelector":"00f4462b","name":"ValidationBeforeGenesis","nameLocation":"2534:23:171","parameters":{"id":87383,"nodeType":"ParameterList","parameters":[],"src":"2557:2:171"}},{"id":87387,"nodeType":"ErrorDefinition","src":"2652:38:171","nodes":[],"documentation":{"id":87385,"nodeType":"StructuredDocumentation","src":"2566:81:171","text":" @dev Thrown when the timestamp is older than the previous era."},"errorSelector":"8d763ca0","name":"TimestampOlderThanPreviousEra","nameLocation":"2658:29:171","parameters":{"id":87386,"nodeType":"ParameterList","parameters":[],"src":"2687:2:171"}},{"id":87390,"nodeType":"ErrorDefinition","src":"2768:26:171","nodes":[],"documentation":{"id":87388,"nodeType":"StructuredDocumentation","src":"2696:67:171","text":" @dev Thrown when the timestamp is in the future."},"errorSelector":"47860b97","name":"TimestampInFuture","nameLocation":"2774:17:171","parameters":{"id":87389,"nodeType":"ParameterList","parameters":[],"src":"2791:2:171"}},{"id":87393,"nodeType":"ErrorDefinition","src":"2883:35:171","nodes":[],"documentation":{"id":87391,"nodeType":"StructuredDocumentation","src":"2800:78:171","text":" @dev Thrown when the number of FROST signatures is invalid."},"errorSelector":"60a1ea77","name":"InvalidFrostSignatureCount","nameLocation":"2889:26:171","parameters":{"id":87392,"nodeType":"ParameterList","parameters":[],"src":"2915:2:171"}},{"id":87396,"nodeType":"ErrorDefinition","src":"3037:36:171","nodes":[],"documentation":{"id":87394,"nodeType":"StructuredDocumentation","src":"2924:108:171","text":" @dev Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes."},"errorSelector":"2ce466bf","name":"InvalidFrostSignatureLength","nameLocation":"3043:27:171","parameters":{"id":87395,"nodeType":"ParameterList","parameters":[],"src":"3070:2:171"}},{"id":87399,"nodeType":"ErrorDefinition","src":"3251:36:171","nodes":[],"documentation":{"id":87397,"nodeType":"StructuredDocumentation","src":"3079:167:171","text":" @dev Thrown when the timestamp of an era is equal to the timestamp of the previous era.\n Should never happen, because the implementation."},"errorSelector":"f26224af","name":"ErasTimestampMustNotBeEqual","nameLocation":"3257:27:171","parameters":{"id":87398,"nodeType":"ParameterList","parameters":[],"src":"3284:2:171"}},{"id":87402,"nodeType":"ErrorDefinition","src":"3441:39:171","nodes":[],"documentation":{"id":87400,"nodeType":"StructuredDocumentation","src":"3293:143:171","text":" @dev Thrown when no validators are found for a given timestamp.\n Should never happen, because the implementation."},"errorSelector":"98715d2a","name":"ValidatorsNotFoundForTimestamp","nameLocation":"3447:30:171","parameters":{"id":87401,"nodeType":"ParameterList","parameters":[],"src":"3477:2:171"}},{"id":87408,"nodeType":"StructDefinition","src":"3714:72:171","nodes":[],"canonicalName":"Gear.AggregatedPublicKey","documentation":{"id":87403,"nodeType":"StructuredDocumentation","src":"3507:202:171","text":" @dev Represents an aggregated public key.\n It checked with `FROST.isValidPublicKey(x, y)` in `Router._resetValidators(...)`,\n so we can be sure that it is valid."},"members":[{"constant":false,"id":87405,"mutability":"mutable","name":"x","nameLocation":"3759:1:171","nodeType":"VariableDeclaration","scope":87408,"src":"3751:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87404,"name":"uint256","nodeType":"ElementaryTypeName","src":"3751:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87407,"mutability":"mutable","name":"y","nameLocation":"3778:1:171","nodeType":"VariableDeclaration","scope":87408,"src":"3770:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87406,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"AggregatedPublicKey","nameLocation":"3721:19:171","scope":88588,"visibility":"public"},{"id":87429,"nodeType":"StructDefinition","src":"3855:1200:171","nodes":[],"canonicalName":"Gear.Validators","documentation":{"id":87409,"nodeType":"StructuredDocumentation","src":"3792:58:171","text":" @dev Represents validators information."},"members":[{"constant":false,"id":87413,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"4245:19:171","nodeType":"VariableDeclaration","scope":87429,"src":"4225:39:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":87412,"nodeType":"UserDefinedTypeName","pathNode":{"id":87411,"name":"AggregatedPublicKey","nameLocations":["4225:19:171"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"4225:19:171"},"referencedDeclaration":87408,"src":"4225:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":87416,"mutability":"mutable","name":"verifiableSecretSharingCommitmentPointer","nameLocation":"4572:40:171","nodeType":"VariableDeclaration","scope":87429,"src":"4564:48:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87415,"name":"address","nodeType":"ElementaryTypeName","src":"4564:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87421,"mutability":"mutable","name":"map","nameLocation":"4830:3:171","nodeType":"VariableDeclaration","scope":87429,"src":"4805:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":87420,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":87418,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4805:24:171","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":87419,"name":"bool","nodeType":"ElementaryTypeName","src":"4824:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":87425,"mutability":"mutable","name":"list","nameLocation":"4922:4:171","nodeType":"VariableDeclaration","scope":87429,"src":"4912:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":87423,"name":"address","nodeType":"ElementaryTypeName","src":"4912:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":87424,"nodeType":"ArrayTypeName","src":"4912:9:171","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":87428,"mutability":"mutable","name":"useFromTimestamp","nameLocation":"5032:16:171","nodeType":"VariableDeclaration","scope":87429,"src":"5024:24:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87427,"name":"uint256","nodeType":"ElementaryTypeName","src":"5024:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Validators","nameLocation":"3862:10:171","scope":88588,"visibility":"public"},{"id":87441,"nodeType":"StructDefinition","src":"5132:194:171","nodes":[],"canonicalName":"Gear.ValidatorsView","documentation":{"id":87430,"nodeType":"StructuredDocumentation","src":"5061:66:171","text":" @dev Represents view of validators information."},"members":[{"constant":false,"id":87433,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"5184:19:171","nodeType":"VariableDeclaration","scope":87441,"src":"5164:39:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":87432,"nodeType":"UserDefinedTypeName","pathNode":{"id":87431,"name":"AggregatedPublicKey","nameLocations":["5164:19:171"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"5164:19:171"},"referencedDeclaration":87408,"src":"5164:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":87435,"mutability":"mutable","name":"verifiableSecretSharingCommitmentPointer","nameLocation":"5221:40:171","nodeType":"VariableDeclaration","scope":87441,"src":"5213:48:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87434,"name":"address","nodeType":"ElementaryTypeName","src":"5213:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87438,"mutability":"mutable","name":"list","nameLocation":"5281:4:171","nodeType":"VariableDeclaration","scope":87441,"src":"5271:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":87436,"name":"address","nodeType":"ElementaryTypeName","src":"5271:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":87437,"nodeType":"ArrayTypeName","src":"5271:9:171","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":87440,"mutability":"mutable","name":"useFromTimestamp","nameLocation":"5303:16:171","nodeType":"VariableDeclaration","scope":87441,"src":"5295:24:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87439,"name":"uint256","nodeType":"ElementaryTypeName","src":"5295:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidatorsView","nameLocation":"5139:14:171","scope":88588,"visibility":"public"},{"id":87452,"nodeType":"StructDefinition","src":"5397:353:171","nodes":[],"canonicalName":"Gear.AddressBook","documentation":{"id":87442,"nodeType":"StructuredDocumentation","src":"5332:60:171","text":" @dev Represents address book information."},"members":[{"constant":false,"id":87445,"mutability":"mutable","name":"mirror","nameLocation":"5512:6:171","nodeType":"VariableDeclaration","scope":87452,"src":"5504:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87444,"name":"address","nodeType":"ElementaryTypeName","src":"5504:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87448,"mutability":"mutable","name":"wrappedVara","nameLocation":"5619:11:171","nodeType":"VariableDeclaration","scope":87452,"src":"5611:19:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87447,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87451,"mutability":"mutable","name":"middleware","nameLocation":"5733:10:171","nodeType":"VariableDeclaration","scope":87452,"src":"5725:18:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87450,"name":"address","nodeType":"ElementaryTypeName","src":"5725:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressBook","nameLocation":"5404:11:171","scope":88588,"visibility":"public"},{"id":87460,"nodeType":"StructDefinition","src":"5812:248:171","nodes":[],"canonicalName":"Gear.CodeCommitment","documentation":{"id":87453,"nodeType":"StructuredDocumentation","src":"5756:51:171","text":" @dev Represents code commitment."},"members":[{"constant":false,"id":87456,"mutability":"mutable","name":"id","nameLocation":"5956:2:171","nodeType":"VariableDeclaration","scope":87460,"src":"5948:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5948:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87459,"mutability":"mutable","name":"valid","nameLocation":"6048:5:171","nodeType":"VariableDeclaration","scope":87460,"src":"6043:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87458,"name":"bool","nodeType":"ElementaryTypeName","src":"6043:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"CodeCommitment","nameLocation":"5819:14:171","scope":88588,"visibility":"public"},{"id":87470,"nodeType":"StructDefinition","src":"6123:270:171","nodes":[],"canonicalName":"Gear.ChainCommitment","documentation":{"id":87461,"nodeType":"StructuredDocumentation","src":"6066:52:171","text":" @dev Represents chain commitment."},"members":[{"constant":false,"id":87466,"mutability":"mutable","name":"transitions","nameLocation":"6265:11:171","nodeType":"VariableDeclaration","scope":87470,"src":"6247:29:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":87464,"nodeType":"UserDefinedTypeName","pathNode":{"id":87463,"name":"StateTransition","nameLocations":["6247:15:171"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"6247:15:171"},"referencedDeclaration":87663,"src":"6247:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":87465,"nodeType":"ArrayTypeName","src":"6247:17:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"},{"constant":false,"id":87469,"mutability":"mutable","name":"head","nameLocation":"6382:4:171","nodeType":"VariableDeclaration","scope":87470,"src":"6374:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87468,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6374:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"ChainCommitment","nameLocation":"6130:15:171","scope":88588,"visibility":"public"},{"id":87482,"nodeType":"StructDefinition","src":"6461:189:171","nodes":[],"canonicalName":"Gear.ValidatorsCommitment","documentation":{"id":87471,"nodeType":"StructuredDocumentation","src":"6399:57:171","text":" @dev Represents validators commitment."},"members":[{"constant":false,"id":87474,"mutability":"mutable","name":"aggregatedPublicKey","nameLocation":"6519:19:171","nodeType":"VariableDeclaration","scope":87482,"src":"6499:39:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":87473,"nodeType":"UserDefinedTypeName","pathNode":{"id":87472,"name":"AggregatedPublicKey","nameLocations":["6499:19:171"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"6499:19:171"},"referencedDeclaration":87408,"src":"6499:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":87476,"mutability":"mutable","name":"verifiableSecretSharingCommitment","nameLocation":"6554:33:171","nodeType":"VariableDeclaration","scope":87482,"src":"6548:39:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":87475,"name":"bytes","nodeType":"ElementaryTypeName","src":"6548:5:171","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":87479,"mutability":"mutable","name":"validators","nameLocation":"6607:10:171","nodeType":"VariableDeclaration","scope":87482,"src":"6597:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":87477,"name":"address","nodeType":"ElementaryTypeName","src":"6597:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":87478,"nodeType":"ArrayTypeName","src":"6597:9:171","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":87481,"mutability":"mutable","name":"eraIndex","nameLocation":"6635:8:171","nodeType":"VariableDeclaration","scope":87482,"src":"6627:16:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87480,"name":"uint256","nodeType":"ElementaryTypeName","src":"6627:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidatorsCommitment","nameLocation":"6468:20:171","scope":88588,"visibility":"public"},{"id":87516,"nodeType":"StructDefinition","src":"6713:1206:171","nodes":[],"canonicalName":"Gear.BatchCommitment","documentation":{"id":87483,"nodeType":"StructuredDocumentation","src":"6656:52:171","text":" @dev Represents batch commitment."},"members":[{"constant":false,"id":87486,"mutability":"mutable","name":"blockHash","nameLocation":"6850:9:171","nodeType":"VariableDeclaration","scope":87516,"src":"6842:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6842:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87489,"mutability":"mutable","name":"blockTimestamp","nameLocation":"6978:14:171","nodeType":"VariableDeclaration","scope":87516,"src":"6971:21:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":87488,"name":"uint48","nodeType":"ElementaryTypeName","src":"6971:6:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":87492,"mutability":"mutable","name":"previousCommittedBatchHash","nameLocation":"7091:26:171","nodeType":"VariableDeclaration","scope":87516,"src":"7083:34:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7083:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87495,"mutability":"mutable","name":"expiry","nameLocation":"7353:6:171","nodeType":"VariableDeclaration","scope":87516,"src":"7347:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":87494,"name":"uint8","nodeType":"ElementaryTypeName","src":"7347:5:171","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":87500,"mutability":"mutable","name":"chainCommitment","nameLocation":"7479:15:171","nodeType":"VariableDeclaration","scope":87516,"src":"7461:33:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_storage_$dyn_storage_ptr","typeString":"struct Gear.ChainCommitment[]"},"typeName":{"baseType":{"id":87498,"nodeType":"UserDefinedTypeName","pathNode":{"id":87497,"name":"ChainCommitment","nameLocations":["7461:15:171"],"nodeType":"IdentifierPath","referencedDeclaration":87470,"src":"7461:15:171"},"referencedDeclaration":87470,"src":"7461:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_storage_ptr","typeString":"struct Gear.ChainCommitment"}},"id":87499,"nodeType":"ArrayTypeName","src":"7461:17:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_storage_$dyn_storage_ptr","typeString":"struct Gear.ChainCommitment[]"}},"visibility":"internal"},{"constant":false,"id":87505,"mutability":"mutable","name":"codeCommitments","nameLocation":"7606:15:171","nodeType":"VariableDeclaration","scope":87516,"src":"7589:32:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$87460_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"},"typeName":{"baseType":{"id":87503,"nodeType":"UserDefinedTypeName","pathNode":{"id":87502,"name":"CodeCommitment","nameLocations":["7589:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":87460,"src":"7589:14:171"},"referencedDeclaration":87460,"src":"7589:14:171","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"id":87504,"nodeType":"ArrayTypeName","src":"7589:16:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$87460_storage_$dyn_storage_ptr","typeString":"struct Gear.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":87510,"mutability":"mutable","name":"rewardsCommitment","nameLocation":"7745:17:171","nodeType":"VariableDeclaration","scope":87516,"src":"7725:37:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_storage_$dyn_storage_ptr","typeString":"struct Gear.RewardsCommitment[]"},"typeName":{"baseType":{"id":87508,"nodeType":"UserDefinedTypeName","pathNode":{"id":87507,"name":"RewardsCommitment","nameLocations":["7725:17:171"],"nodeType":"IdentifierPath","referencedDeclaration":87526,"src":"7725:17:171"},"referencedDeclaration":87526,"src":"7725:17:171","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_storage_ptr","typeString":"struct Gear.RewardsCommitment"}},"id":87509,"nodeType":"ArrayTypeName","src":"7725:19:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_storage_$dyn_storage_ptr","typeString":"struct Gear.RewardsCommitment[]"}},"visibility":"internal"},{"constant":false,"id":87515,"mutability":"mutable","name":"validatorsCommitment","nameLocation":"7892:20:171","nodeType":"VariableDeclaration","scope":87516,"src":"7869:43:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_storage_$dyn_storage_ptr","typeString":"struct Gear.ValidatorsCommitment[]"},"typeName":{"baseType":{"id":87513,"nodeType":"UserDefinedTypeName","pathNode":{"id":87512,"name":"ValidatorsCommitment","nameLocations":["7869:20:171"],"nodeType":"IdentifierPath","referencedDeclaration":87482,"src":"7869:20:171"},"referencedDeclaration":87482,"src":"7869:20:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"id":87514,"nodeType":"ArrayTypeName","src":"7869:22:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_storage_$dyn_storage_ptr","typeString":"struct Gear.ValidatorsCommitment[]"}},"visibility":"internal"}],"name":"BatchCommitment","nameLocation":"6720:15:171","scope":88588,"visibility":"public"},{"id":87526,"nodeType":"StructDefinition","src":"7984:144:171","nodes":[],"canonicalName":"Gear.RewardsCommitment","documentation":{"id":87517,"nodeType":"StructuredDocumentation","src":"7925:54:171","text":" @dev Represents rewards commitment."},"members":[{"constant":false,"id":87520,"mutability":"mutable","name":"operators","nameLocation":"8045:9:171","nodeType":"VariableDeclaration","scope":87526,"src":"8019:35:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_storage_ptr","typeString":"struct Gear.OperatorRewardsCommitment"},"typeName":{"id":87519,"nodeType":"UserDefinedTypeName","pathNode":{"id":87518,"name":"OperatorRewardsCommitment","nameLocations":["8019:25:171"],"nodeType":"IdentifierPath","referencedDeclaration":87532,"src":"8019:25:171"},"referencedDeclaration":87532,"src":"8019:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_storage_ptr","typeString":"struct Gear.OperatorRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":87523,"mutability":"mutable","name":"stakers","nameLocation":"8088:7:171","nodeType":"VariableDeclaration","scope":87526,"src":"8064:31:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":87522,"nodeType":"UserDefinedTypeName","pathNode":{"id":87521,"name":"StakerRewardsCommitment","nameLocations":["8064:23:171"],"nodeType":"IdentifierPath","referencedDeclaration":87542,"src":"8064:23:171"},"referencedDeclaration":87542,"src":"8064:23:171","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":87525,"mutability":"mutable","name":"timestamp","nameLocation":"8112:9:171","nodeType":"VariableDeclaration","scope":87526,"src":"8105:16:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":87524,"name":"uint48","nodeType":"ElementaryTypeName","src":"8105:6:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"RewardsCommitment","nameLocation":"7991:17:171","scope":88588,"visibility":"public"},{"id":87532,"nodeType":"StructDefinition","src":"8202:86:171","nodes":[],"canonicalName":"Gear.OperatorRewardsCommitment","documentation":{"id":87527,"nodeType":"StructuredDocumentation","src":"8134:63:171","text":" @dev Represents operator rewards commitment."},"members":[{"constant":false,"id":87529,"mutability":"mutable","name":"amount","nameLocation":"8253:6:171","nodeType":"VariableDeclaration","scope":87532,"src":"8245:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87528,"name":"uint256","nodeType":"ElementaryTypeName","src":"8245:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87531,"mutability":"mutable","name":"root","nameLocation":"8277:4:171","nodeType":"VariableDeclaration","scope":87532,"src":"8269:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8269:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"OperatorRewardsCommitment","nameLocation":"8209:25:171","scope":88588,"visibility":"public"},{"id":87542,"nodeType":"StructDefinition","src":"8360:128:171","nodes":[],"canonicalName":"Gear.StakerRewardsCommitment","documentation":{"id":87533,"nodeType":"StructuredDocumentation","src":"8294:61:171","text":" @dev Represents staker rewards commitment."},"members":[{"constant":false,"id":87537,"mutability":"mutable","name":"distribution","nameLocation":"8417:12:171","nodeType":"VariableDeclaration","scope":87542,"src":"8401:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$87548_storage_$dyn_storage_ptr","typeString":"struct Gear.StakerRewards[]"},"typeName":{"baseType":{"id":87535,"nodeType":"UserDefinedTypeName","pathNode":{"id":87534,"name":"StakerRewards","nameLocations":["8401:13:171"],"nodeType":"IdentifierPath","referencedDeclaration":87548,"src":"8401:13:171"},"referencedDeclaration":87548,"src":"8401:13:171","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_storage_ptr","typeString":"struct Gear.StakerRewards"}},"id":87536,"nodeType":"ArrayTypeName","src":"8401:15:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$87548_storage_$dyn_storage_ptr","typeString":"struct Gear.StakerRewards[]"}},"visibility":"internal"},{"constant":false,"id":87539,"mutability":"mutable","name":"totalAmount","nameLocation":"8447:11:171","nodeType":"VariableDeclaration","scope":87542,"src":"8439:19:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87538,"name":"uint256","nodeType":"ElementaryTypeName","src":"8439:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87541,"mutability":"mutable","name":"token","nameLocation":"8476:5:171","nodeType":"VariableDeclaration","scope":87542,"src":"8468:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87540,"name":"address","nodeType":"ElementaryTypeName","src":"8468:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"StakerRewardsCommitment","nameLocation":"8367:23:171","scope":88588,"visibility":"public"},{"id":87548,"nodeType":"StructDefinition","src":"8549:75:171","nodes":[],"canonicalName":"Gear.StakerRewards","documentation":{"id":87543,"nodeType":"StructuredDocumentation","src":"8494:50:171","text":" @dev Represents staker rewards."},"members":[{"constant":false,"id":87545,"mutability":"mutable","name":"vault","nameLocation":"8588:5:171","nodeType":"VariableDeclaration","scope":87548,"src":"8580:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87544,"name":"address","nodeType":"ElementaryTypeName","src":"8580:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87547,"mutability":"mutable","name":"amount","nameLocation":"8611:6:171","nodeType":"VariableDeclaration","scope":87548,"src":"8603:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87546,"name":"uint256","nodeType":"ElementaryTypeName","src":"8603:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StakerRewards","nameLocation":"8556:13:171","scope":88588,"visibility":"public"},{"id":87556,"nodeType":"EnumDefinition","src":"8699:960:171","nodes":[],"canonicalName":"Gear.CodeState","documentation":{"id":87549,"nodeType":"StructuredDocumentation","src":"8630:64:171","text":" @dev Represents the state of code commitment."},"members":[{"documentation":{"id":87550,"nodeType":"StructuredDocumentation","src":"8724:260:171","text":" @dev The code commitment is in an unknown state (`CodeState.Unknown = 0 as uint8`).\n This is the default state for all code commitments,\n and it means that the code commitment has not been processed yet."},"id":87551,"name":"Unknown","nameLocation":"8993:7:171","nodeType":"EnumValue","src":"8993:7:171"},{"documentation":{"id":87552,"nodeType":"StructuredDocumentation","src":"9010:465:171","text":" @dev The code commitment has requested validation by user (`CodeState.ValidationRequested = 1 as uint8`).\n Users calls `IRouter(router).requestCodeValidation(bytes32 _codeId)` to request code validation and\n attaches sidecar to this transaction (the transaction is encoded in EIP-7594 format),\n then validators can validate the code commitment and set `CodeState.Validated` in case of success."},"id":87553,"name":"ValidationRequested","nameLocation":"9484:19:171","nodeType":"EnumValue","src":"9484:19:171"},{"documentation":{"id":87554,"nodeType":"StructuredDocumentation","src":"9513:122:171","text":" @dev The code commitment has been validated by validators (`CodeState.Validated = 2 as uint8`)."},"id":87555,"name":"Validated","nameLocation":"9644:9:171","nodeType":"EnumValue","src":"9644:9:171"}],"name":"CodeState","nameLocation":"8704:9:171"},{"id":87562,"nodeType":"StructDefinition","src":"9739:81:171","nodes":[],"canonicalName":"Gear.CommittedBatchInfo","documentation":{"id":87557,"nodeType":"StructuredDocumentation","src":"9665:69:171","text":" @dev Represents information about committed batch."},"members":[{"constant":false,"id":87559,"mutability":"mutable","name":"hash","nameLocation":"9783:4:171","nodeType":"VariableDeclaration","scope":87562,"src":"9775:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87558,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9775:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87561,"mutability":"mutable","name":"timestamp","nameLocation":"9804:9:171","nodeType":"VariableDeclaration","scope":87562,"src":"9797:16:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":87560,"name":"uint48","nodeType":"ElementaryTypeName","src":"9797:6:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"CommittedBatchInfo","nameLocation":"9746:18:171","scope":88588,"visibility":"public"},{"id":87568,"nodeType":"StructDefinition","src":"9887:92:171","nodes":[],"canonicalName":"Gear.ComputationSettings","documentation":{"id":87563,"nodeType":"StructuredDocumentation","src":"9826:56:171","text":" @dev Represents computation settings."},"members":[{"constant":false,"id":87565,"mutability":"mutable","name":"threshold","nameLocation":"9931:9:171","nodeType":"VariableDeclaration","scope":87568,"src":"9924:16:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":87564,"name":"uint64","nodeType":"ElementaryTypeName","src":"9924:6:171","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":87567,"mutability":"mutable","name":"wvaraPerSecond","nameLocation":"9958:14:171","nodeType":"VariableDeclaration","scope":87568,"src":"9950:22:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87566,"name":"uint128","nodeType":"ElementaryTypeName","src":"9950:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ComputationSettings","nameLocation":"9894:19:171","scope":88588,"visibility":"public"},{"id":87576,"nodeType":"StructDefinition","src":"10057:102:171","nodes":[],"canonicalName":"Gear.GenesisBlockInfo","documentation":{"id":87569,"nodeType":"StructuredDocumentation","src":"9985:67:171","text":" @dev Represents information about genesis block."},"members":[{"constant":false,"id":87571,"mutability":"mutable","name":"hash","nameLocation":"10099:4:171","nodeType":"VariableDeclaration","scope":87576,"src":"10091:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10091:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87573,"mutability":"mutable","name":"number","nameLocation":"10120:6:171","nodeType":"VariableDeclaration","scope":87576,"src":"10113:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":87572,"name":"uint32","nodeType":"ElementaryTypeName","src":"10113:6:171","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":87575,"mutability":"mutable","name":"timestamp","nameLocation":"10143:9:171","nodeType":"VariableDeclaration","scope":87576,"src":"10136:16:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":87574,"name":"uint48","nodeType":"ElementaryTypeName","src":"10136:6:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"GenesisBlockInfo","nameLocation":"10064:16:171","scope":88588,"visibility":"public"},{"id":87597,"nodeType":"StructDefinition","src":"10213:1092:171","nodes":[],"canonicalName":"Gear.Message","documentation":{"id":87577,"nodeType":"StructuredDocumentation","src":"10165:43:171","text":" @dev Represents message."},"members":[{"constant":false,"id":87580,"mutability":"mutable","name":"id","nameLocation":"10338:2:171","nodeType":"VariableDeclaration","scope":87597,"src":"10330:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87579,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10330:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87583,"mutability":"mutable","name":"destination","nameLocation":"10534:11:171","nodeType":"VariableDeclaration","scope":87597,"src":"10526:19:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87582,"name":"address","nodeType":"ElementaryTypeName","src":"10526:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87586,"mutability":"mutable","name":"payload","nameLocation":"10629:7:171","nodeType":"VariableDeclaration","scope":87597,"src":"10623:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":87585,"name":"bytes","nodeType":"ElementaryTypeName","src":"10623:5:171","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":87589,"mutability":"mutable","name":"value","nameLocation":"10733:5:171","nodeType":"VariableDeclaration","scope":87597,"src":"10725:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87588,"name":"uint128","nodeType":"ElementaryTypeName","src":"10725:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87593,"mutability":"mutable","name":"replyDetails","nameLocation":"10981:12:171","nodeType":"VariableDeclaration","scope":87597,"src":"10968:25:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_storage_ptr","typeString":"struct Gear.ReplyDetails"},"typeName":{"id":87592,"nodeType":"UserDefinedTypeName","pathNode":{"id":87591,"name":"ReplyDetails","nameLocations":["10968:12:171"],"nodeType":"IdentifierPath","referencedDeclaration":87633,"src":"10968:12:171"},"referencedDeclaration":87633,"src":"10968:12:171","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_storage_ptr","typeString":"struct Gear.ReplyDetails"}},"visibility":"internal"},{"constant":false,"id":87596,"mutability":"mutable","name":"call","nameLocation":"11294:4:171","nodeType":"VariableDeclaration","scope":87597,"src":"11289:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87595,"name":"bool","nodeType":"ElementaryTypeName","src":"11289:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"Message","nameLocation":"10220:7:171","scope":88588,"visibility":"public"},{"id":87625,"nodeType":"StructDefinition","src":"11369:1298:171","nodes":[],"canonicalName":"Gear.ProtocolData","documentation":{"id":87598,"nodeType":"StructuredDocumentation","src":"11311:53:171","text":" @dev Represents the protocol data."},"members":[{"constant":false,"id":87604,"mutability":"mutable","name":"codes","nameLocation":"11643:5:171","nodeType":"VariableDeclaration","scope":87625,"src":"11613:35:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"},"typeName":{"id":87603,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":87600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11621:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"11613:29:171","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":87602,"nodeType":"UserDefinedTypeName","pathNode":{"id":87601,"name":"CodeState","nameLocations":["11632:9:171"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"11632:9:171"},"referencedDeclaration":87556,"src":"11632:9:171","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}}},"visibility":"internal"},{"constant":false,"id":87609,"mutability":"mutable","name":"programs","nameLocation":"11861:8:171","nodeType":"VariableDeclaration","scope":87625,"src":"11833:36:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"typeName":{"id":87608,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":87606,"name":"address","nodeType":"ElementaryTypeName","src":"11841:7:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"11833:27:171","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":87607,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11852:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"internal"},{"constant":false,"id":87612,"mutability":"mutable","name":"programsCount","nameLocation":"11978:13:171","nodeType":"VariableDeclaration","scope":87625,"src":"11970:21:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87611,"name":"uint256","nodeType":"ElementaryTypeName","src":"11970:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87615,"mutability":"mutable","name":"validatedCodesCount","nameLocation":"12106:19:171","nodeType":"VariableDeclaration","scope":87625,"src":"12098:27:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87614,"name":"uint256","nodeType":"ElementaryTypeName","src":"12098:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87618,"mutability":"mutable","name":"maxValidators","nameLocation":"12224:13:171","nodeType":"VariableDeclaration","scope":87625,"src":"12217:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":87617,"name":"uint16","nodeType":"ElementaryTypeName","src":"12217:6:171","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":87621,"mutability":"mutable","name":"requestCodeValidationBaseFee","nameLocation":"12415:28:171","nodeType":"VariableDeclaration","scope":87625,"src":"12407:36:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87620,"name":"uint256","nodeType":"ElementaryTypeName","src":"12407:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87624,"mutability":"mutable","name":"requestCodeValidationExtraFee","nameLocation":"12631:29:171","nodeType":"VariableDeclaration","scope":87625,"src":"12623:37:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87623,"name":"uint256","nodeType":"ElementaryTypeName","src":"12623:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ProtocolData","nameLocation":"11376:12:171","scope":88588,"visibility":"public"},{"id":87633,"nodeType":"StructDefinition","src":"12733:564:171","nodes":[],"canonicalName":"Gear.ReplyDetails","documentation":{"id":87626,"nodeType":"StructuredDocumentation","src":"12673:55:171","text":" @dev Represents details about reply."},"members":[{"constant":false,"id":87629,"mutability":"mutable","name":"to","nameLocation":"12942:2:171","nodeType":"VariableDeclaration","scope":87633,"src":"12934:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87628,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12934:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87632,"mutability":"mutable","name":"code","nameLocation":"13286:4:171","nodeType":"VariableDeclaration","scope":87633,"src":"13279:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":87631,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13279:6:171","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"name":"ReplyDetails","nameLocation":"12740:12:171","scope":88588,"visibility":"public"},{"id":87663,"nodeType":"StructDefinition","src":"13574:1608:171","nodes":[],"canonicalName":"Gear.StateTransition","documentation":{"id":87634,"nodeType":"StructuredDocumentation","src":"13303:266:171","text":" @dev Represents state transition of `Mirror`.\n Most important type in this, in Rust we use this type to mutate state of `Mirror` instances.\n (see `ethexe/common/src/gear.rs` for more details on how this type is used in Rust)."},"members":[{"constant":false,"id":87637,"mutability":"mutable","name":"actorId","nameLocation":"13801:7:171","nodeType":"VariableDeclaration","scope":87663,"src":"13793:15:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87636,"name":"address","nodeType":"ElementaryTypeName","src":"13793:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87640,"mutability":"mutable","name":"newStateHash","nameLocation":"13982:12:171","nodeType":"VariableDeclaration","scope":87663,"src":"13974:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87639,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13974:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87643,"mutability":"mutable","name":"exited","nameLocation":"14089:6:171","nodeType":"VariableDeclaration","scope":87663,"src":"14084:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87642,"name":"bool","nodeType":"ElementaryTypeName","src":"14084:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":87646,"mutability":"mutable","name":"inheritor","nameLocation":"14291:9:171","nodeType":"VariableDeclaration","scope":87663,"src":"14283:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87645,"name":"address","nodeType":"ElementaryTypeName","src":"14283:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87649,"mutability":"mutable","name":"valueToReceive","nameLocation":"14669:14:171","nodeType":"VariableDeclaration","scope":87663,"src":"14661:22:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87648,"name":"uint128","nodeType":"ElementaryTypeName","src":"14661:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87652,"mutability":"mutable","name":"valueToReceiveNegativeSign","nameLocation":"14965:26:171","nodeType":"VariableDeclaration","scope":87663,"src":"14960:31:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87651,"name":"bool","nodeType":"ElementaryTypeName","src":"14960:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":87657,"mutability":"mutable","name":"valueClaims","nameLocation":"15077:11:171","nodeType":"VariableDeclaration","scope":87663,"src":"15064:24:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":87655,"nodeType":"UserDefinedTypeName","pathNode":{"id":87654,"name":"ValueClaim","nameLocations":["15064:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87703,"src":"15064:10:171"},"referencedDeclaration":87703,"src":"15064:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":87656,"nodeType":"ArrayTypeName","src":"15064:12:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"},{"constant":false,"id":87662,"mutability":"mutable","name":"messages","nameLocation":"15167:8:171","nodeType":"VariableDeclaration","scope":87663,"src":"15157:18:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":87660,"nodeType":"UserDefinedTypeName","pathNode":{"id":87659,"name":"Message","nameLocations":["15157:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"15157:7:171"},"referencedDeclaration":87597,"src":"15157:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"id":87661,"nodeType":"ArrayTypeName","src":"15157:9:171","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"name":"StateTransition","nameLocation":"13581:15:171","scope":88588,"visibility":"public"},{"id":87671,"nodeType":"StructDefinition","src":"15242:104:171","nodes":[],"canonicalName":"Gear.Timelines","documentation":{"id":87664,"nodeType":"StructuredDocumentation","src":"15188:49:171","text":" @dev Represents the timelines."},"members":[{"constant":false,"id":87666,"mutability":"mutable","name":"era","nameLocation":"15277:3:171","nodeType":"VariableDeclaration","scope":87671,"src":"15269:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87665,"name":"uint256","nodeType":"ElementaryTypeName","src":"15269:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87668,"mutability":"mutable","name":"election","nameLocation":"15298:8:171","nodeType":"VariableDeclaration","scope":87671,"src":"15290:16:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87667,"name":"uint256","nodeType":"ElementaryTypeName","src":"15290:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87670,"mutability":"mutable","name":"validationDelay","nameLocation":"15324:15:171","nodeType":"VariableDeclaration","scope":87671,"src":"15316:23:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87669,"name":"uint256","nodeType":"ElementaryTypeName","src":"15316:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Timelines","nameLocation":"15249:9:171","scope":88588,"visibility":"public"},{"id":87683,"nodeType":"StructDefinition","src":"15416:171:171","nodes":[],"canonicalName":"Gear.ValidationSettings","documentation":{"id":87672,"nodeType":"StructuredDocumentation","src":"15352:59:171","text":" @dev Represents the validation settings."},"members":[{"constant":false,"id":87674,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15460:18:171","nodeType":"VariableDeclaration","scope":87683,"src":"15452:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87673,"name":"uint128","nodeType":"ElementaryTypeName","src":"15452:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87676,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15496:20:171","nodeType":"VariableDeclaration","scope":87683,"src":"15488:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87675,"name":"uint128","nodeType":"ElementaryTypeName","src":"15488:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87679,"mutability":"mutable","name":"validators0","nameLocation":"15537:11:171","nodeType":"VariableDeclaration","scope":87683,"src":"15526:22:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":87678,"nodeType":"UserDefinedTypeName","pathNode":{"id":87677,"name":"Validators","nameLocations":["15526:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"15526:10:171"},"referencedDeclaration":87429,"src":"15526:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":87682,"mutability":"mutable","name":"validators1","nameLocation":"15569:11:171","nodeType":"VariableDeclaration","scope":87683,"src":"15558:22:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":87681,"nodeType":"UserDefinedTypeName","pathNode":{"id":87680,"name":"Validators","nameLocations":["15558:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"15558:10:171"},"referencedDeclaration":87429,"src":"15558:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"name":"ValidationSettings","nameLocation":"15423:18:171","scope":88588,"visibility":"public"},{"id":87695,"nodeType":"StructDefinition","src":"15665:183:171","nodes":[],"canonicalName":"Gear.ValidationSettingsView","documentation":{"id":87684,"nodeType":"StructuredDocumentation","src":"15593:67:171","text":" @dev Represents the view of validation settings."},"members":[{"constant":false,"id":87686,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15713:18:171","nodeType":"VariableDeclaration","scope":87695,"src":"15705:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87685,"name":"uint128","nodeType":"ElementaryTypeName","src":"15705:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87688,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15749:20:171","nodeType":"VariableDeclaration","scope":87695,"src":"15741:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87687,"name":"uint128","nodeType":"ElementaryTypeName","src":"15741:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87691,"mutability":"mutable","name":"validators0","nameLocation":"15794:11:171","nodeType":"VariableDeclaration","scope":87695,"src":"15779:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":87690,"nodeType":"UserDefinedTypeName","pathNode":{"id":87689,"name":"ValidatorsView","nameLocations":["15779:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":87441,"src":"15779:14:171"},"referencedDeclaration":87441,"src":"15779:14:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"},{"constant":false,"id":87694,"mutability":"mutable","name":"validators1","nameLocation":"15830:11:171","nodeType":"VariableDeclaration","scope":87695,"src":"15815:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":87693,"nodeType":"UserDefinedTypeName","pathNode":{"id":87692,"name":"ValidatorsView","nameLocations":["15815:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":87441,"src":"15815:14:171"},"referencedDeclaration":87441,"src":"15815:14:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"name":"ValidationSettingsView","nameLocation":"15672:22:171","scope":88588,"visibility":"public"},{"id":87703,"nodeType":"StructDefinition","src":"15910:104:171","nodes":[],"canonicalName":"Gear.ValueClaim","documentation":{"id":87696,"nodeType":"StructuredDocumentation","src":"15854:51:171","text":" @dev Represents claim for value."},"members":[{"constant":false,"id":87698,"mutability":"mutable","name":"messageId","nameLocation":"15946:9:171","nodeType":"VariableDeclaration","scope":87703,"src":"15938:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15938:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87700,"mutability":"mutable","name":"destination","nameLocation":"15973:11:171","nodeType":"VariableDeclaration","scope":87703,"src":"15965:19:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87699,"name":"address","nodeType":"ElementaryTypeName","src":"15965:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87702,"mutability":"mutable","name":"value","nameLocation":"16002:5:171","nodeType":"VariableDeclaration","scope":87703,"src":"15994:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87701,"name":"uint128","nodeType":"ElementaryTypeName","src":"15994:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ValueClaim","nameLocation":"15917:10:171","scope":88588,"visibility":"public"},{"id":87725,"nodeType":"StructDefinition","src":"16094:436:171","nodes":[],"canonicalName":"Gear.SymbioticContracts","documentation":{"id":87704,"nodeType":"StructuredDocumentation","src":"16020:69:171","text":" @dev Represents the symbiotic contracts addresses."},"members":[{"constant":false,"id":87706,"mutability":"mutable","name":"vaultRegistry","nameLocation":"16170:13:171","nodeType":"VariableDeclaration","scope":87725,"src":"16162:21:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87705,"name":"address","nodeType":"ElementaryTypeName","src":"16162:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87708,"mutability":"mutable","name":"operatorRegistry","nameLocation":"16201:16:171","nodeType":"VariableDeclaration","scope":87725,"src":"16193:24:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87707,"name":"address","nodeType":"ElementaryTypeName","src":"16193:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87710,"mutability":"mutable","name":"networkRegistry","nameLocation":"16235:15:171","nodeType":"VariableDeclaration","scope":87725,"src":"16227:23:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87709,"name":"address","nodeType":"ElementaryTypeName","src":"16227:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87712,"mutability":"mutable","name":"middlewareService","nameLocation":"16268:17:171","nodeType":"VariableDeclaration","scope":87725,"src":"16260:25:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87711,"name":"address","nodeType":"ElementaryTypeName","src":"16260:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87714,"mutability":"mutable","name":"networkOptIn","nameLocation":"16303:12:171","nodeType":"VariableDeclaration","scope":87725,"src":"16295:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87713,"name":"address","nodeType":"ElementaryTypeName","src":"16295:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87716,"mutability":"mutable","name":"stakerRewardsFactory","nameLocation":"16333:20:171","nodeType":"VariableDeclaration","scope":87725,"src":"16325:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87715,"name":"address","nodeType":"ElementaryTypeName","src":"16325:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87718,"mutability":"mutable","name":"operatorRewards","nameLocation":"16407:15:171","nodeType":"VariableDeclaration","scope":87725,"src":"16399:23:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87717,"name":"address","nodeType":"ElementaryTypeName","src":"16399:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87720,"mutability":"mutable","name":"roleSlashRequester","nameLocation":"16440:18:171","nodeType":"VariableDeclaration","scope":87725,"src":"16432:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87719,"name":"address","nodeType":"ElementaryTypeName","src":"16432:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87722,"mutability":"mutable","name":"roleSlashExecutor","nameLocation":"16476:17:171","nodeType":"VariableDeclaration","scope":87725,"src":"16468:25:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87721,"name":"address","nodeType":"ElementaryTypeName","src":"16468:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87724,"mutability":"mutable","name":"vetoResolver","nameLocation":"16511:12:171","nodeType":"VariableDeclaration","scope":87725,"src":"16503:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87723,"name":"address","nodeType":"ElementaryTypeName","src":"16503:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"SymbioticContracts","nameLocation":"16101:18:171","scope":88588,"visibility":"public"},{"id":87729,"nodeType":"EnumDefinition","src":"16603:55:171","nodes":[],"canonicalName":"Gear.SignatureType","documentation":{"id":87726,"nodeType":"StructuredDocumentation","src":"16536:62:171","text":" @dev Represents the type of signature used."},"members":[{"id":87727,"name":"FROST","nameLocation":"16632:5:171","nodeType":"EnumValue","src":"16632:5:171"},{"id":87728,"name":"ECDSA","nameLocation":"16647:5:171","nodeType":"EnumValue","src":"16647:5:171"}],"name":"SignatureType","nameLocation":"16608:13:171"},{"id":87746,"nodeType":"FunctionDefinition","src":"16870:185:171","nodes":[],"body":{"id":87745,"nodeType":"Block","src":"16972:83:171","nodes":[],"statements":[{"expression":{"arguments":[{"id":87741,"name":"_transitionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87732,"src":"17024:16:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87742,"name":"_head","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87734,"src":"17042:5:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":87739,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"16989:6:171","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":87740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16996:27:171","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41482,"src":"16989:34:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":87743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16989:59:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87738,"id":87744,"nodeType":"Return","src":"16982:66:171"}]},"documentation":{"id":87730,"nodeType":"StructuredDocumentation","src":"16664:201:171","text":" @dev Computes the hash of `ChainCommitment`.\n @param _transitionsHash The hash of the transitions in the chain commitment.\n @param _head The head of the chain commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"chainCommitmentHash","nameLocation":"16879:19:171","parameters":{"id":87735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87732,"mutability":"mutable","name":"_transitionsHash","nameLocation":"16907:16:171","nodeType":"VariableDeclaration","scope":87746,"src":"16899:24:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16899:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87734,"mutability":"mutable","name":"_head","nameLocation":"16933:5:171","nodeType":"VariableDeclaration","scope":87746,"src":"16925:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16925:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16898:41:171"},"returnParameters":{"id":87738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87746,"src":"16963:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16963:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16962:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87763,"nodeType":"FunctionDefinition","src":"17224:336:171","nodes":[],"body":{"id":87762,"nodeType":"Block","src":"17312:248:171","nodes":[],"statements":[{"assignments":[87757],"declarations":[{"constant":false,"id":87757,"mutability":"mutable","name":"_codeCommitmentHash","nameLocation":"17330:19:171","nodeType":"VariableDeclaration","scope":87762,"src":"17322:27:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17322:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":87758,"nodeType":"VariableDeclarationStatement","src":"17322:27:171"},{"AST":{"nativeSrc":"17384:134:171","nodeType":"YulBlock","src":"17384:134:171","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17405:4:171","nodeType":"YulLiteral","src":"17405:4:171","type":"","value":"0x00"},{"name":"codeId","nativeSrc":"17411:6:171","nodeType":"YulIdentifier","src":"17411:6:171"}],"functionName":{"name":"mstore","nativeSrc":"17398:6:171","nodeType":"YulIdentifier","src":"17398:6:171"},"nativeSrc":"17398:20:171","nodeType":"YulFunctionCall","src":"17398:20:171"},"nativeSrc":"17398:20:171","nodeType":"YulExpressionStatement","src":"17398:20:171"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17439:4:171","nodeType":"YulLiteral","src":"17439:4:171","type":"","value":"0x20"},{"name":"valid","nativeSrc":"17445:5:171","nodeType":"YulIdentifier","src":"17445:5:171"}],"functionName":{"name":"mstore8","nativeSrc":"17431:7:171","nodeType":"YulIdentifier","src":"17431:7:171"},"nativeSrc":"17431:20:171","nodeType":"YulFunctionCall","src":"17431:20:171"},"nativeSrc":"17431:20:171","nodeType":"YulExpressionStatement","src":"17431:20:171"},{"nativeSrc":"17464:44:171","nodeType":"YulAssignment","src":"17464:44:171","value":{"arguments":[{"kind":"number","nativeSrc":"17497:4:171","nodeType":"YulLiteral","src":"17497:4:171","type":"","value":"0x00"},{"kind":"number","nativeSrc":"17503:4:171","nodeType":"YulLiteral","src":"17503:4:171","type":"","value":"0x21"}],"functionName":{"name":"keccak256","nativeSrc":"17487:9:171","nodeType":"YulIdentifier","src":"17487:9:171"},"nativeSrc":"17487:21:171","nodeType":"YulFunctionCall","src":"17487:21:171"},"variableNames":[{"name":"_codeCommitmentHash","nativeSrc":"17464:19:171","nodeType":"YulIdentifier","src":"17464:19:171"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":87757,"isOffset":false,"isSlot":false,"src":"17464:19:171","valueSize":1},{"declaration":87749,"isOffset":false,"isSlot":false,"src":"17411:6:171","valueSize":1},{"declaration":87751,"isOffset":false,"isSlot":false,"src":"17445:5:171","valueSize":1}],"flags":["memory-safe"],"id":87759,"nodeType":"InlineAssembly","src":"17359:159:171"},{"expression":{"id":87760,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87757,"src":"17534:19:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87755,"id":87761,"nodeType":"Return","src":"17527:26:171"}]},"documentation":{"id":87747,"nodeType":"StructuredDocumentation","src":"17061:158:171","text":" @dev Computes the hash of `CodeCommitment`.\n @param codeId The ID of the code.\n @param valid The validation status of the code."},"implemented":true,"kind":"function","modifiers":[],"name":"codeCommitmentHash","nameLocation":"17233:18:171","parameters":{"id":87752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87749,"mutability":"mutable","name":"codeId","nameLocation":"17260:6:171","nodeType":"VariableDeclaration","scope":87763,"src":"17252:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17252:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87751,"mutability":"mutable","name":"valid","nameLocation":"17273:5:171","nodeType":"VariableDeclaration","scope":87763,"src":"17268:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87750,"name":"bool","nodeType":"ElementaryTypeName","src":"17268:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17251:28:171"},"returnParameters":{"id":87755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87754,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87763,"src":"17303:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87753,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17303:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17302:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87785,"nodeType":"FunctionDefinition","src":"17837:273:171","nodes":[],"body":{"id":87784,"nodeType":"Block","src":"18005:105:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":87778,"name":"_operatorRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87766,"src":"18049:20:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87779,"name":"_stakerRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87768,"src":"18071:18:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87780,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87770,"src":"18091:10:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":87776,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18032:3:171","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18036:12:171","memberName":"encodePacked","nodeType":"MemberAccess","src":"18032:16:171","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":87781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18032:70:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87775,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"18022:9:171","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":87782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18022:81:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87774,"id":87783,"nodeType":"Return","src":"18015:88:171"}]},"documentation":{"id":87764,"nodeType":"StructuredDocumentation","src":"17566:266:171","text":" @dev Computes the hash of `RewardsCommitment`.\n @param _operatorRewardsHash The hash of the operator rewards.\n @param _stakerRewardsHash The hash of the staker rewards.\n @param _timestamp The timestamp for the rewards commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"rewardsCommitmentHash","nameLocation":"17846:21:171","parameters":{"id":87771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87766,"mutability":"mutable","name":"_operatorRewardsHash","nameLocation":"17876:20:171","nodeType":"VariableDeclaration","scope":87785,"src":"17868:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17868:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87768,"mutability":"mutable","name":"_stakerRewardsHash","nameLocation":"17906:18:171","nodeType":"VariableDeclaration","scope":87785,"src":"17898:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17898:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87770,"mutability":"mutable","name":"_timestamp","nameLocation":"17933:10:171","nodeType":"VariableDeclaration","scope":87785,"src":"17926:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":87769,"name":"uint48","nodeType":"ElementaryTypeName","src":"17926:6:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17867:77:171"},"returnParameters":{"id":87774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87785,"src":"17992:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17992:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17991:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87811,"nodeType":"FunctionDefinition","src":"18241:374:171","nodes":[],"body":{"id":87810,"nodeType":"Block","src":"18352:263:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":87797,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87789,"src":"18426:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":87798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18437:19:171","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87474,"src":"18426:30:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":87799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18457:1:171","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":87405,"src":"18426:32:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":87800,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87789,"src":"18476:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":87801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18487:19:171","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87474,"src":"18476:30:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":87802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18507:1:171","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":87407,"src":"18476:32:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":87803,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87789,"src":"18526:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":87804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18537:10:171","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":87479,"src":"18526:21:171","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"expression":{"id":87805,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87789,"src":"18565:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_memory_ptr","typeString":"struct Gear.ValidatorsCommitment memory"}},"id":87806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18576:8:171","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"18565:19:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":87795,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18392:3:171","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18396:12:171","memberName":"encodePacked","nodeType":"MemberAccess","src":"18392:16:171","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":87807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18392:206:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87794,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"18369:9:171","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":87808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18369:239:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87793,"id":87809,"nodeType":"Return","src":"18362:246:171"}]},"documentation":{"id":87786,"nodeType":"StructuredDocumentation","src":"18116:120:171","text":" @dev Computes the hash of `ValidatorsCommitment`.\n @param commitment The validators commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsCommitmentHash","nameLocation":"18250:24:171","parameters":{"id":87790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87789,"mutability":"mutable","name":"commitment","nameLocation":"18308:10:171","nodeType":"VariableDeclaration","scope":87811,"src":"18275:43:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_memory_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":87788,"nodeType":"UserDefinedTypeName","pathNode":{"id":87787,"name":"Gear.ValidatorsCommitment","nameLocations":["18275:4:171","18280:20:171"],"nodeType":"IdentifierPath","referencedDeclaration":87482,"src":"18275:25:171"},"referencedDeclaration":87482,"src":"18275:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"}],"src":"18274:45:171"},"returnParameters":{"id":87793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87811,"src":"18343:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87791,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18343:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18342:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87848,"nodeType":"FunctionDefinition","src":"19228:697:171","nodes":[],"body":{"id":87847,"nodeType":"Block","src":"19565:360:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":87836,"name":"_block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87814,"src":"19639:6:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87837,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87816,"src":"19663:10:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":87838,"name":"_prevCommittedBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87818,"src":"19691:19:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87839,"name":"_expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87820,"src":"19728:7:171","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":87840,"name":"_chainCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87822,"src":"19753:20:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87841,"name":"_codeCommitmentsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87824,"src":"19791:20:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87842,"name":"_rewardsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87826,"src":"19829:22:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87843,"name":"_validatorsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87828,"src":"19869:25:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":87834,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19605:3:171","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19609:12:171","memberName":"encodePacked","nodeType":"MemberAccess","src":"19605:16:171","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":87844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19605:303:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87833,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"19582:9:171","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":87845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19582:336:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87832,"id":87846,"nodeType":"Return","src":"19575:343:171"}]},"documentation":{"id":87812,"nodeType":"StructuredDocumentation","src":"18621:602:171","text":" @dev Computes the hash of `BatchCommitment`.\n @param _block The hash of the block.\n @param _timestamp The timestamp for the batch commitment.\n @param _prevCommittedBlock The hash of the previous committed block.\n @param _expiry The expiry time for the batch commitment.\n @param _chainCommitmentHash The hash of the chain commitment.\n @param _codeCommitmentsHash The hash of the code commitments.\n @param _rewardsCommitmentHash The hash of the rewards commitment.\n @param _validatorsCommitmentHash The hash of the validators commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"batchCommitmentHash","nameLocation":"19237:19:171","parameters":{"id":87829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87814,"mutability":"mutable","name":"_block","nameLocation":"19274:6:171","nodeType":"VariableDeclaration","scope":87848,"src":"19266:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87813,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19266:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87816,"mutability":"mutable","name":"_timestamp","nameLocation":"19297:10:171","nodeType":"VariableDeclaration","scope":87848,"src":"19290:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":87815,"name":"uint48","nodeType":"ElementaryTypeName","src":"19290:6:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":87818,"mutability":"mutable","name":"_prevCommittedBlock","nameLocation":"19325:19:171","nodeType":"VariableDeclaration","scope":87848,"src":"19317:27:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19317:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87820,"mutability":"mutable","name":"_expiry","nameLocation":"19360:7:171","nodeType":"VariableDeclaration","scope":87848,"src":"19354:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":87819,"name":"uint8","nodeType":"ElementaryTypeName","src":"19354:5:171","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":87822,"mutability":"mutable","name":"_chainCommitmentHash","nameLocation":"19385:20:171","nodeType":"VariableDeclaration","scope":87848,"src":"19377:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19377:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87824,"mutability":"mutable","name":"_codeCommitmentsHash","nameLocation":"19423:20:171","nodeType":"VariableDeclaration","scope":87848,"src":"19415:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19415:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87826,"mutability":"mutable","name":"_rewardsCommitmentHash","nameLocation":"19461:22:171","nodeType":"VariableDeclaration","scope":87848,"src":"19453:30:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87825,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19453:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87828,"mutability":"mutable","name":"_validatorsCommitmentHash","nameLocation":"19501:25:171","nodeType":"VariableDeclaration","scope":87848,"src":"19493:33:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87827,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19493:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19256:276:171"},"returnParameters":{"id":87832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87831,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87848,"src":"19556:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19556:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19555:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87880,"nodeType":"FunctionDefinition","src":"20056:407:171","nodes":[],"body":{"id":87879,"nodeType":"Block","src":"20133:330:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":87860,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20207:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20215:2:171","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"20207:10:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":87862,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20235:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20243:11:171","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"20235:19:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":87864,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20272:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20280:7:171","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"20272:15:171","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":87866,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20305:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20313:5:171","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"20305:13:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":87868,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20336:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20344:12:171","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"20336:20:171","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_memory_ptr","typeString":"struct Gear.ReplyDetails memory"}},"id":87870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20357:2:171","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"20336:23:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":87871,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20377:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20385:12:171","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"20377:20:171","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_memory_ptr","typeString":"struct Gear.ReplyDetails memory"}},"id":87873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20398:4:171","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"20377:25:171","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":87874,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87852,"src":"20420:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message memory"}},"id":87875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20428:4:171","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":87596,"src":"20420:12:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":87858,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20173:3:171","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20177:12:171","memberName":"encodePacked","nodeType":"MemberAccess","src":"20173:16:171","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":87876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20173:273:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87857,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20150:9:171","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":87877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20150:306:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87856,"id":87878,"nodeType":"Return","src":"20143:313:171"}]},"documentation":{"id":87849,"nodeType":"StructuredDocumentation","src":"19931:120:171","text":" @dev Computes the hash of `Message`.\n @param message The message for which to compute the hash."},"implemented":true,"kind":"function","modifiers":[],"name":"messageHash","nameLocation":"20065:11:171","parameters":{"id":87853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87852,"mutability":"mutable","name":"message","nameLocation":"20092:7:171","nodeType":"VariableDeclaration","scope":87880,"src":"20077:22:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_memory_ptr","typeString":"struct Gear.Message"},"typeName":{"id":87851,"nodeType":"UserDefinedTypeName","pathNode":{"id":87850,"name":"Message","nameLocations":["20077:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"20077:7:171"},"referencedDeclaration":87597,"src":"20077:7:171","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"20076:24:171"},"returnParameters":{"id":87856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87880,"src":"20124:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87854,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20124:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20123:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87902,"nodeType":"FunctionDefinition","src":"20670:199:171","nodes":[],"body":{"id":87901,"nodeType":"Block","src":"20784:85:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":87895,"name":"_messageId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87883,"src":"20828:10:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87896,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87885,"src":"20840:12:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87897,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87887,"src":"20854:6:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":87893,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20811:3:171","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20815:12:171","memberName":"encodePacked","nodeType":"MemberAccess","src":"20811:16:171","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":87898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20811:50:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87892,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20801:9:171","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":87899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20801:61:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87891,"id":87900,"nodeType":"Return","src":"20794:68:171"}]},"documentation":{"id":87881,"nodeType":"StructuredDocumentation","src":"20469:196:171","text":" @dev Computes the hash of `ValueClaim`.\n @param _messageId The message ID.\n @param _destination The destination address.\n @param _value The value of the claim."},"implemented":true,"kind":"function","modifiers":[],"name":"valueClaimHash","nameLocation":"20679:14:171","parameters":{"id":87888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87883,"mutability":"mutable","name":"_messageId","nameLocation":"20702:10:171","nodeType":"VariableDeclaration","scope":87902,"src":"20694:18:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87882,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20694:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87885,"mutability":"mutable","name":"_destination","nameLocation":"20722:12:171","nodeType":"VariableDeclaration","scope":87902,"src":"20714:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87884,"name":"address","nodeType":"ElementaryTypeName","src":"20714:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87887,"mutability":"mutable","name":"_value","nameLocation":"20744:6:171","nodeType":"VariableDeclaration","scope":87902,"src":"20736:14:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87886,"name":"uint128","nodeType":"ElementaryTypeName","src":"20736:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"20693:58:171"},"returnParameters":{"id":87891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87902,"src":"20775:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87889,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20775:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20774:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":87939,"nodeType":"FunctionDefinition","src":"21373:646:171","nodes":[],"body":{"id":87938,"nodeType":"Block","src":"21683:336:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":87927,"name":"actor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87905,"src":"21757:5:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87928,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87907,"src":"21780:12:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87929,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87909,"src":"21810:6:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":87930,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87911,"src":"21834:9:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":87931,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87913,"src":"21861:14:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":87932,"name":"valueToReceiveNegativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87915,"src":"21893:26:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":87933,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87917,"src":"21937:15:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":87934,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87919,"src":"21970:18:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":87925,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"21723:3:171","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":87926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"21727:12:171","memberName":"encodePacked","nodeType":"MemberAccess","src":"21723:16:171","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":87935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21723:279:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":87924,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"21700:9:171","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":87936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21700:312:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":87923,"id":87937,"nodeType":"Return","src":"21693:319:171"}]},"documentation":{"id":87903,"nodeType":"StructuredDocumentation","src":"20875:493:171","text":" @dev Computes the hash of `StateTransition`.\n @param actor The actor address.\n @param newStateHash The hash of the new state.\n @param exited The exit status.\n @param inheritor The inheritor address.\n @param valueToReceive The value to receive.\n @param valueToReceiveNegativeSign The sign of the value to receive.\n @param valueClaimsHash The hash of the value claims.\n @param messagesHashesHash The hash of the messages hashes."},"implemented":true,"kind":"function","modifiers":[],"name":"stateTransitionHash","nameLocation":"21382:19:171","parameters":{"id":87920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87905,"mutability":"mutable","name":"actor","nameLocation":"21419:5:171","nodeType":"VariableDeclaration","scope":87939,"src":"21411:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87904,"name":"address","nodeType":"ElementaryTypeName","src":"21411:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87907,"mutability":"mutable","name":"newStateHash","nameLocation":"21442:12:171","nodeType":"VariableDeclaration","scope":87939,"src":"21434:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21434:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87909,"mutability":"mutable","name":"exited","nameLocation":"21469:6:171","nodeType":"VariableDeclaration","scope":87939,"src":"21464:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87908,"name":"bool","nodeType":"ElementaryTypeName","src":"21464:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":87911,"mutability":"mutable","name":"inheritor","nameLocation":"21493:9:171","nodeType":"VariableDeclaration","scope":87939,"src":"21485:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87910,"name":"address","nodeType":"ElementaryTypeName","src":"21485:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87913,"mutability":"mutable","name":"valueToReceive","nameLocation":"21520:14:171","nodeType":"VariableDeclaration","scope":87939,"src":"21512:22:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":87912,"name":"uint128","nodeType":"ElementaryTypeName","src":"21512:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":87915,"mutability":"mutable","name":"valueToReceiveNegativeSign","nameLocation":"21549:26:171","nodeType":"VariableDeclaration","scope":87939,"src":"21544:31:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87914,"name":"bool","nodeType":"ElementaryTypeName","src":"21544:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":87917,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"21593:15:171","nodeType":"VariableDeclaration","scope":87939,"src":"21585:23:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21585:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87919,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"21626:18:171","nodeType":"VariableDeclaration","scope":87939,"src":"21618:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21618:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21401:249:171"},"returnParameters":{"id":87923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":87939,"src":"21674:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87921,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21674:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21673:9:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":88004,"nodeType":"FunctionDefinition","src":"22293:532:171","nodes":[],"body":{"id":88003,"nodeType":"Block","src":"22392:433:171","nodes":[],"statements":[{"assignments":[87950],"declarations":[{"constant":false,"id":87950,"mutability":"mutable","name":"start","nameLocation":"22410:5:171","nodeType":"VariableDeclaration","scope":88003,"src":"22402:13:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87949,"name":"uint256","nodeType":"ElementaryTypeName","src":"22402:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":87955,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87951,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22418:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":87952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22424:6:171","memberName":"number","nodeType":"MemberAccess","src":"22418:12:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":87953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22433:1:171","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22418:16:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22402:32:171"},{"assignments":[87957],"declarations":[{"constant":false,"id":87957,"mutability":"mutable","name":"end","nameLocation":"22452:3:171","nodeType":"VariableDeclaration","scope":88003,"src":"22444:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87956,"name":"uint256","nodeType":"ElementaryTypeName","src":"22444:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":87968,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87958,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87944,"src":"22458:6:171","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":87959,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22468:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":87960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22474:6:171","memberName":"number","nodeType":"MemberAccess","src":"22468:12:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22458:22:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":87963,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22487:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":87964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22493:6:171","memberName":"number","nodeType":"MemberAccess","src":"22487:12:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":87965,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87944,"src":"22502:6:171","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"22487:21:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":87967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"22458:50:171","trueExpression":{"hexValue":"30","id":87962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22483:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22444:64:171"},{"body":{"id":87999,"nodeType":"Block","src":"22553:243:171","statements":[{"assignments":[87977],"declarations":[{"constant":false,"id":87977,"mutability":"mutable","name":"ret","nameLocation":"22575:3:171","nodeType":"VariableDeclaration","scope":87999,"src":"22567:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22567:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":87981,"initialValue":{"arguments":[{"id":87979,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87970,"src":"22591:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":87978,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22581:9:171","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":87980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22581:12:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"22567:26:171"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":87984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87982,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87977,"src":"22611:3:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":87983,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87942,"src":"22618:4:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22611:11:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":87990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87988,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87977,"src":"22678:3:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":87989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22685:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22678:8:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":87993,"nodeType":"IfStatement","src":"22674:52:171","trueBody":{"id":87992,"nodeType":"Block","src":"22688:38:171","statements":[{"id":87991,"nodeType":"Break","src":"22706:5:171"}]}},"id":87994,"nodeType":"IfStatement","src":"22607:119:171","trueBody":{"id":87987,"nodeType":"Block","src":"22624:44:171","statements":[{"expression":{"hexValue":"74727565","id":87985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22649:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":87948,"id":87986,"nodeType":"Return","src":"22642:11:171"}]}},{"id":87998,"nodeType":"UncheckedBlock","src":"22740:46:171","statements":[{"expression":{"id":87996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"22768:3:171","subExpression":{"id":87995,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87970,"src":"22768:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":87997,"nodeType":"ExpressionStatement","src":"22768:3:171"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":87975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":87973,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87970,"src":"22542:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":87974,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87957,"src":"22547:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22542:8:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88000,"initializationExpression":{"assignments":[87970],"declarations":[{"constant":false,"id":87970,"mutability":"mutable","name":"i","nameLocation":"22531:1:171","nodeType":"VariableDeclaration","scope":88000,"src":"22523:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":87969,"name":"uint256","nodeType":"ElementaryTypeName","src":"22523:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":87972,"initialValue":{"id":87971,"name":"start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87950,"src":"22535:5:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22523:17:171"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"22518:278:171"},{"expression":{"hexValue":"66616c7365","id":88001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22813:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":87948,"id":88002,"nodeType":"Return","src":"22806:12:171"}]},"documentation":{"id":87940,"nodeType":"StructuredDocumentation","src":"22025:263:171","text":" @dev Checks if block is predecessor of the current block.\n @param hash The hash of the block to check.\n @param expiry The expiry time for the block.\n @return isPredecessor `true` if the block is predecessor, `false` otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"blockIsPredecessor","nameLocation":"22302:18:171","parameters":{"id":87945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87942,"mutability":"mutable","name":"hash","nameLocation":"22329:4:171","nodeType":"VariableDeclaration","scope":88004,"src":"22321:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":87941,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22321:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":87944,"mutability":"mutable","name":"expiry","nameLocation":"22341:6:171","nodeType":"VariableDeclaration","scope":88004,"src":"22335:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":87943,"name":"uint8","nodeType":"ElementaryTypeName","src":"22335:5:171","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"22320:28:171"},"returnParameters":{"id":87948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87947,"mutability":"mutable","name":"isPredecessor","nameLocation":"22377:13:171","nodeType":"VariableDeclaration","scope":88004,"src":"22372:18:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87946,"name":"bool","nodeType":"ElementaryTypeName","src":"22372:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22371:20:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88017,"nodeType":"FunctionDefinition","src":"22970:222:171","nodes":[],"body":{"id":88016,"nodeType":"Block","src":"23079:113:171","nodes":[],"statements":[{"expression":{"arguments":[{"id":88012,"name":"COMPUTATION_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87369,"src":"23128:21:171","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":88013,"name":"WVARA_PER_SECOND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87381,"src":"23167:16:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":88011,"name":"ComputationSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87568,"src":"23096:19:171","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ComputationSettings_$87568_storage_ptr_$","typeString":"type(struct Gear.ComputationSettings storage pointer)"}},"id":88014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["23117:9:171","23151:14:171"],"names":["threshold","wvaraPerSecond"],"nodeType":"FunctionCall","src":"23096:89:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"functionReturnParameters":88010,"id":88015,"nodeType":"Return","src":"23089:96:171"}]},"documentation":{"id":88005,"nodeType":"StructuredDocumentation","src":"22831:134:171","text":" @dev Returns the default computation settings.\n @return computationSettings The default computation settings."},"implemented":true,"kind":"function","modifiers":[],"name":"defaultComputationSettings","nameLocation":"22979:26:171","parameters":{"id":88006,"nodeType":"ParameterList","parameters":[],"src":"23005:2:171"},"returnParameters":{"id":88010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88009,"mutability":"mutable","name":"computationSettings","nameLocation":"23058:19:171","nodeType":"VariableDeclaration","scope":88017,"src":"23031:46:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":88008,"nodeType":"UserDefinedTypeName","pathNode":{"id":88007,"name":"ComputationSettings","nameLocations":["23031:19:171"],"nodeType":"IdentifierPath","referencedDeclaration":87568,"src":"23031:19:171"},"referencedDeclaration":87568,"src":"23031:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"23030:48:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":88040,"nodeType":"FunctionDefinition","src":"23318:229:171","nodes":[],"body":{"id":88039,"nodeType":"Block","src":"23405:142:171","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":88027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23466:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":88026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23458:7:171","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":88025,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23458:7:171","typeDescriptions":{}}},"id":88028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23458:10:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":88031,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"23496:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":88032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23502:6:171","memberName":"number","nodeType":"MemberAccess","src":"23496:12:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":88029,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55635,"src":"23478:8:171","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$55635_$","typeString":"type(library SafeCast)"}},"id":88030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23487:8:171","memberName":"toUint32","nodeType":"MemberAccess","referencedDeclaration":54681,"src":"23478:17:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint32_$","typeString":"function (uint256) pure returns (uint32)"}},"id":88033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23478:31:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":88034,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"23522:4:171","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":88035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23527:9:171","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"23522:14:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":88036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23522:16:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":88024,"name":"GenesisBlockInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87576,"src":"23434:16:171","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_GenesisBlockInfo_$87576_storage_ptr_$","typeString":"type(struct Gear.GenesisBlockInfo storage pointer)"}},"id":88037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["23452:4:171","23470:6:171","23511:9:171"],"names":["hash","number","timestamp"],"nodeType":"FunctionCall","src":"23434:106:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"functionReturnParameters":88023,"id":88038,"nodeType":"Return","src":"23415:125:171"}]},"documentation":{"id":88018,"nodeType":"StructuredDocumentation","src":"23198:115:171","text":" @dev Creates new genesis block info.\n @return genesisBlockInfo The new genesis block info."},"implemented":true,"kind":"function","modifiers":[],"name":"newGenesis","nameLocation":"23327:10:171","parameters":{"id":88019,"nodeType":"ParameterList","parameters":[],"src":"23337:2:171"},"returnParameters":{"id":88023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88022,"mutability":"mutable","name":"genesisBlockInfo","nameLocation":"23387:16:171","nodeType":"VariableDeclaration","scope":88040,"src":"23363:40:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_memory_ptr","typeString":"struct Gear.GenesisBlockInfo"},"typeName":{"id":88021,"nodeType":"UserDefinedTypeName","pathNode":{"id":88020,"name":"GenesisBlockInfo","nameLocations":["23363:16:171"],"nodeType":"IdentifierPath","referencedDeclaration":87576,"src":"23363:16:171"},"referencedDeclaration":87576,"src":"23363:16:171","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage_ptr","typeString":"struct Gear.GenesisBlockInfo"}},"visibility":"internal"}],"src":"23362:42:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88290,"nodeType":"FunctionDefinition","src":"24038:3813:171","nodes":[],"body":{"id":88289,"nodeType":"Block","src":"24301:3550:171","nodes":[],"statements":[{"assignments":[88062],"declarations":[{"constant":false,"id":88062,"mutability":"mutable","name":"eraStarted","nameLocation":"24373:10:171","nodeType":"VariableDeclaration","scope":88289,"src":"24365:18:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88061,"name":"uint256","nodeType":"ElementaryTypeName","src":"24365:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88068,"initialValue":{"arguments":[{"id":88064,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"24399:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":88065,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24407:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":88066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24413:9:171","memberName":"timestamp","nodeType":"MemberAccess","src":"24407:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":88063,"name":"eraStartedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88523,"src":"24386:12:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":88067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24386:37:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"24365:58:171"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88069,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"24437:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":88070,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88062,"src":"24442:10:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24437:15:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":88072,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24456:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":88073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24462:9:171","memberName":"timestamp","nodeType":"MemberAccess","src":"24456:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88074,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88062,"src":"24474:10:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":88075,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"24487:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24494:9:171","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"24487:16:171","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":88077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24504:15:171","memberName":"validationDelay","nodeType":"MemberAccess","referencedDeclaration":87670,"src":"24487:32:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24474:45:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24456:63:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24437:82:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":88122,"nodeType":"Block","src":"24880:229:171","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88105,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"24902:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":88106,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"24908:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":88107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24914:9:171","memberName":"timestamp","nodeType":"MemberAccess","src":"24908:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24902:21:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88109,"name":"TimestampInFuture","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87390,"src":"24925:17:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24925:19:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88104,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24894:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24894:51:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88112,"nodeType":"ExpressionStatement","src":"24894:51:171"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88113,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"24964:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":88114,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88062,"src":"24969:10:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24964:15:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88121,"nodeType":"IfStatement","src":"24960:69:171","trueBody":{"id":88120,"nodeType":"Block","src":"24981:48:171","statements":[{"expression":{"id":88118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":88116,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"24999:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":88117,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88062,"src":"25004:10:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24999:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":88119,"nodeType":"ExpressionStatement","src":"24999:15:171"}]}}]},"id":88123,"nodeType":"IfStatement","src":"24433:676:171","trueBody":{"id":88103,"nodeType":"Block","src":"24521:353:171","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88082,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"24543:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"expression":{"id":88083,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"24549:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24556:12:171","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"24549:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":88085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24569:9:171","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"24549:29:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"24543:35:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88087,"name":"ValidationBeforeGenesis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87384,"src":"24580:23:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24580:25:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24535:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24535:71:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88090,"nodeType":"ExpressionStatement","src":"24535:71:171"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88092,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"24628:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":88093,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"24633:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24640:9:171","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"24633:16:171","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":88095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24650:3:171","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"24633:20:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24628:25:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":88097,"name":"eraStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88062,"src":"24657:10:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24628:39:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88099,"name":"TimestampOlderThanPreviousEra","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87387,"src":"24669:29:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24669:31:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88091,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24620:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24620:81:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88102,"nodeType":"ExpressionStatement","src":"24620:81:171"}]}},{"assignments":[88126],"declarations":[{"constant":false,"id":88126,"mutability":"mutable","name":"validators","nameLocation":"25190:10:171","nodeType":"VariableDeclaration","scope":88289,"src":"25171:29:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":88125,"nodeType":"UserDefinedTypeName","pathNode":{"id":88124,"name":"Validators","nameLocations":["25171:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"25171:10:171"},"referencedDeclaration":87429,"src":"25171:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":88131,"initialValue":{"arguments":[{"id":88128,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"25216:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":88129,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88056,"src":"25224:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":88127,"name":"validatorsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88362,"src":"25203:12:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (struct Gear.Validators storage pointer)"}},"id":88130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25203:24:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"25171:56:171"},{"assignments":[88133],"declarations":[{"constant":false,"id":88133,"mutability":"mutable","name":"_messageHash","nameLocation":"25245:12:171","nodeType":"VariableDeclaration","scope":88289,"src":"25237:20:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":88132,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25237:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":88141,"initialValue":{"arguments":[{"id":88139,"name":"_dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88048,"src":"25306:9:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":88136,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25268:4:171","typeDescriptions":{"typeIdentifier":"t_contract$_Gear_$88588","typeString":"library Gear"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Gear_$88588","typeString":"library Gear"}],"id":88135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25260:7:171","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":88134,"name":"address","nodeType":"ElementaryTypeName","src":"25260:7:171","typeDescriptions":{}}},"id":88137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25260:13:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":88138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25274:31:171","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":52224,"src":"25260:45:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes32) pure returns (bytes32)"}},"id":88140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25260:56:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"25237:79:171"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},"id":88145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88142,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88051,"src":"25331:14:171","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":88143,"name":"SignatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87729,"src":"25349:13:171","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SignatureType_$87729_$","typeString":"type(enum Gear.SignatureType)"}},"id":88144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25363:5:171","memberName":"FROST","nodeType":"MemberAccess","referencedDeclaration":87727,"src":"25349:19:171","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"src":"25331:37:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},"id":88198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88195,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88051,"src":"26527:14:171","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":88196,"name":"SignatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87729,"src":"26545:13:171","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SignatureType_$87729_$","typeString":"type(enum Gear.SignatureType)"}},"id":88197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26559:5:171","memberName":"ECDSA","nodeType":"MemberAccess","referencedDeclaration":87728,"src":"26545:19:171","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"src":"26527:37:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88285,"nodeType":"IfStatement","src":"26523:1299:171","trueBody":{"id":88284,"nodeType":"Block","src":"26566:1256:171","statements":[{"assignments":[88200],"declarations":[{"constant":false,"id":88200,"mutability":"mutable","name":"threshold","nameLocation":"26588:9:171","nodeType":"VariableDeclaration","scope":88284,"src":"26580:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88199,"name":"uint256","nodeType":"ElementaryTypeName","src":"26580:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88212,"initialValue":{"arguments":[{"expression":{"expression":{"id":88202,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88126,"src":"26637:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26648:4:171","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"26637:15:171","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":88204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26653:6:171","memberName":"length","nodeType":"MemberAccess","src":"26637:22:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":88205,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"26677:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26684:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"26677:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26703:18:171","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"26677:44:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":88208,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88044,"src":"26739:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26746:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"26739:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26765:20:171","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"26739:46:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":88201,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88475,"src":"26600:19:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint128_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint256,uint128,uint128) pure returns (uint256)"}},"id":88211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26600:199:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26580:219:171"},{"assignments":[88214],"declarations":[{"constant":false,"id":88214,"mutability":"mutable","name":"validSignatures","nameLocation":"26822:15:171","nodeType":"VariableDeclaration","scope":88284,"src":"26814:23:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88213,"name":"uint256","nodeType":"ElementaryTypeName","src":"26814:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88216,"initialValue":{"hexValue":"30","id":88215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26840:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26814:27:171"},{"body":{"id":88280,"nodeType":"Block","src":"26905:880:171","statements":[{"assignments":[88229],"declarations":[{"constant":false,"id":88229,"mutability":"mutable","name":"signature","nameLocation":"26938:9:171","nodeType":"VariableDeclaration","scope":88280,"src":"26923:24:171","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":88228,"name":"bytes","nodeType":"ElementaryTypeName","src":"26923:5:171","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":88233,"initialValue":{"baseExpression":{"id":88230,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88054,"src":"26950:11:171","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":88232,"indexExpression":{"id":88231,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88218,"src":"26962:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26950:14:171","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"26923:41:171"},{"assignments":[88235],"declarations":[{"constant":false,"id":88235,"mutability":"mutable","name":"validator","nameLocation":"26991:9:171","nodeType":"VariableDeclaration","scope":88280,"src":"26983:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88234,"name":"address","nodeType":"ElementaryTypeName","src":"26983:7:171","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":88240,"initialValue":{"arguments":[{"id":88238,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88229,"src":"27024:9:171","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":88236,"name":"_messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88133,"src":"27003:12:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":88237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27016:7:171","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":50794,"src":"27003:20:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":88239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27003:31:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"26983:51:171"},{"condition":{"baseExpression":{"expression":{"id":88241,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88126,"src":"27057:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27068:3:171","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"27057:14:171","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":88244,"indexExpression":{"id":88243,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88235,"src":"27072:9:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27057:25:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88279,"nodeType":"IfStatement","src":"27053:718:171","trueBody":{"id":88278,"nodeType":"Block","src":"27084:687:171","statements":[{"assignments":[88247],"declarations":[{"constant":false,"id":88247,"mutability":"mutable","name":"transientStorageValidatorsSlot","nameLocation":"27309:30:171","nodeType":"VariableDeclaration","scope":88278,"src":"27301:38:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":88246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27301:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev SECURITY:\n We use transient storage to prevent multiple signatures from the same validator.","id":88252,"initialValue":{"arguments":[{"id":88250,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88235,"src":"27379:9:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":88248,"name":"routerTransientStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88046,"src":"27342:22:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":88249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27365:13:171","memberName":"deriveMapping","nodeType":"MemberAccess","referencedDeclaration":48892,"src":"27342:36:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$returns$_t_bytes32_$attached_to$_t_bytes32_$","typeString":"function (bytes32,address) pure returns (bytes32)"}},"id":88251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27342:47:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27301:88:171"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":88253,"name":"transientStorageValidatorsSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88247,"src":"27416:30:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":88254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27447:9:171","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":50528,"src":"27416:40:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$50513_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":88255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27416:42:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$50513","typeString":"TransientSlot.BooleanSlot"}},"id":88256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27459:5:171","memberName":"tload","nodeType":"MemberAccess","referencedDeclaration":50612,"src":"27416:48:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_BooleanSlot_$50513_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_BooleanSlot_$50513_$","typeString":"function (TransientSlot.BooleanSlot) view returns (bool)"}},"id":88257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27416:50:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":88268,"nodeType":"Block","src":"27531:104:171","statements":[{"expression":{"arguments":[{"hexValue":"74727565","id":88265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27607:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":88260,"name":"transientStorageValidatorsSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88247,"src":"27557:30:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":88262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27588:9:171","memberName":"asBoolean","nodeType":"MemberAccess","referencedDeclaration":50528,"src":"27557:40:171","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_userDefinedValueType$_BooleanSlot_$50513_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (TransientSlot.BooleanSlot)"}},"id":88263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27557:42:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_BooleanSlot_$50513","typeString":"TransientSlot.BooleanSlot"}},"id":88264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27600:6:171","memberName":"tstore","nodeType":"MemberAccess","referencedDeclaration":50623,"src":"27557:49:171","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_userDefinedValueType$_BooleanSlot_$50513_$_t_bool_$returns$__$attached_to$_t_userDefinedValueType$_BooleanSlot_$50513_$","typeString":"function (TransientSlot.BooleanSlot,bool)"}},"id":88266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27557:55:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88267,"nodeType":"ExpressionStatement","src":"27557:55:171"}]},"id":88269,"nodeType":"IfStatement","src":"27412:223:171","trueBody":{"id":88259,"nodeType":"Block","src":"27468:57:171","statements":[{"id":88258,"nodeType":"Continue","src":"27494:8:171"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"27661:17:171","subExpression":{"id":88270,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88214,"src":"27663:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":88272,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88200,"src":"27682:9:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27661:30:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88277,"nodeType":"IfStatement","src":"27657:96:171","trueBody":{"id":88276,"nodeType":"Block","src":"27693:60:171","statements":[{"expression":{"hexValue":"74727565","id":88274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27726:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":88060,"id":88275,"nodeType":"Return","src":"27719:11:171"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88221,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88218,"src":"26876:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":88222,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88054,"src":"26880:11:171","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":88223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26892:6:171","memberName":"length","nodeType":"MemberAccess","src":"26880:18:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26876:22:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88281,"initializationExpression":{"assignments":[88218],"declarations":[{"constant":false,"id":88218,"mutability":"mutable","name":"i","nameLocation":"26869:1:171","nodeType":"VariableDeclaration","scope":88281,"src":"26861:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88217,"name":"uint256","nodeType":"ElementaryTypeName","src":"26861:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88220,"initialValue":{"hexValue":"30","id":88219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26873:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26861:13:171"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":88226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26900:3:171","subExpression":{"id":88225,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88218,"src":"26900:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":88227,"nodeType":"ExpressionStatement","src":"26900:3:171"},"nodeType":"ForStatement","src":"26856:929:171"},{"expression":{"hexValue":"66616c7365","id":88282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27806:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":88060,"id":88283,"nodeType":"Return","src":"27799:12:171"}]}},"id":88286,"nodeType":"IfStatement","src":"25327:2495:171","trueBody":{"id":88194,"nodeType":"Block","src":"25370:1147:171","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":88147,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88054,"src":"25392:11:171","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":88148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25404:6:171","memberName":"length","nodeType":"MemberAccess","src":"25392:18:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":88149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25414:1:171","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25392:23:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88151,"name":"InvalidFrostSignatureCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87393,"src":"25417:26:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25417:28:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88146,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25384:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25384:62:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88154,"nodeType":"ExpressionStatement","src":"25384:62:171"},{"assignments":[88156],"declarations":[{"constant":false,"id":88156,"mutability":"mutable","name":"_signature","nameLocation":"25474:10:171","nodeType":"VariableDeclaration","scope":88194,"src":"25461:23:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":88155,"name":"bytes","nodeType":"ElementaryTypeName","src":"25461:5:171","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":88160,"initialValue":{"baseExpression":{"id":88157,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88054,"src":"25487:11:171","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":88159,"indexExpression":{"hexValue":"30","id":88158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25499:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"25487:14:171","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"25461:40:171"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":88162,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88156,"src":"25523:10:171","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":88163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25534:6:171","memberName":"length","nodeType":"MemberAccess","src":"25523:17:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3936","id":88164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25544:2:171","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"25523:23:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88166,"name":"InvalidFrostSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87396,"src":"25548:27:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25548:29:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88161,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25515:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25515:63:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88169,"nodeType":"ExpressionStatement","src":"25515:63:171"},{"assignments":[88171],"declarations":[{"constant":false,"id":88171,"mutability":"mutable","name":"_signatureCommitmentX","nameLocation":"25601:21:171","nodeType":"VariableDeclaration","scope":88194,"src":"25593:29:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88170,"name":"uint256","nodeType":"ElementaryTypeName","src":"25593:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88172,"nodeType":"VariableDeclarationStatement","src":"25593:29:171"},{"assignments":[88174],"declarations":[{"constant":false,"id":88174,"mutability":"mutable","name":"_signatureCommitmentY","nameLocation":"25644:21:171","nodeType":"VariableDeclaration","scope":88194,"src":"25636:29:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88173,"name":"uint256","nodeType":"ElementaryTypeName","src":"25636:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88175,"nodeType":"VariableDeclarationStatement","src":"25636:29:171"},{"assignments":[88177],"declarations":[{"constant":false,"id":88177,"mutability":"mutable","name":"_signatureZ","nameLocation":"25687:11:171","nodeType":"VariableDeclaration","scope":88194,"src":"25679:19:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88176,"name":"uint256","nodeType":"ElementaryTypeName","src":"25679:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88178,"nodeType":"VariableDeclarationStatement","src":"25679:19:171"},{"AST":{"nativeSrc":"25738:215:171","nodeType":"YulBlock","src":"25738:215:171","statements":[{"nativeSrc":"25756:53:171","nodeType":"YulAssignment","src":"25756:53:171","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"25791:10:171","nodeType":"YulIdentifier","src":"25791:10:171"},{"kind":"number","nativeSrc":"25803:4:171","nodeType":"YulLiteral","src":"25803:4:171","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25787:3:171","nodeType":"YulIdentifier","src":"25787:3:171"},"nativeSrc":"25787:21:171","nodeType":"YulFunctionCall","src":"25787:21:171"}],"functionName":{"name":"mload","nativeSrc":"25781:5:171","nodeType":"YulIdentifier","src":"25781:5:171"},"nativeSrc":"25781:28:171","nodeType":"YulFunctionCall","src":"25781:28:171"},"variableNames":[{"name":"_signatureCommitmentX","nativeSrc":"25756:21:171","nodeType":"YulIdentifier","src":"25756:21:171"}]},{"nativeSrc":"25826:53:171","nodeType":"YulAssignment","src":"25826:53:171","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"25861:10:171","nodeType":"YulIdentifier","src":"25861:10:171"},{"kind":"number","nativeSrc":"25873:4:171","nodeType":"YulLiteral","src":"25873:4:171","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"25857:3:171","nodeType":"YulIdentifier","src":"25857:3:171"},"nativeSrc":"25857:21:171","nodeType":"YulFunctionCall","src":"25857:21:171"}],"functionName":{"name":"mload","nativeSrc":"25851:5:171","nodeType":"YulIdentifier","src":"25851:5:171"},"nativeSrc":"25851:28:171","nodeType":"YulFunctionCall","src":"25851:28:171"},"variableNames":[{"name":"_signatureCommitmentY","nativeSrc":"25826:21:171","nodeType":"YulIdentifier","src":"25826:21:171"}]},{"nativeSrc":"25896:43:171","nodeType":"YulAssignment","src":"25896:43:171","value":{"arguments":[{"arguments":[{"name":"_signature","nativeSrc":"25921:10:171","nodeType":"YulIdentifier","src":"25921:10:171"},{"kind":"number","nativeSrc":"25933:4:171","nodeType":"YulLiteral","src":"25933:4:171","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"25917:3:171","nodeType":"YulIdentifier","src":"25917:3:171"},"nativeSrc":"25917:21:171","nodeType":"YulFunctionCall","src":"25917:21:171"}],"functionName":{"name":"mload","nativeSrc":"25911:5:171","nodeType":"YulIdentifier","src":"25911:5:171"},"nativeSrc":"25911:28:171","nodeType":"YulFunctionCall","src":"25911:28:171"},"variableNames":[{"name":"_signatureZ","nativeSrc":"25896:11:171","nodeType":"YulIdentifier","src":"25896:11:171"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":88156,"isOffset":false,"isSlot":false,"src":"25791:10:171","valueSize":1},{"declaration":88156,"isOffset":false,"isSlot":false,"src":"25861:10:171","valueSize":1},{"declaration":88156,"isOffset":false,"isSlot":false,"src":"25921:10:171","valueSize":1},{"declaration":88171,"isOffset":false,"isSlot":false,"src":"25756:21:171","valueSize":1},{"declaration":88174,"isOffset":false,"isSlot":false,"src":"25826:21:171","valueSize":1},{"declaration":88177,"isOffset":false,"isSlot":false,"src":"25896:11:171","valueSize":1}],"flags":["memory-safe"],"id":88179,"nodeType":"InlineAssembly","src":"25713:240:171"},{"documentation":" @dev SECURITY: `FROST.isValidPublicKey(validators.aggregatedPublicKey.x, validators.aggregatedPublicKey.y)` is not called here,\n because it is already checked in `Router._resetValidators(...)`.","expression":{"arguments":[{"expression":{"expression":{"id":88182,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88126,"src":"26273:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26284:19:171","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"26273:30:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":88184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26304:1:171","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":87405,"src":"26273:32:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":88185,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88126,"src":"26323:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26334:19:171","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"26323:30:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":88187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26354:1:171","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":87407,"src":"26323:32:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":88188,"name":"_signatureCommitmentX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88171,"src":"26373:21:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":88189,"name":"_signatureCommitmentY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88174,"src":"26412:21:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":88190,"name":"_signatureZ","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88177,"src":"26451:11:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":88191,"name":"_messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88133,"src":"26480:12:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":88180,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"26234:5:171","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FROST_$40965_$","typeString":"type(library FROST)"}},"id":88181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26240:15:171","memberName":"verifySignature","nodeType":"MemberAccess","referencedDeclaration":40964,"src":"26234:21:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$_t_bool_$","typeString":"function (uint256,uint256,uint256,uint256,uint256,bytes32) view returns (bool)"}},"id":88192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26234:272:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":88060,"id":88193,"nodeType":"Return","src":"26227:279:171"}]}},{"expression":{"hexValue":"66616c7365","id":88287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27839:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":88060,"id":88288,"nodeType":"Return","src":"27832:12:171"}]},"documentation":{"id":88041,"nodeType":"StructuredDocumentation","src":"23553:480:171","text":" @dev Validates signatures of the given data hash at the given timestamp.\n @param router The router storage.\n @param routerTransientStorage The router transient storage slot for this validation.\n @param _dataHash The hash of the data to validate signatures for.\n @param _signatureType The type of signatures to validate.\n @param _signatures The signatures to validate.\n @param ts The timestamp at which to validate signatures."},"implemented":true,"kind":"function","modifiers":[],"name":"validateSignaturesAt","nameLocation":"24047:20:171","parameters":{"id":88057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88044,"mutability":"mutable","name":"router","nameLocation":"24101:6:171","nodeType":"VariableDeclaration","scope":88290,"src":"24077:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88043,"nodeType":"UserDefinedTypeName","pathNode":{"id":88042,"name":"IRouter.Storage","nameLocations":["24077:7:171","24085:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"24077:15:171"},"referencedDeclaration":74490,"src":"24077:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":88046,"mutability":"mutable","name":"routerTransientStorage","nameLocation":"24125:22:171","nodeType":"VariableDeclaration","scope":88290,"src":"24117:30:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":88045,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24117:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":88048,"mutability":"mutable","name":"_dataHash","nameLocation":"24165:9:171","nodeType":"VariableDeclaration","scope":88290,"src":"24157:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":88047,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24157:7:171","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":88051,"mutability":"mutable","name":"_signatureType","nameLocation":"24198:14:171","nodeType":"VariableDeclaration","scope":88290,"src":"24184:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},"typeName":{"id":88050,"nodeType":"UserDefinedTypeName","pathNode":{"id":88049,"name":"SignatureType","nameLocations":["24184:13:171"],"nodeType":"IdentifierPath","referencedDeclaration":87729,"src":"24184:13:171"},"referencedDeclaration":87729,"src":"24184:13:171","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"visibility":"internal"},{"constant":false,"id":88054,"mutability":"mutable","name":"_signatures","nameLocation":"24239:11:171","nodeType":"VariableDeclaration","scope":88290,"src":"24222:28:171","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":88052,"name":"bytes","nodeType":"ElementaryTypeName","src":"24222:5:171","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":88053,"nodeType":"ArrayTypeName","src":"24222:7:171","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":88056,"mutability":"mutable","name":"ts","nameLocation":"24268:2:171","nodeType":"VariableDeclaration","scope":88290,"src":"24260:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88055,"name":"uint256","nodeType":"ElementaryTypeName","src":"24260:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24067:209:171"},"returnParameters":{"id":88060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":88290,"src":"24295:4:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88058,"name":"bool","nodeType":"ElementaryTypeName","src":"24295:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"24294:6:171"},"scope":88588,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":88307,"nodeType":"FunctionDefinition","src":"27970:166:171","nodes":[],"body":{"id":88306,"nodeType":"Block","src":"28075:61:171","nodes":[],"statements":[{"expression":{"arguments":[{"id":88301,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88294,"src":"28105:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":88302,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"28113:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":88303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28119:9:171","memberName":"timestamp","nodeType":"MemberAccess","src":"28113:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":88300,"name":"validatorsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88362,"src":"28092:12:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (struct Gear.Validators storage pointer)"}},"id":88304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28092:37:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"functionReturnParameters":88299,"id":88305,"nodeType":"Return","src":"28085:44:171"}]},"documentation":{"id":88291,"nodeType":"StructuredDocumentation","src":"27857:108:171","text":" @dev Returns the validators for the current era.\n @param router The router storage."},"implemented":true,"kind":"function","modifiers":[],"name":"currentEraValidators","nameLocation":"27979:20:171","parameters":{"id":88295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88294,"mutability":"mutable","name":"router","nameLocation":"28024:6:171","nodeType":"VariableDeclaration","scope":88307,"src":"28000:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88293,"nodeType":"UserDefinedTypeName","pathNode":{"id":88292,"name":"IRouter.Storage","nameLocations":["28000:7:171","28008:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"28000:15:171"},"referencedDeclaration":74490,"src":"28000:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"27999:32:171"},"returnParameters":{"id":88299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":88307,"src":"28055:18:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":88297,"nodeType":"UserDefinedTypeName","pathNode":{"id":88296,"name":"Validators","nameLocations":["28055:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"28055:10:171"},"referencedDeclaration":87429,"src":"28055:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28054:20:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88334,"nodeType":"FunctionDefinition","src":"28342:322:171","nodes":[],"body":{"id":88333,"nodeType":"Block","src":"28448:216:171","nodes":[],"statements":[{"condition":{"arguments":[{"id":88318,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88311,"src":"28488:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":88319,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"28496:5:171","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":88320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28502:9:171","memberName":"timestamp","nodeType":"MemberAccess","src":"28496:15:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":88317,"name":"validatorsStoredInSlot1At","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88429,"src":"28462:25:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (bool)"}},"id":88321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28462:50:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":88331,"nodeType":"Block","src":"28589:69:171","statements":[{"expression":{"expression":{"expression":{"id":88327,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88311,"src":"28610:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28617:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"28610:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28636:11:171","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":87682,"src":"28610:37:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":88316,"id":88330,"nodeType":"Return","src":"28603:44:171"}]},"id":88332,"nodeType":"IfStatement","src":"28458:200:171","trueBody":{"id":88326,"nodeType":"Block","src":"28514:69:171","statements":[{"expression":{"expression":{"expression":{"id":88322,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88311,"src":"28535:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88323,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28542:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"28535:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28561:11:171","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":87679,"src":"28535:37:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":88316,"id":88325,"nodeType":"Return","src":"28528:44:171"}]}}]},"documentation":{"id":88308,"nodeType":"StructuredDocumentation","src":"28142:195:171","text":" @dev Returns previous era validators, if there is no previous era,\n then returns free validators slot, which must be zeroed.\n @param router The router storage."},"implemented":true,"kind":"function","modifiers":[],"name":"previousEraValidators","nameLocation":"28351:21:171","parameters":{"id":88312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88311,"mutability":"mutable","name":"router","nameLocation":"28397:6:171","nodeType":"VariableDeclaration","scope":88334,"src":"28373:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88310,"nodeType":"UserDefinedTypeName","pathNode":{"id":88309,"name":"IRouter.Storage","nameLocations":["28373:7:171","28381:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"28373:15:171"},"referencedDeclaration":74490,"src":"28373:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"28372:32:171"},"returnParameters":{"id":88316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":88334,"src":"28428:18:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":88314,"nodeType":"UserDefinedTypeName","pathNode":{"id":88313,"name":"Validators","nameLocations":["28428:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"28428:10:171"},"referencedDeclaration":87429,"src":"28428:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28427:20:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88362,"nodeType":"FunctionDefinition","src":"28801:312:171","nodes":[],"body":{"id":88361,"nodeType":"Block","src":"28910:203:171","nodes":[],"statements":[{"condition":{"arguments":[{"id":88347,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88338,"src":"28950:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":88348,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88340,"src":"28958:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":88346,"name":"validatorsStoredInSlot1At","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88429,"src":"28924:25:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (bool)"}},"id":88349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28924:37:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":88359,"nodeType":"Block","src":"29038:69:171","statements":[{"expression":{"expression":{"expression":{"id":88355,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88338,"src":"29059:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29066:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"29059:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29085:11:171","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":87679,"src":"29059:37:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":88345,"id":88358,"nodeType":"Return","src":"29052:44:171"}]},"id":88360,"nodeType":"IfStatement","src":"28920:187:171","trueBody":{"id":88354,"nodeType":"Block","src":"28963:69:171","statements":[{"expression":{"expression":{"expression":{"id":88350,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88338,"src":"28984:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28991:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"28984:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29010:11:171","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":87682,"src":"28984:37:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},"functionReturnParameters":88345,"id":88353,"nodeType":"Return","src":"28977:44:171"}]}}]},"documentation":{"id":88335,"nodeType":"StructuredDocumentation","src":"28670:126:171","text":" @dev Returns validators at the given timestamp.\n @param ts Timestamp for which to get the validators."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsAt","nameLocation":"28810:12:171","parameters":{"id":88341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88338,"mutability":"mutable","name":"router","nameLocation":"28847:6:171","nodeType":"VariableDeclaration","scope":88362,"src":"28823:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88337,"nodeType":"UserDefinedTypeName","pathNode":{"id":88336,"name":"IRouter.Storage","nameLocations":["28823:7:171","28831:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"28823:15:171"},"referencedDeclaration":74490,"src":"28823:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":88340,"mutability":"mutable","name":"ts","nameLocation":"28863:2:171","nodeType":"VariableDeclaration","scope":88362,"src":"28855:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88339,"name":"uint256","nodeType":"ElementaryTypeName","src":"28855:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28822:44:171"},"returnParameters":{"id":88345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":88362,"src":"28890:18:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":88343,"nodeType":"UserDefinedTypeName","pathNode":{"id":88342,"name":"Validators","nameLocations":["28890:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"28890:10:171"},"referencedDeclaration":87429,"src":"28890:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"28889:20:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88429,"nodeType":"FunctionDefinition","src":"29520:863:171","nodes":[],"body":{"id":88428,"nodeType":"Block","src":"29664:719:171","nodes":[],"statements":[{"assignments":[88374],"declarations":[{"constant":false,"id":88374,"mutability":"mutable","name":"ts0","nameLocation":"29682:3:171","nodeType":"VariableDeclaration","scope":88428,"src":"29674:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88373,"name":"uint256","nodeType":"ElementaryTypeName","src":"29674:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88379,"initialValue":{"expression":{"expression":{"expression":{"id":88375,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88366,"src":"29688:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88376,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29695:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"29688:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29714:11:171","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":87679,"src":"29688:37:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},"id":88378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29726:16:171","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"29688:54:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29674:68:171"},{"assignments":[88381],"declarations":[{"constant":false,"id":88381,"mutability":"mutable","name":"ts1","nameLocation":"29760:3:171","nodeType":"VariableDeclaration","scope":88428,"src":"29752:11:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88380,"name":"uint256","nodeType":"ElementaryTypeName","src":"29752:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88386,"initialValue":{"expression":{"expression":{"expression":{"id":88382,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88366,"src":"29766:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29773:18:171","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"29766:25:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":88384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29792:11:171","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":87682,"src":"29766:37:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},"id":88385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"29804:16:171","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"29766:54:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29752:68:171"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88388,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88374,"src":"29894:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":88389,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88381,"src":"29901:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29894:10:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88391,"name":"ErasTimestampMustNotBeEqual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87399,"src":"29906:27:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29906:29:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88387,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"29886:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29886:50:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88394,"nodeType":"ExpressionStatement","src":"29886:50:171"},{"assignments":[88396],"declarations":[{"constant":false,"id":88396,"mutability":"mutable","name":"ts1Greater","nameLocation":"29952:10:171","nodeType":"VariableDeclaration","scope":88428,"src":"29947:15:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88395,"name":"bool","nodeType":"ElementaryTypeName","src":"29947:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":88400,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88397,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88374,"src":"29965:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":88398,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88381,"src":"29971:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29965:9:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"29947:27:171"},{"assignments":[88402],"declarations":[{"constant":false,"id":88402,"mutability":"mutable","name":"tsGe0","nameLocation":"29989:5:171","nodeType":"VariableDeclaration","scope":88428,"src":"29984:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88401,"name":"bool","nodeType":"ElementaryTypeName","src":"29984:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":88406,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88403,"name":"ts0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88374,"src":"29997:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":88404,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88368,"src":"30004:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29997:9:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"29984:22:171"},{"assignments":[88408],"declarations":[{"constant":false,"id":88408,"mutability":"mutable","name":"tsGe1","nameLocation":"30021:5:171","nodeType":"VariableDeclaration","scope":88428,"src":"30016:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88407,"name":"bool","nodeType":"ElementaryTypeName","src":"30016:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":88412,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88409,"name":"ts1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88381,"src":"30029:3:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":88410,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88368,"src":"30036:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30029:9:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"30016:22:171"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88414,"name":"tsGe0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88402,"src":"30130:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":88415,"name":"tsGe1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88408,"src":"30139:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30130:14:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":88417,"name":"ValidatorsNotFoundForTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87402,"src":"30146:30:171","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":88418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30146:32:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":88413,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"30122:7:171","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":88419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30122:57:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":88420,"nodeType":"ExpressionStatement","src":"30122:57:171"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88421,"name":"ts1Greater","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88396,"src":"30346:10:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88422,"name":"tsGe0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88402,"src":"30361:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":88423,"name":"tsGe1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88408,"src":"30370:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30361:14:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":88425,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30360:16:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30346:30:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":88372,"id":88427,"nodeType":"Return","src":"30339:37:171"}]},"documentation":{"id":88363,"nodeType":"StructuredDocumentation","src":"29119:396:171","text":" @dev Returns `true` if validators at `ts` are stored in `router.validationSettings.validators1`.\n `false` means that current era validators are stored in `router.validationSettings.validators0`.\n @param ts Timestamp for which to check the validators slot.\n @return isSlot1 Whether validators at `ts` are stored in `router.validationSettings.validators1`."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsStoredInSlot1At","nameLocation":"29529:25:171","parameters":{"id":88369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88366,"mutability":"mutable","name":"router","nameLocation":"29579:6:171","nodeType":"VariableDeclaration","scope":88429,"src":"29555:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88365,"nodeType":"UserDefinedTypeName","pathNode":{"id":88364,"name":"IRouter.Storage","nameLocations":["29555:7:171","29563:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"29555:15:171"},"referencedDeclaration":74490,"src":"29555:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":88368,"mutability":"mutable","name":"ts","nameLocation":"29595:2:171","nodeType":"VariableDeclaration","scope":88429,"src":"29587:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88367,"name":"uint256","nodeType":"ElementaryTypeName","src":"29587:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29554:44:171"},"returnParameters":{"id":88372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88371,"mutability":"mutable","name":"isSlot1","nameLocation":"29651:7:171","nodeType":"VariableDeclaration","scope":88429,"src":"29646:12:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":88370,"name":"bool","nodeType":"ElementaryTypeName","src":"29646:4:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29645:14:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88475,"nodeType":"FunctionDefinition","src":"30885:456:171","nodes":[],"body":{"id":88474,"nodeType":"Block","src":"31068:273:171","nodes":[],"statements":[{"assignments":[88442],"declarations":[{"constant":false,"id":88442,"mutability":"mutable","name":"a","nameLocation":"31086:1:171","nodeType":"VariableDeclaration","scope":88474,"src":"31078:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88441,"name":"uint256","nodeType":"ElementaryTypeName","src":"31078:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88443,"nodeType":"VariableDeclarationStatement","src":"31078:9:171"},{"id":88450,"nodeType":"UncheckedBlock","src":"31097:76:171","statements":[{"expression":{"id":88448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":88444,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88442,"src":"31121:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88445,"name":"validatorsAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88432,"src":"31125:16:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":88446,"name":"thresholdNumerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88434,"src":"31144:18:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31125:37:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31121:41:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":88449,"nodeType":"ExpressionStatement","src":"31121:41:171"}]},{"assignments":[88452],"declarations":[{"constant":false,"id":88452,"mutability":"mutable","name":"d","nameLocation":"31190:1:171","nodeType":"VariableDeclaration","scope":88474,"src":"31182:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88451,"name":"uint256","nodeType":"ElementaryTypeName","src":"31182:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88456,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88453,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88442,"src":"31194:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":88454,"name":"thresholdDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88436,"src":"31198:20:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31194:24:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31182:36:171"},{"assignments":[88458],"declarations":[{"constant":false,"id":88458,"mutability":"mutable","name":"r","nameLocation":"31236:1:171","nodeType":"VariableDeclaration","scope":88474,"src":"31228:9:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88457,"name":"uint256","nodeType":"ElementaryTypeName","src":"31228:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":88462,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88459,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88442,"src":"31240:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":88460,"name":"thresholdDenominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88436,"src":"31244:20:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"31240:24:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31228:36:171"},{"id":88473,"nodeType":"UncheckedBlock","src":"31274:61:171","statements":[{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88463,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88458,"src":"31306:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":88464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31310:1:171","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"31306:5:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":88466,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31305:7:171","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":88470,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88452,"src":"31323:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":88471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31305:19:171","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88467,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88452,"src":"31315:1:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":88468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:171","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"31315:5:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":88440,"id":88472,"nodeType":"Return","src":"31298:26:171"}]}]},"documentation":{"id":88430,"nodeType":"StructuredDocumentation","src":"30389:491:171","text":" @dev Calculates the threshold number of valid signatures required.\n The formula is:\n - `(validatorsAmount * thresholdNumerator).div_ceil(thresholdDenominator)`\n @param validatorsAmount The total number of validators.\n @param thresholdNumerator The numerator of the threshold fraction.\n @param thresholdDenominator The denominator of the threshold fraction.\n @return threshold The threshold number of valid signatures required."},"implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"30894:19:171","parameters":{"id":88437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88432,"mutability":"mutable","name":"validatorsAmount","nameLocation":"30922:16:171","nodeType":"VariableDeclaration","scope":88475,"src":"30914:24:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88431,"name":"uint256","nodeType":"ElementaryTypeName","src":"30914:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":88434,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"30948:18:171","nodeType":"VariableDeclaration","scope":88475,"src":"30940:26:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":88433,"name":"uint128","nodeType":"ElementaryTypeName","src":"30940:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":88436,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"30976:20:171","nodeType":"VariableDeclaration","scope":88475,"src":"30968:28:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":88435,"name":"uint128","nodeType":"ElementaryTypeName","src":"30968:7:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"30913:84:171"},"returnParameters":{"id":88440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88439,"mutability":"mutable","name":"threshold","nameLocation":"31053:9:171","nodeType":"VariableDeclaration","scope":88475,"src":"31045:17:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88438,"name":"uint256","nodeType":"ElementaryTypeName","src":"31045:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31044:19:171"},"scope":88588,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":88498,"nodeType":"FunctionDefinition","src":"31526:179:171","nodes":[],"body":{"id":88497,"nodeType":"Block","src":"31622:83:171","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":88486,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88481,"src":"31640:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":88487,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88479,"src":"31645:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88488,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31652:12:171","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"31645:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":88489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31665:9:171","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"31645:29:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"31640:34:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":88491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31639:36:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":88492,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88479,"src":"31678:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31685:9:171","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"31678:16:171","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":88494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31695:3:171","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"31678:20:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31639:59:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":88485,"id":88496,"nodeType":"Return","src":"31632:66:171"}]},"documentation":{"id":88476,"nodeType":"StructuredDocumentation","src":"31347:174:171","text":" @dev Returns the era index for the given timestamp.\n @param router The router storage.\n @param ts The timestamp for which to get the era index."},"implemented":true,"kind":"function","modifiers":[],"name":"eraIndexAt","nameLocation":"31535:10:171","parameters":{"id":88482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88479,"mutability":"mutable","name":"router","nameLocation":"31570:6:171","nodeType":"VariableDeclaration","scope":88498,"src":"31546:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88478,"nodeType":"UserDefinedTypeName","pathNode":{"id":88477,"name":"IRouter.Storage","nameLocations":["31546:7:171","31554:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31546:15:171"},"referencedDeclaration":74490,"src":"31546:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":88481,"mutability":"mutable","name":"ts","nameLocation":"31586:2:171","nodeType":"VariableDeclaration","scope":88498,"src":"31578:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88480,"name":"uint256","nodeType":"ElementaryTypeName","src":"31578:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31545:44:171"},"returnParameters":{"id":88485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":88498,"src":"31613:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88483,"name":"uint256","nodeType":"ElementaryTypeName","src":"31613:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31612:9:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88523,"nodeType":"FunctionDefinition","src":"31921:199:171","nodes":[],"body":{"id":88522,"nodeType":"Block","src":"32019:101:171","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":88509,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88502,"src":"32036:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88510,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32043:12:171","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"32036:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":88511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32056:9:171","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"32036:29:171","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":88519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":88513,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88502,"src":"32079:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":88514,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88504,"src":"32087:2:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":88512,"name":"eraIndexAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88498,"src":"32068:10:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":88515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32068:22:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"expression":{"id":88516,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88502,"src":"32093:6:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":88517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32100:9:171","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"32093:16:171","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":88518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32110:3:171","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"32093:20:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32068:45:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32036:77:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":88508,"id":88521,"nodeType":"Return","src":"32029:84:171"}]},"documentation":{"id":88499,"nodeType":"StructuredDocumentation","src":"31711:205:171","text":" @dev Returns the timestamp when the era started for the given timestamp.\n @param router The router storage.\n @param ts The timestamp for which to get the era start timestamp."},"implemented":true,"kind":"function","modifiers":[],"name":"eraStartedAt","nameLocation":"31930:12:171","parameters":{"id":88505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88502,"mutability":"mutable","name":"router","nameLocation":"31967:6:171","nodeType":"VariableDeclaration","scope":88523,"src":"31943:30:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":88501,"nodeType":"UserDefinedTypeName","pathNode":{"id":88500,"name":"IRouter.Storage","nameLocations":["31943:7:171","31951:7:171"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31943:15:171"},"referencedDeclaration":74490,"src":"31943:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":88504,"mutability":"mutable","name":"ts","nameLocation":"31983:2:171","nodeType":"VariableDeclaration","scope":88523,"src":"31975:10:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88503,"name":"uint256","nodeType":"ElementaryTypeName","src":"31975:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31942:44:171"},"returnParameters":{"id":88508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":88523,"src":"32010:7:171","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88506,"name":"uint256","nodeType":"ElementaryTypeName","src":"32010:7:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32009:9:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88546,"nodeType":"FunctionDefinition","src":"32460:467:171","nodes":[],"body":{"id":88545,"nodeType":"Block","src":"32606:321:171","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":88535,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88527,"src":"32678:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32689:19:171","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"32678:30:171","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},{"expression":{"id":88537,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88527,"src":"32764:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32775:40:171","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":87416,"src":"32764:51:171","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":88539,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88527,"src":"32835:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32846:4:171","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"32835:15:171","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},{"expression":{"id":88541,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88527,"src":"32882:10:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":88542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"32893:16:171","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"32882:27:171","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":88533,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"32623:4:171","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":88534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32628:14:171","memberName":"ValidatorsView","nodeType":"MemberAccess","referencedDeclaration":87441,"src":"32623:19:171","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ValidatorsView_$87441_storage_ptr_$","typeString":"type(struct Gear.ValidatorsView storage pointer)"}},"id":88543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["32657:19:171","32722:40:171","32829:4:171","32864:16:171"],"names":["aggregatedPublicKey","verifiableSecretSharingCommitmentPointer","list","useFromTimestamp"],"nodeType":"FunctionCall","src":"32623:297:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"functionReturnParameters":88532,"id":88544,"nodeType":"Return","src":"32616:304:171"}]},"documentation":{"id":88524,"nodeType":"StructuredDocumentation","src":"32126:329:171","text":" @dev Converts `Gear.Validators` storage to `Gear.ValidatorsView` struct.\n Note that `validators.map` is passed as `validators.list`.\n @param validators The `Gear.Validators` storage to convert.\n @return validatorsView `Gear.ValidatorsView` struct with the same data as the input storage."},"implemented":true,"kind":"function","modifiers":[],"name":"toView","nameLocation":"32469:6:171","parameters":{"id":88528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88527,"mutability":"mutable","name":"validators","nameLocation":"32500:10:171","nodeType":"VariableDeclaration","scope":88546,"src":"32476:34:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":88526,"nodeType":"UserDefinedTypeName","pathNode":{"id":88525,"name":"Gear.Validators","nameLocations":["32476:4:171","32481:10:171"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"32476:15:171"},"referencedDeclaration":87429,"src":"32476:15:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"src":"32475:36:171"},"returnParameters":{"id":88532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88531,"mutability":"mutable","name":"validatorsView","nameLocation":"32586:14:171","nodeType":"VariableDeclaration","scope":88546,"src":"32559:41:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":88530,"nodeType":"UserDefinedTypeName","pathNode":{"id":88529,"name":"Gear.ValidatorsView","nameLocations":["32559:4:171","32564:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":87441,"src":"32559:19:171"},"referencedDeclaration":87441,"src":"32559:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"src":"32558:43:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":88587,"nodeType":"FunctionDefinition","src":"33224:581:171","nodes":[],"body":{"id":88586,"nodeType":"Block","src":"33382:423:171","nodes":[],"statements":[{"assignments":[88560],"declarations":[{"constant":false,"id":88560,"mutability":"mutable","name":"validators0","nameLocation":"33419:11:171","nodeType":"VariableDeclaration","scope":88586,"src":"33392:38:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":88559,"nodeType":"UserDefinedTypeName","pathNode":{"id":88558,"name":"Gear.ValidatorsView","nameLocations":["33392:4:171","33397:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":87441,"src":"33392:19:171"},"referencedDeclaration":87441,"src":"33392:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"id":88565,"initialValue":{"arguments":[{"expression":{"id":88562,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88550,"src":"33440:8:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":88563,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33449:11:171","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":87679,"src":"33440:20:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}],"id":88561,"name":"toView","nodeType":"Identifier","overloadedDeclarations":[88546,88587],"referencedDeclaration":88546,"src":"33433:6:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Validators_$87429_storage_ptr_$returns$_t_struct$_ValidatorsView_$87441_memory_ptr_$","typeString":"function (struct Gear.Validators storage pointer) view returns (struct Gear.ValidatorsView memory)"}},"id":88564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33433:28:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"nodeType":"VariableDeclarationStatement","src":"33392:69:171"},{"assignments":[88570],"declarations":[{"constant":false,"id":88570,"mutability":"mutable","name":"validators1","nameLocation":"33498:11:171","nodeType":"VariableDeclaration","scope":88586,"src":"33471:38:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView"},"typeName":{"id":88569,"nodeType":"UserDefinedTypeName","pathNode":{"id":88568,"name":"Gear.ValidatorsView","nameLocations":["33471:4:171","33476:14:171"],"nodeType":"IdentifierPath","referencedDeclaration":87441,"src":"33471:19:171"},"referencedDeclaration":87441,"src":"33471:19:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_storage_ptr","typeString":"struct Gear.ValidatorsView"}},"visibility":"internal"}],"id":88575,"initialValue":{"arguments":[{"expression":{"id":88572,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88550,"src":"33519:8:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":88573,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33528:11:171","memberName":"validators1","nodeType":"MemberAccess","referencedDeclaration":87682,"src":"33519:20:171","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}],"id":88571,"name":"toView","nodeType":"Identifier","overloadedDeclarations":[88546,88587],"referencedDeclaration":88546,"src":"33512:6:171","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Validators_$87429_storage_ptr_$returns$_t_struct$_ValidatorsView_$87441_memory_ptr_$","typeString":"function (struct Gear.Validators storage pointer) view returns (struct Gear.ValidatorsView memory)"}},"id":88574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33512:28:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},"nodeType":"VariableDeclarationStatement","src":"33471:69:171"},{"expression":{"arguments":[{"expression":{"id":88578,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88550,"src":"33619:8:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":88579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33628:18:171","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"33619:27:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":88580,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88550,"src":"33682:8:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage_ptr","typeString":"struct Gear.ValidationSettings storage pointer"}},"id":88581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"33691:20:171","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"33682:29:171","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":88582,"name":"validators0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88560,"src":"33738:11:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}},{"id":88583,"name":"validators1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88570,"src":"33776:11:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"},{"typeIdentifier":"t_struct$_ValidatorsView_$87441_memory_ptr","typeString":"struct Gear.ValidatorsView memory"}],"expression":{"id":88576,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"33557:4:171","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":88577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33562:22:171","memberName":"ValidationSettingsView","nodeType":"MemberAccess","referencedDeclaration":87695,"src":"33557:27:171","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ValidationSettingsView_$87695_storage_ptr_$","typeString":"type(struct Gear.ValidationSettingsView storage pointer)"}},"id":88584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["33599:18:171","33660:20:171","33725:11:171","33763:11:171"],"names":["thresholdNumerator","thresholdDenominator","validators0","validators1"],"nodeType":"FunctionCall","src":"33557:241:171","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},"functionReturnParameters":88555,"id":88585,"nodeType":"Return","src":"33550:248:171"}]},"documentation":{"id":88547,"nodeType":"StructuredDocumentation","src":"32933:286:171","text":" @dev Converts `Gear.ValidationSettings` storage to `Gear.ValidationSettingsView` struct.\n @param settings The `Gear.ValidationSettings` storage to convert.\n @return settingsView `Gear.ValidationSettingsView` struct with the same data as the input storage."},"implemented":true,"kind":"function","modifiers":[],"name":"toView","nameLocation":"33233:6:171","parameters":{"id":88551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88550,"mutability":"mutable","name":"settings","nameLocation":"33272:8:171","nodeType":"VariableDeclaration","scope":88587,"src":"33240:40:171","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage_ptr","typeString":"struct Gear.ValidationSettings"},"typeName":{"id":88549,"nodeType":"UserDefinedTypeName","pathNode":{"id":88548,"name":"Gear.ValidationSettings","nameLocations":["33240:4:171","33245:18:171"],"nodeType":"IdentifierPath","referencedDeclaration":87683,"src":"33240:23:171"},"referencedDeclaration":87683,"src":"33240:23:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage_ptr","typeString":"struct Gear.ValidationSettings"}},"visibility":"internal"}],"src":"33239:42:171"},"returnParameters":{"id":88555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88554,"mutability":"mutable","name":"settingsView","nameLocation":"33364:12:171","nodeType":"VariableDeclaration","scope":88587,"src":"33329:47:171","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView"},"typeName":{"id":88553,"nodeType":"UserDefinedTypeName","pathNode":{"id":88552,"name":"Gear.ValidationSettingsView","nameLocations":["33329:4:171","33334:22:171"],"nodeType":"IdentifierPath","referencedDeclaration":87695,"src":"33329:27:171"},"referencedDeclaration":87695,"src":"33329:27:171","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_storage_ptr","typeString":"struct Gear.ValidationSettingsView"}},"visibility":"internal"}],"src":"33328:49:171"},"scope":88588,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Gear","contractDependencies":[],"contractKind":"library","documentation":{"id":87355,"nodeType":"StructuredDocumentation","src":"744:770:171","text":" @dev Library for core protocol utility functions for hashing, validation, and consensus-related logic.\n It provides:\n - Canonical hashing functions for protocol entities (messages, value claims, batch/code commitments, state transitions)\n - Validator set management with era-based switching and threshold configuration\n - Signature verification support for FROST aggregated signatures and ECDSA threshold signatures\n with transient storage to prevent double counting of signatures\n - Era and timeline utilities for selecting correct validator sets based on timestamp\n The library acts as a shared foundation for consensus, validation, and commitment verification\n across all protocol components."},"fullyImplemented":true,"linearizedBaseContracts":[88588],"name":"Gear","nameLocation":"1523:4:171","scope":88589,"usedErrors":[87384,87387,87390,87393,87396,87399,87402],"usedEvents":[]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":171} \ No newline at end of file diff --git a/ethexe/ethereum/abi/Middleware.json b/ethexe/ethereum/abi/Middleware.json index 03fdf7e8094..3bd100da83b 100644 --- a/ethexe/ethereum/abi/Middleware.json +++ b/ethexe/ethereum/abi/Middleware.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowedVaultImplVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"changeSlashExecutor","inputs":[{"name":"newRole","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeSlashRequester","inputs":[{"name":"newRole","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"disableOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disableVault","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"distributeOperatorRewards","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"distributeStakerRewards","inputs":[{"name":"_commitment","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"enableOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableVault","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eraDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashes","type":"tuple[]","internalType":"struct IMiddleware.SlashIdentifier[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActiveOperatorsStakeAt","inputs":[{"name":"ts","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"activeOperators","type":"address[]","internalType":"address[]"},{"name":"stakes","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeAt","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_params","type":"tuple","internalType":"struct IMiddleware.InitParams","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"eraDuration","type":"uint48","internalType":"uint48"},{"name":"minVaultEpochDuration","type":"uint48","internalType":"uint48"},{"name":"operatorGracePeriod","type":"uint48","internalType":"uint48"},{"name":"vaultGracePeriod","type":"uint48","internalType":"uint48"},{"name":"minVetoDuration","type":"uint48","internalType":"uint48"},{"name":"minSlashExecutionDelay","type":"uint48","internalType":"uint48"},{"name":"allowedVaultImplVersion","type":"uint64","internalType":"uint64"},{"name":"vetoSlasherImplType","type":"uint64","internalType":"uint64"},{"name":"maxResolverSetEpochsDelay","type":"uint256","internalType":"uint256"},{"name":"maxAdminFee","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"address","internalType":"address"},{"name":"router","type":"address","internalType":"address"},{"name":"symbiotic","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makeElectionAt","inputs":[{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"maxValidators","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"maxAdminFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxResolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minSlashExecutionDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"minVaultEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"minVetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"operatorGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerVault","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_rewards","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestSlash","inputs":[{"name":"data","type":"tuple[]","internalType":"struct IMiddleware.SlashData[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"vaults","type":"tuple[]","internalType":"struct IMiddleware.VaultSlashData[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"subnetwork","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"symbioticContracts","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterVault","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaultGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"vetoSlasherImplType","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyAdded","inputs":[]},{"type":"error","name":"AlreadyEnabled","inputs":[]},{"type":"error","name":"BurnerHookNotSupported","inputs":[]},{"type":"error","name":"DelegatorNotInitialized","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnumerableMapNonexistentKey","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"EraDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"IncompatibleSlasherType","inputs":[]},{"type":"error","name":"IncompatibleStakerRewardsVersion","inputs":[]},{"type":"error","name":"IncompatibleVaultVersion","inputs":[]},{"type":"error","name":"IncorrectTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidStakerRewardsVault","inputs":[]},{"type":"error","name":"MaxValidatorsMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinVaultEpochDurationLessThanTwoEras","inputs":[]},{"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch","inputs":[]},{"type":"error","name":"MinVetoDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"NonFactoryStakerRewards","inputs":[]},{"type":"error","name":"NonFactoryVault","inputs":[]},{"type":"error","name":"NotEnabled","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegisteredOperator","inputs":[]},{"type":"error","name":"NotRegisteredVault","inputs":[]},{"type":"error","name":"NotRouter","inputs":[]},{"type":"error","name":"NotSlashExecutor","inputs":[]},{"type":"error","name":"NotSlashRequester","inputs":[]},{"type":"error","name":"NotVaultOwner","inputs":[]},{"type":"error","name":"OperatorDoesNotExist","inputs":[]},{"type":"error","name":"OperatorDoesNotOptIn","inputs":[]},{"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"OperatorGracePeriodNotPassed","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"ResolverMismatch","inputs":[]},{"type":"error","name":"ResolverSetDelayMustBeAtLeastThree","inputs":[]},{"type":"error","name":"ResolverSetDelayTooLong","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SlasherNotInitialized","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownCollateral","inputs":[]},{"type":"error","name":"UnsupportedBurner","inputs":[]},{"type":"error","name":"UnsupportedDelegatorHook","inputs":[]},{"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"VaultGracePeriodNotPassed","inputs":[]},{"type":"error","name":"VaultWrongEpochDuration","inputs":[]},{"type":"error","name":"VetoDurationTooLong","inputs":[]},{"type":"error","name":"VetoDurationTooShort","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f516020613d365f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b604051613c6f90816100c78239608051818181611c690152611d380152f35b6001600160401b0319166001600160401b039081175f516020613d365f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c806305c4fdf9146124bf5780630a71094c146122175780632633b70f146121635780632acde0981461200b578063373bba1f14611fd55780633ccce78914611f985780633d15e74e14611f6b5780634455a38f14611f38578063461e7a8e14611f025780634f1ef28614611cbd57806352d1902d14611c565780636c2eb350146118195780636d1064eb146117ac5780636e5c79321461176f578063709d06ae14611739578063715018a6146116d0578063729e2f36146115b257806379a8b2451461157c5780637fbe95b5146111b957806386c241a11461115b5780638da5cb5b14611126578063936f4330146110e9578063945cf2dd146110b357806396115bc214610fe75780639e03231114610fb9578063ab12275314610849578063ad3cb1cc146107fc578063af962995146105e9578063b5e5ad1214610570578063bcf33934146103a0578063c639e2d614610372578063c9b0b1e91461033b578063ceebb69a1461030d578063d55a5bdf146102d3578063d8dfeb451461029a578063d99ddfc71461025c578063d99fcd661461022f578063f2fde38b146102025763f887ea40146101c7575f80fd5b346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600701546040516001600160a01b039091168152602090f35b80fd5b50346101ff5760203660031901126101ff5761022c61021f612e55565b6102276136a7565b613480565b80f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f52540133906135a1565b50346101ff5760403660031901126101ff57602061029261027b612e55565b610283612f00565b9061028d8261372b565b61343d565b604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015460401c16604051908152f35b50346101ff57806003193601126101ff57602060045f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff57602060055f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff576101206040516103c081612e7f565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015201526101405f516020613c2f5f395f51905f525460405161041481612e7f565b60018060a01b036008830154169182825260018060a01b036009820154166020830190815260018060a01b03600a830154166040840190815260018060a01b03600b840154166060850190815260018060a01b03600c850154166080860190815260018060a01b03600d860154169160a0870192835260018060a01b03600e870154169360c0880194855260018060a01b03600f880154169560e0890196875261012060018060a01b0360108a015416986101008b01998a52601160018060a01b03910154169901988952604051998a5260018060a01b0390511660208a015260018060a01b03905116604089015260018060a01b03905116606088015260018060a01b03905116608087015260018060a01b0390511660a086015260018060a01b0390511660c085015260018060a01b0390511660e084015260018060a01b0390511661010083015260018060a01b03905116610120820152f35b50346101ff5760203660031901126101ff576105ac90610596610591612eeb565b61331c565b9091604051938493604085526040850190612f15565b8381036020850152602080845192838152019301915b8181106105d0575050500390f35b82518452859450602093840193909201916001016105c2565b50346101ff5760203660031901126101ff576004356001600160401b0381116107f857366023820112156107f85780600401356001600160401b0381116107f4576024820191602436918360061b0101116107f4575f516020613c2f5f395f51905f5254601001546001600160a01b031633036107e5576020905f90845b818110610672578580f35b61067d818387613003565b5f516020613c2f5f395f51905f52549091906106bc906015016001600160a01b036106a785612fba565b16906001915f520160205260405f2054151590565b156107d6576004856001600160a01b036106d585612fba565b166040519283809263b134427160e01b82525afa9283156107cb576107439387928a9161079e575b50828a6040519361070e8386612eaf565b81855289368487013760405197889586948593635ca61c3760e11b855201356004840152604060248401526044830190612f68565b03926001600160a01b03165af191821561079357600192610766575b5001610667565b61078590863d881161078c575b61077d8183612eaf565b810190613046565b505f61075f565b503d610773565b6040513d89823e3d90fd5b6107be9150833d85116107c4575b6107b68183612eaf565b810190613027565b5f6106fd565b503d6107ac565b6040513d8a823e3d90fd5b633b2fc1c360e21b8752600487fd5b632249f71f60e21b8352600483fd5b8280fd5b5080fd5b50346101ff57806003193601126101ff575061084560405161081f604082612eaf565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612f68565b0390f35b50346101ff576102e03660031901126101ff575f516020613c4f5f395f51905f52546001600160401b0360ff8260401c1615911680159081610fb1575b6001149081610fa7575b159081610f9e575b50610f8f578060016001600160401b03195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f5255610f5f575b6004356001600160a01b03811681036107f4576108f5906108ed6139d1565b6102276139d1565b6108fd6139d1565b604090815161090c8382612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563100815261093f6136a7565b905190205f190183526020832060ff19165f516020613c2f5f395f51905f5281905560243565ffffffffffff81168103610f5b57815465ffffffffffff191665ffffffffffff9182161782556044359081168103610f5b5781546bffffffffffff000000000000191660309190911b65ffffffffffff60301b1617815560643565ffffffffffff81168103610f5b57815465ffffffffffff60601b191660609190911b65ffffffffffff60601b1617815560843565ffffffffffff81168103610f5b57815465ffffffffffff60901b191660909190911b65ffffffffffff60901b1617815560a43565ffffffffffff81168103610f5b57815465ffffffffffff60c01b191660c09190911b65ffffffffffff60c01b1617815560c43565ffffffffffff81168103610f5b5765ffffffffffff60018301911665ffffffffffff19825416178155600282019161012435835560e4356001600160401b0381168103610f53576001600160401b036003830191166001600160401b0319825416178155610104356001600160401b0381168103610f575781546fffffffffffffffff0000000000000000191660409190911b67ffffffffffffffff60401b16179055610164356001600160a01b0381168103610f53576006820180546001600160a01b0319166001600160a01b039283161790553060601b6004830155610144356005830155610184359081168103610f53576007820180546001600160a01b0319166001600160a01b039283161790556101a4359081168103610f53576008820180546001600160a01b0319166001600160a01b039283161790556101c4359081168103610f53576009820180546001600160a01b0319166001600160a01b03909216919091179055610bcf612f8c565b600a820180546001600160a01b0319166001600160a01b03909216919091179055610bf8612fa3565b600b820180546001600160a01b0319166001600160a01b03928316179055610224359081168103610f5357600c820180546001600160a01b0319166001600160a01b03928316179055610244359081168103610f5357600d820180546001600160a01b0319166001600160a01b03928316179055610264359081168103610f5357600e820180546001600160a01b0319166001600160a01b03928316179055610284359081168103610f5357600f820180546001600160a01b0319166001600160a01b039283161790556102a4359081168103610f53576010820180546001600160a01b0319166001600160a01b039283161790556102c4359081168103610f53576011820180546001600160a01b0319166001600160a01b039283161790558690610d22612f8c565b16803b156107f85781809160048951809481936387140b5b60e01b83525af18015610f3457610f3e575b506001600160a01b03610d5d612fa3565b16803b156107f857818091602489518094819363b7d8e1a960e01b83523060048401525af18015610f3457610f1b575b5050549065ffffffffffff821615610f0c5765ffffffffffff8260301c16918060011b6601fffffffffffe65fffffffffffe821691168103610ef8578310610ee9578265ffffffffffff8260601c1610610eda578265ffffffffffff8260901c1610610ecb5760c01c65ffffffffffff16908115610ebc575465ffffffffffff16908115610ead5765ffffffffffff91610e2691613055565b1611610e9e576003905410610e8f57610e3d575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52555160018152a180f35b634bd1214b60e11b8352600483fd5b63681d91d760e01b8452600484fd5b634c57479b60e11b8752600487fd5b63a46498b960e01b8752600487fd5b630ff9ae5960e11b8752600487fd5b630314153160e21b8752600487fd5b63395b39b960e21b8752600487fd5b634e487b7160e01b88526011600452602488fd5b6330e28a3960e11b8652600486fd5b81610f2591612eaf565b610f3057855f610d8d565b8580fd5b87513d84823e3d90fd5b81610f4891612eaf565b610f3057855f610d4c565b8680fd5b8780fd5b8480fd5b600160401b60ff60401b195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f52556108ce565b63f92ee8a960e01b8252600482fd5b9050155f610898565b303b159150610890565b829150610886565b50346101ff57806003193601126101ff57602060025f516020613c2f5f395f51905f52540154604051908152f35b50346101ff5760203660031901126101ff57611001612e55565b5f516020613c2f5f395f51905f52546001600160a01b0390911690601281019061104b61102e84846139fc565b65ffffffffffff81169165ffffffffffff8260301c169160601c90565b5065ffffffffffff8116159291508215611083575b50506110745790611070916139b7565b5080f35b63f1c9810160e01b8352600483fd5b65ffffffffffff9192506110a882918261109c42613988565b955460601c1690613055565b169116105f80611060565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460301c16604051908152f35b50346101ff5760203660031901126101ff5761022c611106612e55565b61110f816134f1565b60155f516020613c2f5f395f51905f52540161362b565b50346101ff57806003193601126101ff575f516020613bef5f395f51905f52546040516001600160a01b039091168152602090f35b50346101ff5760203660031901126101ff57611175612e55565b5f516020613c2f5f395f51905f525460100180549091906001600160a01b031633036107e55781546001600160a01b0319166001600160a01b039190911617905580f35b50346101ff5760403660031901126101ff576004356001600160401b0381116107f857606060031982360301126107f857604051606081018181106001600160401b038211176115685760405281600401356001600160401b0381116115645782013660238201121561156457600481013561123481612f51565b916112426040519384612eaf565b818352602060048185019360061b8301010190368211610f5357602401915b818310611506575050508152611284604460208301936024810135855201612e6b565b9060408101918252611294612f00565b935f516020613c2f5f395f51905f525490600782019460018060a01b0386541633036114f757845160068401546001600160a01b039182169116036114e857819594939550606093829565ffffffffffff60056015870196019916926020965b895180518a10156114a157896113099161309f565b5180516001600160a01b03165f908152600189016020526040902054156107d657908b91866113c28b6113b48b6113a26113518f61102e9060018060a01b038a5116906139fc565b9a546040516001600160a01b03909c169b925090506113708683612eaf565b838252604051936113818786612eaf565b845260405197889687015260408601526080606086015260a0850190612f68565b838103601f1901608085015290612f68565b03601f198101835282612eaf565b85548751838d0180519096909290916001600160a01b039081169116823b1561149d57908c809493926114226040519788968795869463239723ed60e01b8652600486015260248501526044840152608060648401526084830190612f68565b03925af180156114925790899161147d575b50509161147591600193519151604051926bffffffffffffffffffffffff199060601b168c840152603483015260348252611470605483612eaf565b6132dc565b9801976112f4565b8161148791612eaf565b610f5757875f611434565b6040513d8b823e3d90fd5b8c80fd5b886114da86848651915160405192858401526bffffffffffffffffffffffff199060601b16604083015260348252611470605483612eaf565b818151910120604051908152f35b63039a1fd760e21b8252600482fd5b639165520160e01b8252600482fd5b604083360312610f5357604051604081018181106001600160401b038211176115505791602091604093845261153b86612e6b565b81528286013583820152815201920191611261565b634e487b7160e01b89526041600452602489fd5b8380fd5b634e487b7160e01b84526041600452602484fd5b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460901c16604051908152f35b50346101ff5760603660031901126101ff576115cc612e55565b5f516020613c2f5f395f51905f5254600781015460243592604435926001600160a01b0390921691338390036116c15760068101546001600160a01b03928316921682036116b257600e01546001600160a01b031691859190833b156107f4576084908360405195869485936348a78da760e01b8552600485015260248401528860448401528760648401525af180156116a757611692575b6020838360405190838201928352604082015260408152611687606082612eaf565b519020604051908152f35b61169d848092612eaf565b6107f45782611665565b6040513d86823e3d90fd5b63039a1fd760e21b8652600486fd5b639165520160e01b8652600486fd5b50346101ff57806003193601126101ff576116e96136a7565b5f516020613bef5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460601c16604051908152f35b50346101ff5760403660031901126101ff5761084561179861178f612eeb565b602435906130c0565b604051918291602083526020830190612f15565b50346101ff5760203660031901126101ff576117c6612e55565b5f516020613c2f5f395f51905f5254600f0180549091906001600160a01b0316330361180a5781546001600160a01b0319166001600160a01b039190911617905580f35b633fdc220360e01b8352600483fd5b50346101ff57806003193601126101ff576118326136a7565b5f516020613c4f5f395f51905f525460ff8160401c16908115611c41575b50611c32575f516020613c4f5f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f516020613bef5f395f51905f52546118a2906001600160a01b03166108ed6139d1565b5f516020613c2f5f395f51905f5254906040516118c0604082612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c657761726556320081526118f36136a7565b905190205f190181526020812060ff19165f516020613c2f5f395f51905f528190558254815465ffffffffffff90911665ffffffffffff19821681178355845465ffffffffffff60301b166001600160601b031990921617178155918054835465ffffffffffff60601b191665ffffffffffff60601b9091161783558054835465ffffffffffff60901b191665ffffffffffff60901b9091161783558054835465ffffffffffff60c01b191665ffffffffffff60c01b90911617835565ffffffffffff60018201541665ffffffffffff60018501911665ffffffffffff1982541617905560028101546002840155611a30600382016001600160401b0380825416918160038801931682198454161783555460401c1667ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b60068181015490840180546001600160a01b039283166001600160a01b031991821617909155600480840154908601556005808401549086015560078084015490860180549190931691161790556008808401908201828503611b4a575b50506012808401939290820191815b8354811015611ac45780611abd611ab6600193876136da565b9089613709565b5001611a9d565b506015808501929101815b8154811015611af65780611aef611ae8600193856136da565b9087613709565b5001611acf565b8260ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a180f35b5481546001600160a01b03199081166001600160a01b039283161790925560098381015490860180548416918316919091179055600a8084015490860180548416918316919091179055600b8084015490860180548416918316919091179055600c8084015490860180548416918316919091179055600d8084015490860180548416918316919091179055600e8084015490860180548416918316919091179055600f808401549086018054841691831691909117905560108084015490860180548416918316919091179055601180840154908601805490931691161790555f80611a8e565b63f92ee8a960e01b8152600490fd5b600291506001600160401b031610155f611850565b50346101ff57806003193601126101ff577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611cae5760206040515f516020613c0f5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126101ff57611cd2612e55565b602435906001600160401b0382116107f457366023830112156107f45781600401359083611cff83612ed0565b93611d0d6040519586612eaf565b838552602085019336602482840101116107f457806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611ee0575b50611ed157611d706136a7565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181611e9d575b50611db357634c9c8ce360e01b86526004859052602486fd5b93845f516020613c0f5f395f51905f52879603611e8b5750823b15611e79575f516020613c0f5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115611e5e576110709382915190845af43d15611e56573d91611e3a83612ed0565b92611e486040519485612eaf565b83523d85602085013e613b43565b606091613b43565b5050505034611e6a5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011611ec9575b81611eb960209383612eaf565b81010312610f535751905f611d9a565b3d9150611eac565b63703e46dd60e11b8452600484fd5b5f516020613c0f5f395f51905f52546001600160a01b0316141590505f611d63565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460c01c16604051908152f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545416604051908152f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f525401339061362b565b50346101ff5760203660031901126101ff5761022c611fb5612e55565b611fbe816134f1565b60155f516020613c2f5f395f51905f5254016135a1565b50346101ff57806003193601126101ff57602065ffffffffffff60015f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f525460098101546040516302910f8b60e31b815233600482015290602090829060249082906001600160a01b03165afa90811561212a578391612144575b501561213557600c8101546040516308834cb560e21b815233600482015230602482015290602090829060449082906001600160a01b03165afa90811561212a5783916120fb575b50156120ec576120d59065ffffffffffff6120c942613988565b16906012339101613709565b156120dd5780f35b63f411c32760e01b8152600490fd5b6396cc2bc360e01b8252600482fd5b61211d915060203d602011612123575b6121158183612eaf565b810190613087565b5f6120af565b503d61210b565b6040513d85823e3d90fd5b6325878fa360e21b8252600482fd5b61215d915060203d602011612123576121158183612eaf565b5f612067565b50346101ff5760203660031901126101ff5761217d612e55565b612186816134f1565b5f516020613c2f5f395f51905f52546001600160a01b039091169060158101906121b361102e84846139fc565b5065ffffffffffff81161592915082156121e7575b50506121d85790611070916139b7565b6347a11ef760e11b8352600483fd5b65ffffffffffff91925061220c82918261220042613988565b955460901c1690613055565b169116105f806121c8565b50346101ff5760203660031901126101ff576001600160401b03600435116101ff573660236004350112156101ff576001600160401b0360043560040135116101ff573660246004356004013560051b6004350101116101ff575f516020613c2f5f395f51905f5254600f8101546001600160a01b031633036124b05781906020905b600435600401358310156124ac5760248360051b600435010135608219600435360301811215610f5b5760043501906122f66001600160a01b036122e060248501612fba565b165f908152601383016020526040902054151590565b1561249d57845b61230d6064840160248501612fce565b9050811015612490576123308161232a6064860160248701612fce565b90613003565b61235a6001600160a01b0361234483612fba565b165f908152601685016020526040902054151590565b156107d657869190600490866001600160a01b0361237783612fba565b166040519384809263b134427160e01b82525afa9182156116a7578492612471575b506004850154916123ac60248801612fba565b604488013565ffffffffffff81169003610f3057889586946124316040516123d48882612eaf565b838152601f1988013689830137604051998a978896879563545ce38960e01b8752600487015260018060a01b031660248601520135604484015265ffffffffffff60448d013516606484015260a0608484015260a4830190612f68565b03926001600160a01b03165af191821561079357600192612454575b50016122fd565b61246a90863d881161078c5761077d8183612eaf565b505f61244d565b612489919250873d89116107c4576107b68183612eaf565b905f612399565b509260019150019161229a565b6303fa1eaf60e41b8552600485fd5b8380f35b633fdc220360e01b8252600482fd5b5034612b81576040366003190112612b81576124d9612e55565b6024356001600160a01b038116929190839003612b81576124f9816134f1565b5f516020613c2f5f395f51905f525460088101546040516302910f8b60e31b81526001600160a01b038085166004830181905294939260209183916024918391165afa908115612d13575f91612e36575b5015612e275760405163054fd4d560e41b8152602081600481875afa908115612d13575f91612e08575b5060038201906001600160401b0380835416911603612df95760405163d8dfeb4560e01b8152602081600481885afa908115612d13575f91612dda575b5060068301546001600160a01b03908116911603612dcb576040516327f843b560e11b8152602081600481885afa908115612d13575f91612dac575b5065ffffffffffff80845460301c169116908110612d9d5760405163142186b760e21b8152602081600481895afa908115612d13575f91612d7e575b5015612d6f57604051630ce9b79360e41b8152602081600481895afa908115612d13575f91612d50575b50600484810180546040516368adba0760e11b81529283015292916001600160a01b031690602081602481855afa908115612d13575f91612d1e575b5019612cc1575b602060049160405192838092637f5a7c7b60e01b82525afa9081156107cb578891612ca2575b506001600160a01b0316612c9057604051630dd83c7f60e31b81526020816004818a5afa9081156107cb578891612c71575b5015612c625760405163b134427160e01b81526020816004818a5afa9081156107cb578891612c43575b50604051635d927f4560e11b81526001600160a01b039190911693602082600481885afa918215611492578992612c17575b506001600160401b0380915460401c16911603612c0857604051631a684c7560e11b8152602081600481875afa9081156107cb578891612be9575b50612bda5760405163e054e08b60e01b8152602081600481875afa9081156107cb578891612bab575b5065ffffffffffff855460c01c1665ffffffffffff821610612b9c576127e265ffffffffffff918260018801541690613055565b1611612b8d5760405163bc6eac5b60e01b8152602081600481865afa908115610793578791612b57575b50600284015410612b485754906020926128648460405161282d8282612eaf565b898152601f19820195863684840137604051938492839263cd05b8a160e01b84526004840152604060248401526044830190612f68565b0381865afa9081156107cb578891612b2b575b506001600160a01b031680612b04575060110154604051926001600160a01b03909116906128a58585612eaf565b8784523685850137813b15610f53579186916128eb93836040518096819582946348b47ce960e11b84528460048501526024840152606060448401526064830190612f68565b03925af18015612a5557908591612aef575b50505b6040516313c085b760e11b81528181600481875afa908115612a55578591612ad2575b506001600160a01b031615612ac3575f516020613c2f5f395f51905f52549260248260018060a01b03600d87015416604051928380926302910f8b60e31b82528b60048301525afa908115612a8c578691612aa6575b5015612a975760405163411557d160e01b815282816004818a5afa908115612a8c578691612a6f575b506001600160a01b031603612a605760405163054fd4d560e41b81528181600481895afa918215612a5557916001600160401b03916002938792612a28575b50501603612a195760156120d5939465ffffffffffff612a0042613988565b1660609190911b6001600160601b031916179201613709565b63ded51c0b60e01b8352600483fd5b612a479250803d10612a4e575b612a3f8183612eaf565b810190613564565b5f806129e1565b503d612a35565b6040513d87823e3d90fd5b630a724f6160e01b8452600484fd5b612a869150833d85116107c4576107b68183612eaf565b5f6129a2565b6040513d88823e3d90fd5b6346e01c4360e11b8552600485fd5b612abd9150833d8511612123576121158183612eaf565b5f612979565b630c6b5ff760e31b8452600484fd5b612ae99150823d84116107c4576107b68183612eaf565b5f612923565b81612af991612eaf565b61156457835f6128fd565b6011909101546001600160a01b0316149150612900905057633cc6586560e21b8452600484fd5b612b429150853d87116107c4576107b68183612eaf565b5f612877565b633a2662c360e11b8652600486fd5b90506020813d602011612b85575b81612b7260209383612eaf565b81010312612b8157515f61280c565b5f80fd5b3d9150612b65565b6307cfe49360e51b8652600486fd5b633062eb1960e21b8852600488fd5b612bcd915060203d602011612bd3575b612bc58183612eaf565b810190613583565b5f6127ae565b503d612bbb565b63447984b360e11b8752600487fd5b612c02915060203d602011612123576121158183612eaf565b5f612785565b63f8c618c760e01b8752600487fd5b6001600160401b03919250612c3b829160203d602011612a4e57612a3f8183612eaf565b92915061274a565b612c5c915060203d6020116107c4576107b68183612eaf565b5f612718565b631501f36360e21b8752600487fd5b612c8a915060203d602011612123576121158183612eaf565b5f6126ee565b60016221bb1360e11b03198752600487fd5b612cbb915060203d6020116107c4576107b68183612eaf565b5f6126bc565b803b15612b81576040516323f752d560e01b81525f600482018190525f1960248301528160448183865af18015612d1357612cfd575b50612696565b612d0a9198505f90612eaf565b5f966020612cf7565b6040513d5f823e3d90fd5b90506020813d602011612d48575b81612d3960209383612eaf565b81010312612b8157515f61268f565b3d9150612d2c565b612d69915060203d6020116107c4576107b68183612eaf565b5f612653565b636e549c1760e11b5f5260045ffd5b612d97915060203d602011612123576121158183612eaf565b5f612629565b634934476760e01b5f5260045ffd5b612dc5915060203d602011612bd357612bc58183612eaf565b5f6125ed565b63039a1fd760e21b5f5260045ffd5b612df3915060203d6020116107c4576107b68183612eaf565b5f6125b1565b63bfcdc45f60e01b5f5260045ffd5b612e21915060203d602011612a4e57612a3f8183612eaf565b5f612574565b635b19e4bb60e01b5f5260045ffd5b612e4f915060203d602011612123576121158183612eaf565b5f61254a565b600435906001600160a01b0382168203612b8157565b35906001600160a01b0382168203612b8157565b61014081019081106001600160401b03821117612e9b57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117612e9b57604052565b6001600160401b038111612e9b57601f01601f191660200190565b6004359065ffffffffffff82168203612b8157565b6024359065ffffffffffff82168203612b8157565b90602080835192838152019201905f5b818110612f325750505090565b82516001600160a01b0316845260209384019390920191600101612f25565b6001600160401b038111612e9b5760051b60200190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6101e4356001600160a01b0381168103612b815790565b610204356001600160a01b0381168103612b815790565b356001600160a01b0381168103612b815790565b903590601e1981360301821215612b8157018035906001600160401b038211612b8157602001918160061b36038313612b8157565b91908110156130135760061b0190565b634e487b7160e01b5f52603260045260245ffd5b90816020910312612b8157516001600160a01b0381168103612b815790565b90816020910312612b81575190565b9065ffffffffffff8091169116019065ffffffffffff821161307357565b634e487b7160e01b5f52601160045260245ffd5b90816020910312612b8157518015158103612b815790565b80518210156130135760209160051b010190565b9190820180921161307357565b9181156132cd576130d08361331c565b928151818111156132c4575f5f198201828111925b8083106131eb57505050506001945f1982019082821161307357613109828761309f565b5183975b85518910156131dd57816131218a8a61309f565b510361313d57600181018091116130735760019098019761310d565b9395975050909294505b60018211613158575b505050815290565b604051602081019165ffffffffffff60d01b9060d01b16825260068152613180602682612eaf565b5190209080156131c9576131959106836130b3565b5f198101908111613073576131c0906001600160a01b03906131b7908661309f565b5116918461309f565b525f8080613150565b634e487b7160e01b5f52601260045260245ffd5b939597505090929450613147565b9296958792959891945f935b613073578685035f1901868111613073578410156132b157613219848961309f565b51600185019485811161307357858c826001946132378f9a8f61309f565b5111613248575b50505001936131f7565b6132a8918d6132788361325b878461309f565b5192613267828261309f565b51613272898361309f565b5261309f565b52858060a01b03613289858361309f565b511693613272878060a01b0361329f858561309f565b5116918361309f565b525f8c8261323e565b94919895600191979894935001916130e5565b50509150915090565b6314f867c760e21b5f5260045ffd5b61331a906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283612eaf565b565b906133268261372b565b60125f516020613c2f5f395f51905f52540180549261334484612f51565b916133526040519384612eaf565b848352601f1961336186612f51565b0136602085013761337185612f51565b9461337f6040519687612eaf565b808652601f1961338e82612f51565b013660208801375f925f925b8284106133ae575050505080825283529190565b909192936133e36133ea846133c388866136da565b93909365ffffffffffff81169165ffffffffffff8260301c169160601c90565b50906137b5565b15613433578361340f916133fe848a61309f565b6001600160a01b038216905261380e565b613419828a61309f565b526001810180911161307357600190945b0192919061339a565b509360019061342a565b90613469816133e361102e60125f516020613c2f5f395f51905f52540160018060a01b038716906139fc565b1561347a576134779161380e565b90565b50505f90565b6001600160a01b031680156134de575f516020613bef5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b604051632474521560e21b81525f600482015233602482015290602090829060449082906001600160a01b03165afa908115612d13575f91613545575b501561353657565b630e7fea9d60e01b5f5260045ffd5b61355e915060203d602011612123576121158183612eaf565b5f61352e565b90816020910312612b8157516001600160401b0381168103612b815790565b90816020910312612b81575165ffffffffffff81168103612b815790565b65ffffffffffff916135bf61102e6001600160a01b038316846139fc565b9194909416938415908115613619575b5061360a576136079365ffffffffffff60301b6135eb42613988565b60301b161760609190911b6001600160601b0319161791613709565b50565b633f54562b60e11b5f5260045ffd5b65ffffffffffff91501615155f6135cf565b65ffffffffffff9161364961102e6001600160a01b038316846139fc565b9490911615159081613696575b50613687576136079265ffffffffffff61366f42613988565b1660609190911b6001600160601b0319161791613709565b637952fbad60e11b5f5260045ffd5b65ffffffffffff915016155f613656565b5f516020613bef5f395f51905f52546001600160a01b031633036136c757565b63118cdaa760e01b5f523360045260245ffd5b91906136e860029184613a53565b90549060031b1c92835f520160205260405f20549160018060a01b03169190565b613477929160018060a01b031691825f526002820160205260405f2055613ba1565b5f516020613c2f5f395f51905f52549065ffffffffffff61374b42613988565b1665ffffffffffff8216101561379e57613782915465ffffffffffff808260601c169160901c168082105f146137ad575090613055565b65ffffffffffff8061379342613988565b169116111561379e57565b63686c69fd60e01b5f5260045ffd5b905090613055565b65ffffffffffff16801515929190836137fb575b50826137d457505090565b65ffffffffffff16801592509082156137ec57505090565b65ffffffffffff161115905090565b65ffffffffffff8316101592505f6137c9565b5f516020613c2f5f395f51905f52546015810180546004909201545f95948694602093869391905b868810613847575050505050505050565b90919293949596986133e3613860866133c38d866136da565b1561397e57604051630ce9b79360e41b8152908890829060049082906001600160a01b03165afa908115612d13576138fc9189915f91613961575b50604051906138aa8383612eaf565b5f825289368484013760405163e02f693760e01b8152600481018990526001600160a01b038816602482015265ffffffffffff8a16604482015260806064820152938492839182916084830190612f68565b03916001600160a01b03165afa908115612d13575f91613933575b50613924906001926130b3565b995b0196959493929190613836565b90508781813d831161395a575b61394a8183612eaf565b81010312612b8157516001613917565b503d613940565b6139789150823d84116107c4576107b68183612eaf565b5f61389b565b5098600190613926565b65ffffffffffff81116139a05765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b9061347791815f52600281016020525f6040812055613a68565b60ff5f516020613c4f5f395f51905f525460401c16156139ed57565b631afcd79f60e31b5f5260045ffd5b90805f526002820160205260405f2054918183159182613a33575b5050613a21575090565b63015ab34360e11b5f5260045260245ffd5b613a4b92506001915f520160205260405f2054151590565b15815f613a17565b8054821015613013575f5260205f2001905f90565b906001820191815f528260205260405f20548015155f14613b3b575f1981018181116130735782545f1981019190821161307357818103613af0575b50505080548015613adc575f190190613abd8282613a53565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b613b26613b00613b109386613a53565b90549060031b1c92839286613a53565b819391549060031b91821b915f19901b19161790565b90555f528360205260405f20555f8080613aa4565b505050505f90565b90613b675750805115613b5857602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613b98575b613b78575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613b70565b5f82815260018201602052604090205461347a57805490600160401b821015612e9b5782613bd9613b10846001809601855584613a53565b90558054925f520160205260405f205560019056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"2376:21827:160:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;7983:34:30;7979:146;;-1:-1:-1;2376:21827:160;;;;;;;;1052:13:60;2376:21827:160;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;8085:29:30;;2376:21827:160;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;2376:21827:160;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c806305c4fdf9146124bf5780630a71094c146122175780632633b70f146121635780632acde0981461200b578063373bba1f14611fd55780633ccce78914611f985780633d15e74e14611f6b5780634455a38f14611f38578063461e7a8e14611f025780634f1ef28614611cbd57806352d1902d14611c565780636c2eb350146118195780636d1064eb146117ac5780636e5c79321461176f578063709d06ae14611739578063715018a6146116d0578063729e2f36146115b257806379a8b2451461157c5780637fbe95b5146111b957806386c241a11461115b5780638da5cb5b14611126578063936f4330146110e9578063945cf2dd146110b357806396115bc214610fe75780639e03231114610fb9578063ab12275314610849578063ad3cb1cc146107fc578063af962995146105e9578063b5e5ad1214610570578063bcf33934146103a0578063c639e2d614610372578063c9b0b1e91461033b578063ceebb69a1461030d578063d55a5bdf146102d3578063d8dfeb451461029a578063d99ddfc71461025c578063d99fcd661461022f578063f2fde38b146102025763f887ea40146101c7575f80fd5b346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600701546040516001600160a01b039091168152602090f35b80fd5b50346101ff5760203660031901126101ff5761022c61021f612e55565b6102276136a7565b613480565b80f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f52540133906135a1565b50346101ff5760403660031901126101ff57602061029261027b612e55565b610283612f00565b9061028d8261372b565b61343d565b604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015460401c16604051908152f35b50346101ff57806003193601126101ff57602060045f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff57602060055f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff576101206040516103c081612e7f565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015201526101405f516020613c2f5f395f51905f525460405161041481612e7f565b60018060a01b036008830154169182825260018060a01b036009820154166020830190815260018060a01b03600a830154166040840190815260018060a01b03600b840154166060850190815260018060a01b03600c850154166080860190815260018060a01b03600d860154169160a0870192835260018060a01b03600e870154169360c0880194855260018060a01b03600f880154169560e0890196875261012060018060a01b0360108a015416986101008b01998a52601160018060a01b03910154169901988952604051998a5260018060a01b0390511660208a015260018060a01b03905116604089015260018060a01b03905116606088015260018060a01b03905116608087015260018060a01b0390511660a086015260018060a01b0390511660c085015260018060a01b0390511660e084015260018060a01b0390511661010083015260018060a01b03905116610120820152f35b50346101ff5760203660031901126101ff576105ac90610596610591612eeb565b61331c565b9091604051938493604085526040850190612f15565b8381036020850152602080845192838152019301915b8181106105d0575050500390f35b82518452859450602093840193909201916001016105c2565b50346101ff5760203660031901126101ff576004356001600160401b0381116107f857366023820112156107f85780600401356001600160401b0381116107f4576024820191602436918360061b0101116107f4575f516020613c2f5f395f51905f5254601001546001600160a01b031633036107e5576020905f90845b818110610672578580f35b61067d818387613003565b5f516020613c2f5f395f51905f52549091906106bc906015016001600160a01b036106a785612fba565b16906001915f520160205260405f2054151590565b156107d6576004856001600160a01b036106d585612fba565b166040519283809263b134427160e01b82525afa9283156107cb576107439387928a9161079e575b50828a6040519361070e8386612eaf565b81855289368487013760405197889586948593635ca61c3760e11b855201356004840152604060248401526044830190612f68565b03926001600160a01b03165af191821561079357600192610766575b5001610667565b61078590863d881161078c575b61077d8183612eaf565b810190613046565b505f61075f565b503d610773565b6040513d89823e3d90fd5b6107be9150833d85116107c4575b6107b68183612eaf565b810190613027565b5f6106fd565b503d6107ac565b6040513d8a823e3d90fd5b633b2fc1c360e21b8752600487fd5b632249f71f60e21b8352600483fd5b8280fd5b5080fd5b50346101ff57806003193601126101ff575061084560405161081f604082612eaf565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612f68565b0390f35b50346101ff576102e03660031901126101ff575f516020613c4f5f395f51905f52546001600160401b0360ff8260401c1615911680159081610fb1575b6001149081610fa7575b159081610f9e575b50610f8f578060016001600160401b03195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f5255610f5f575b6004356001600160a01b03811681036107f4576108f5906108ed6139d1565b6102276139d1565b6108fd6139d1565b604090815161090c8382612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563100815261093f6136a7565b905190205f190183526020832060ff19165f516020613c2f5f395f51905f5281905560243565ffffffffffff81168103610f5b57815465ffffffffffff191665ffffffffffff9182161782556044359081168103610f5b5781546bffffffffffff000000000000191660309190911b65ffffffffffff60301b1617815560643565ffffffffffff81168103610f5b57815465ffffffffffff60601b191660609190911b65ffffffffffff60601b1617815560843565ffffffffffff81168103610f5b57815465ffffffffffff60901b191660909190911b65ffffffffffff60901b1617815560a43565ffffffffffff81168103610f5b57815465ffffffffffff60c01b191660c09190911b65ffffffffffff60c01b1617815560c43565ffffffffffff81168103610f5b5765ffffffffffff60018301911665ffffffffffff19825416178155600282019161012435835560e4356001600160401b0381168103610f53576001600160401b036003830191166001600160401b0319825416178155610104356001600160401b0381168103610f575781546fffffffffffffffff0000000000000000191660409190911b67ffffffffffffffff60401b16179055610164356001600160a01b0381168103610f53576006820180546001600160a01b0319166001600160a01b039283161790553060601b6004830155610144356005830155610184359081168103610f53576007820180546001600160a01b0319166001600160a01b039283161790556101a4359081168103610f53576008820180546001600160a01b0319166001600160a01b039283161790556101c4359081168103610f53576009820180546001600160a01b0319166001600160a01b03909216919091179055610bcf612f8c565b600a820180546001600160a01b0319166001600160a01b03909216919091179055610bf8612fa3565b600b820180546001600160a01b0319166001600160a01b03928316179055610224359081168103610f5357600c820180546001600160a01b0319166001600160a01b03928316179055610244359081168103610f5357600d820180546001600160a01b0319166001600160a01b03928316179055610264359081168103610f5357600e820180546001600160a01b0319166001600160a01b03928316179055610284359081168103610f5357600f820180546001600160a01b0319166001600160a01b039283161790556102a4359081168103610f53576010820180546001600160a01b0319166001600160a01b039283161790556102c4359081168103610f53576011820180546001600160a01b0319166001600160a01b039283161790558690610d22612f8c565b16803b156107f85781809160048951809481936387140b5b60e01b83525af18015610f3457610f3e575b506001600160a01b03610d5d612fa3565b16803b156107f857818091602489518094819363b7d8e1a960e01b83523060048401525af18015610f3457610f1b575b5050549065ffffffffffff821615610f0c5765ffffffffffff8260301c16918060011b6601fffffffffffe65fffffffffffe821691168103610ef8578310610ee9578265ffffffffffff8260601c1610610eda578265ffffffffffff8260901c1610610ecb5760c01c65ffffffffffff16908115610ebc575465ffffffffffff16908115610ead5765ffffffffffff91610e2691613055565b1611610e9e576003905410610e8f57610e3d575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52555160018152a180f35b634bd1214b60e11b8352600483fd5b63681d91d760e01b8452600484fd5b634c57479b60e11b8752600487fd5b63a46498b960e01b8752600487fd5b630ff9ae5960e11b8752600487fd5b630314153160e21b8752600487fd5b63395b39b960e21b8752600487fd5b634e487b7160e01b88526011600452602488fd5b6330e28a3960e11b8652600486fd5b81610f2591612eaf565b610f3057855f610d8d565b8580fd5b87513d84823e3d90fd5b81610f4891612eaf565b610f3057855f610d4c565b8680fd5b8780fd5b8480fd5b600160401b60ff60401b195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f52556108ce565b63f92ee8a960e01b8252600482fd5b9050155f610898565b303b159150610890565b829150610886565b50346101ff57806003193601126101ff57602060025f516020613c2f5f395f51905f52540154604051908152f35b50346101ff5760203660031901126101ff57611001612e55565b5f516020613c2f5f395f51905f52546001600160a01b0390911690601281019061104b61102e84846139fc565b65ffffffffffff81169165ffffffffffff8260301c169160601c90565b5065ffffffffffff8116159291508215611083575b50506110745790611070916139b7565b5080f35b63f1c9810160e01b8352600483fd5b65ffffffffffff9192506110a882918261109c42613988565b955460601c1690613055565b169116105f80611060565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460301c16604051908152f35b50346101ff5760203660031901126101ff5761022c611106612e55565b61110f816134f1565b60155f516020613c2f5f395f51905f52540161362b565b50346101ff57806003193601126101ff575f516020613bef5f395f51905f52546040516001600160a01b039091168152602090f35b50346101ff5760203660031901126101ff57611175612e55565b5f516020613c2f5f395f51905f525460100180549091906001600160a01b031633036107e55781546001600160a01b0319166001600160a01b039190911617905580f35b50346101ff5760403660031901126101ff576004356001600160401b0381116107f857606060031982360301126107f857604051606081018181106001600160401b038211176115685760405281600401356001600160401b0381116115645782013660238201121561156457600481013561123481612f51565b916112426040519384612eaf565b818352602060048185019360061b8301010190368211610f5357602401915b818310611506575050508152611284604460208301936024810135855201612e6b565b9060408101918252611294612f00565b935f516020613c2f5f395f51905f525490600782019460018060a01b0386541633036114f757845160068401546001600160a01b039182169116036114e857819594939550606093829565ffffffffffff60056015870196019916926020965b895180518a10156114a157896113099161309f565b5180516001600160a01b03165f908152600189016020526040902054156107d657908b91866113c28b6113b48b6113a26113518f61102e9060018060a01b038a5116906139fc565b9a546040516001600160a01b03909c169b925090506113708683612eaf565b838252604051936113818786612eaf565b845260405197889687015260408601526080606086015260a0850190612f68565b838103601f1901608085015290612f68565b03601f198101835282612eaf565b85548751838d0180519096909290916001600160a01b039081169116823b1561149d57908c809493926114226040519788968795869463239723ed60e01b8652600486015260248501526044840152608060648401526084830190612f68565b03925af180156114925790899161147d575b50509161147591600193519151604051926bffffffffffffffffffffffff199060601b168c840152603483015260348252611470605483612eaf565b6132dc565b9801976112f4565b8161148791612eaf565b610f5757875f611434565b6040513d8b823e3d90fd5b8c80fd5b886114da86848651915160405192858401526bffffffffffffffffffffffff199060601b16604083015260348252611470605483612eaf565b818151910120604051908152f35b63039a1fd760e21b8252600482fd5b639165520160e01b8252600482fd5b604083360312610f5357604051604081018181106001600160401b038211176115505791602091604093845261153b86612e6b565b81528286013583820152815201920191611261565b634e487b7160e01b89526041600452602489fd5b8380fd5b634e487b7160e01b84526041600452602484fd5b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460901c16604051908152f35b50346101ff5760603660031901126101ff576115cc612e55565b5f516020613c2f5f395f51905f5254600781015460243592604435926001600160a01b0390921691338390036116c15760068101546001600160a01b03928316921682036116b257600e01546001600160a01b031691859190833b156107f4576084908360405195869485936348a78da760e01b8552600485015260248401528860448401528760648401525af180156116a757611692575b6020838360405190838201928352604082015260408152611687606082612eaf565b519020604051908152f35b61169d848092612eaf565b6107f45782611665565b6040513d86823e3d90fd5b63039a1fd760e21b8652600486fd5b639165520160e01b8652600486fd5b50346101ff57806003193601126101ff576116e96136a7565b5f516020613bef5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460601c16604051908152f35b50346101ff5760403660031901126101ff5761084561179861178f612eeb565b602435906130c0565b604051918291602083526020830190612f15565b50346101ff5760203660031901126101ff576117c6612e55565b5f516020613c2f5f395f51905f5254600f0180549091906001600160a01b0316330361180a5781546001600160a01b0319166001600160a01b039190911617905580f35b633fdc220360e01b8352600483fd5b50346101ff57806003193601126101ff576118326136a7565b5f516020613c4f5f395f51905f525460ff8160401c16908115611c41575b50611c32575f516020613c4f5f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f516020613bef5f395f51905f52546118a2906001600160a01b03166108ed6139d1565b5f516020613c2f5f395f51905f5254906040516118c0604082612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c657761726556320081526118f36136a7565b905190205f190181526020812060ff19165f516020613c2f5f395f51905f528190558254815465ffffffffffff90911665ffffffffffff19821681178355845465ffffffffffff60301b166001600160601b031990921617178155918054835465ffffffffffff60601b191665ffffffffffff60601b9091161783558054835465ffffffffffff60901b191665ffffffffffff60901b9091161783558054835465ffffffffffff60c01b191665ffffffffffff60c01b90911617835565ffffffffffff60018201541665ffffffffffff60018501911665ffffffffffff1982541617905560028101546002840155611a30600382016001600160401b0380825416918160038801931682198454161783555460401c1667ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b60068181015490840180546001600160a01b039283166001600160a01b031991821617909155600480840154908601556005808401549086015560078084015490860180549190931691161790556008808401908201828503611b4a575b50506012808401939290820191815b8354811015611ac45780611abd611ab6600193876136da565b9089613709565b5001611a9d565b506015808501929101815b8154811015611af65780611aef611ae8600193856136da565b9087613709565b5001611acf565b8260ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a180f35b5481546001600160a01b03199081166001600160a01b039283161790925560098381015490860180548416918316919091179055600a8084015490860180548416918316919091179055600b8084015490860180548416918316919091179055600c8084015490860180548416918316919091179055600d8084015490860180548416918316919091179055600e8084015490860180548416918316919091179055600f808401549086018054841691831691909117905560108084015490860180548416918316919091179055601180840154908601805490931691161790555f80611a8e565b63f92ee8a960e01b8152600490fd5b600291506001600160401b031610155f611850565b50346101ff57806003193601126101ff577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611cae5760206040515f516020613c0f5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126101ff57611cd2612e55565b602435906001600160401b0382116107f457366023830112156107f45781600401359083611cff83612ed0565b93611d0d6040519586612eaf565b838552602085019336602482840101116107f457806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611ee0575b50611ed157611d706136a7565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181611e9d575b50611db357634c9c8ce360e01b86526004859052602486fd5b93845f516020613c0f5f395f51905f52879603611e8b5750823b15611e79575f516020613c0f5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115611e5e576110709382915190845af43d15611e56573d91611e3a83612ed0565b92611e486040519485612eaf565b83523d85602085013e613b43565b606091613b43565b5050505034611e6a5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011611ec9575b81611eb960209383612eaf565b81010312610f535751905f611d9a565b3d9150611eac565b63703e46dd60e11b8452600484fd5b5f516020613c0f5f395f51905f52546001600160a01b0316141590505f611d63565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460c01c16604051908152f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545416604051908152f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f525401339061362b565b50346101ff5760203660031901126101ff5761022c611fb5612e55565b611fbe816134f1565b60155f516020613c2f5f395f51905f5254016135a1565b50346101ff57806003193601126101ff57602065ffffffffffff60015f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f525460098101546040516302910f8b60e31b815233600482015290602090829060249082906001600160a01b03165afa90811561212a578391612144575b501561213557600c8101546040516308834cb560e21b815233600482015230602482015290602090829060449082906001600160a01b03165afa90811561212a5783916120fb575b50156120ec576120d59065ffffffffffff6120c942613988565b16906012339101613709565b156120dd5780f35b63f411c32760e01b8152600490fd5b6396cc2bc360e01b8252600482fd5b61211d915060203d602011612123575b6121158183612eaf565b810190613087565b5f6120af565b503d61210b565b6040513d85823e3d90fd5b6325878fa360e21b8252600482fd5b61215d915060203d602011612123576121158183612eaf565b5f612067565b50346101ff5760203660031901126101ff5761217d612e55565b612186816134f1565b5f516020613c2f5f395f51905f52546001600160a01b039091169060158101906121b361102e84846139fc565b5065ffffffffffff81161592915082156121e7575b50506121d85790611070916139b7565b6347a11ef760e11b8352600483fd5b65ffffffffffff91925061220c82918261220042613988565b955460901c1690613055565b169116105f806121c8565b50346101ff5760203660031901126101ff576001600160401b03600435116101ff573660236004350112156101ff576001600160401b0360043560040135116101ff573660246004356004013560051b6004350101116101ff575f516020613c2f5f395f51905f5254600f8101546001600160a01b031633036124b05781906020905b600435600401358310156124ac5760248360051b600435010135608219600435360301811215610f5b5760043501906122f66001600160a01b036122e060248501612fba565b165f908152601383016020526040902054151590565b1561249d57845b61230d6064840160248501612fce565b9050811015612490576123308161232a6064860160248701612fce565b90613003565b61235a6001600160a01b0361234483612fba565b165f908152601685016020526040902054151590565b156107d657869190600490866001600160a01b0361237783612fba565b166040519384809263b134427160e01b82525afa9182156116a7578492612471575b506004850154916123ac60248801612fba565b604488013565ffffffffffff81169003610f3057889586946124316040516123d48882612eaf565b838152601f1988013689830137604051998a978896879563545ce38960e01b8752600487015260018060a01b031660248601520135604484015265ffffffffffff60448d013516606484015260a0608484015260a4830190612f68565b03926001600160a01b03165af191821561079357600192612454575b50016122fd565b61246a90863d881161078c5761077d8183612eaf565b505f61244d565b612489919250873d89116107c4576107b68183612eaf565b905f612399565b509260019150019161229a565b6303fa1eaf60e41b8552600485fd5b8380f35b633fdc220360e01b8252600482fd5b5034612b81576040366003190112612b81576124d9612e55565b6024356001600160a01b038116929190839003612b81576124f9816134f1565b5f516020613c2f5f395f51905f525460088101546040516302910f8b60e31b81526001600160a01b038085166004830181905294939260209183916024918391165afa908115612d13575f91612e36575b5015612e275760405163054fd4d560e41b8152602081600481875afa908115612d13575f91612e08575b5060038201906001600160401b0380835416911603612df95760405163d8dfeb4560e01b8152602081600481885afa908115612d13575f91612dda575b5060068301546001600160a01b03908116911603612dcb576040516327f843b560e11b8152602081600481885afa908115612d13575f91612dac575b5065ffffffffffff80845460301c169116908110612d9d5760405163142186b760e21b8152602081600481895afa908115612d13575f91612d7e575b5015612d6f57604051630ce9b79360e41b8152602081600481895afa908115612d13575f91612d50575b50600484810180546040516368adba0760e11b81529283015292916001600160a01b031690602081602481855afa908115612d13575f91612d1e575b5019612cc1575b602060049160405192838092637f5a7c7b60e01b82525afa9081156107cb578891612ca2575b506001600160a01b0316612c9057604051630dd83c7f60e31b81526020816004818a5afa9081156107cb578891612c71575b5015612c625760405163b134427160e01b81526020816004818a5afa9081156107cb578891612c43575b50604051635d927f4560e11b81526001600160a01b039190911693602082600481885afa918215611492578992612c17575b506001600160401b0380915460401c16911603612c0857604051631a684c7560e11b8152602081600481875afa9081156107cb578891612be9575b50612bda5760405163e054e08b60e01b8152602081600481875afa9081156107cb578891612bab575b5065ffffffffffff855460c01c1665ffffffffffff821610612b9c576127e265ffffffffffff918260018801541690613055565b1611612b8d5760405163bc6eac5b60e01b8152602081600481865afa908115610793578791612b57575b50600284015410612b485754906020926128648460405161282d8282612eaf565b898152601f19820195863684840137604051938492839263cd05b8a160e01b84526004840152604060248401526044830190612f68565b0381865afa9081156107cb578891612b2b575b506001600160a01b031680612b04575060110154604051926001600160a01b03909116906128a58585612eaf565b8784523685850137813b15610f53579186916128eb93836040518096819582946348b47ce960e11b84528460048501526024840152606060448401526064830190612f68565b03925af18015612a5557908591612aef575b50505b6040516313c085b760e11b81528181600481875afa908115612a55578591612ad2575b506001600160a01b031615612ac3575f516020613c2f5f395f51905f52549260248260018060a01b03600d87015416604051928380926302910f8b60e31b82528b60048301525afa908115612a8c578691612aa6575b5015612a975760405163411557d160e01b815282816004818a5afa908115612a8c578691612a6f575b506001600160a01b031603612a605760405163054fd4d560e41b81528181600481895afa918215612a5557916001600160401b03916002938792612a28575b50501603612a195760156120d5939465ffffffffffff612a0042613988565b1660609190911b6001600160601b031916179201613709565b63ded51c0b60e01b8352600483fd5b612a479250803d10612a4e575b612a3f8183612eaf565b810190613564565b5f806129e1565b503d612a35565b6040513d87823e3d90fd5b630a724f6160e01b8452600484fd5b612a869150833d85116107c4576107b68183612eaf565b5f6129a2565b6040513d88823e3d90fd5b6346e01c4360e11b8552600485fd5b612abd9150833d8511612123576121158183612eaf565b5f612979565b630c6b5ff760e31b8452600484fd5b612ae99150823d84116107c4576107b68183612eaf565b5f612923565b81612af991612eaf565b61156457835f6128fd565b6011909101546001600160a01b0316149150612900905057633cc6586560e21b8452600484fd5b612b429150853d87116107c4576107b68183612eaf565b5f612877565b633a2662c360e11b8652600486fd5b90506020813d602011612b85575b81612b7260209383612eaf565b81010312612b8157515f61280c565b5f80fd5b3d9150612b65565b6307cfe49360e51b8652600486fd5b633062eb1960e21b8852600488fd5b612bcd915060203d602011612bd3575b612bc58183612eaf565b810190613583565b5f6127ae565b503d612bbb565b63447984b360e11b8752600487fd5b612c02915060203d602011612123576121158183612eaf565b5f612785565b63f8c618c760e01b8752600487fd5b6001600160401b03919250612c3b829160203d602011612a4e57612a3f8183612eaf565b92915061274a565b612c5c915060203d6020116107c4576107b68183612eaf565b5f612718565b631501f36360e21b8752600487fd5b612c8a915060203d602011612123576121158183612eaf565b5f6126ee565b60016221bb1360e11b03198752600487fd5b612cbb915060203d6020116107c4576107b68183612eaf565b5f6126bc565b803b15612b81576040516323f752d560e01b81525f600482018190525f1960248301528160448183865af18015612d1357612cfd575b50612696565b612d0a9198505f90612eaf565b5f966020612cf7565b6040513d5f823e3d90fd5b90506020813d602011612d48575b81612d3960209383612eaf565b81010312612b8157515f61268f565b3d9150612d2c565b612d69915060203d6020116107c4576107b68183612eaf565b5f612653565b636e549c1760e11b5f5260045ffd5b612d97915060203d602011612123576121158183612eaf565b5f612629565b634934476760e01b5f5260045ffd5b612dc5915060203d602011612bd357612bc58183612eaf565b5f6125ed565b63039a1fd760e21b5f5260045ffd5b612df3915060203d6020116107c4576107b68183612eaf565b5f6125b1565b63bfcdc45f60e01b5f5260045ffd5b612e21915060203d602011612a4e57612a3f8183612eaf565b5f612574565b635b19e4bb60e01b5f5260045ffd5b612e4f915060203d602011612123576121158183612eaf565b5f61254a565b600435906001600160a01b0382168203612b8157565b35906001600160a01b0382168203612b8157565b61014081019081106001600160401b03821117612e9b57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117612e9b57604052565b6001600160401b038111612e9b57601f01601f191660200190565b6004359065ffffffffffff82168203612b8157565b6024359065ffffffffffff82168203612b8157565b90602080835192838152019201905f5b818110612f325750505090565b82516001600160a01b0316845260209384019390920191600101612f25565b6001600160401b038111612e9b5760051b60200190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6101e4356001600160a01b0381168103612b815790565b610204356001600160a01b0381168103612b815790565b356001600160a01b0381168103612b815790565b903590601e1981360301821215612b8157018035906001600160401b038211612b8157602001918160061b36038313612b8157565b91908110156130135760061b0190565b634e487b7160e01b5f52603260045260245ffd5b90816020910312612b8157516001600160a01b0381168103612b815790565b90816020910312612b81575190565b9065ffffffffffff8091169116019065ffffffffffff821161307357565b634e487b7160e01b5f52601160045260245ffd5b90816020910312612b8157518015158103612b815790565b80518210156130135760209160051b010190565b9190820180921161307357565b9181156132cd576130d08361331c565b928151818111156132c4575f5f198201828111925b8083106131eb57505050506001945f1982019082821161307357613109828761309f565b5183975b85518910156131dd57816131218a8a61309f565b510361313d57600181018091116130735760019098019761310d565b9395975050909294505b60018211613158575b505050815290565b604051602081019165ffffffffffff60d01b9060d01b16825260068152613180602682612eaf565b5190209080156131c9576131959106836130b3565b5f198101908111613073576131c0906001600160a01b03906131b7908661309f565b5116918461309f565b525f8080613150565b634e487b7160e01b5f52601260045260245ffd5b939597505090929450613147565b9296958792959891945f935b613073578685035f1901868111613073578410156132b157613219848961309f565b51600185019485811161307357858c826001946132378f9a8f61309f565b5111613248575b50505001936131f7565b6132a8918d6132788361325b878461309f565b5192613267828261309f565b51613272898361309f565b5261309f565b52858060a01b03613289858361309f565b511693613272878060a01b0361329f858561309f565b5116918361309f565b525f8c8261323e565b94919895600191979894935001916130e5565b50509150915090565b6314f867c760e21b5f5260045ffd5b61331a906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283612eaf565b565b906133268261372b565b60125f516020613c2f5f395f51905f52540180549261334484612f51565b916133526040519384612eaf565b848352601f1961336186612f51565b0136602085013761337185612f51565b9461337f6040519687612eaf565b808652601f1961338e82612f51565b013660208801375f925f925b8284106133ae575050505080825283529190565b909192936133e36133ea846133c388866136da565b93909365ffffffffffff81169165ffffffffffff8260301c169160601c90565b50906137b5565b15613433578361340f916133fe848a61309f565b6001600160a01b038216905261380e565b613419828a61309f565b526001810180911161307357600190945b0192919061339a565b509360019061342a565b90613469816133e361102e60125f516020613c2f5f395f51905f52540160018060a01b038716906139fc565b1561347a576134779161380e565b90565b50505f90565b6001600160a01b031680156134de575f516020613bef5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b604051632474521560e21b81525f600482015233602482015290602090829060449082906001600160a01b03165afa908115612d13575f91613545575b501561353657565b630e7fea9d60e01b5f5260045ffd5b61355e915060203d602011612123576121158183612eaf565b5f61352e565b90816020910312612b8157516001600160401b0381168103612b815790565b90816020910312612b81575165ffffffffffff81168103612b815790565b65ffffffffffff916135bf61102e6001600160a01b038316846139fc565b9194909416938415908115613619575b5061360a576136079365ffffffffffff60301b6135eb42613988565b60301b161760609190911b6001600160601b0319161791613709565b50565b633f54562b60e11b5f5260045ffd5b65ffffffffffff91501615155f6135cf565b65ffffffffffff9161364961102e6001600160a01b038316846139fc565b9490911615159081613696575b50613687576136079265ffffffffffff61366f42613988565b1660609190911b6001600160601b0319161791613709565b637952fbad60e11b5f5260045ffd5b65ffffffffffff915016155f613656565b5f516020613bef5f395f51905f52546001600160a01b031633036136c757565b63118cdaa760e01b5f523360045260245ffd5b91906136e860029184613a53565b90549060031b1c92835f520160205260405f20549160018060a01b03169190565b613477929160018060a01b031691825f526002820160205260405f2055613ba1565b5f516020613c2f5f395f51905f52549065ffffffffffff61374b42613988565b1665ffffffffffff8216101561379e57613782915465ffffffffffff808260601c169160901c168082105f146137ad575090613055565b65ffffffffffff8061379342613988565b169116111561379e57565b63686c69fd60e01b5f5260045ffd5b905090613055565b65ffffffffffff16801515929190836137fb575b50826137d457505090565b65ffffffffffff16801592509082156137ec57505090565b65ffffffffffff161115905090565b65ffffffffffff8316101592505f6137c9565b5f516020613c2f5f395f51905f52546015810180546004909201545f95948694602093869391905b868810613847575050505050505050565b90919293949596986133e3613860866133c38d866136da565b1561397e57604051630ce9b79360e41b8152908890829060049082906001600160a01b03165afa908115612d13576138fc9189915f91613961575b50604051906138aa8383612eaf565b5f825289368484013760405163e02f693760e01b8152600481018990526001600160a01b038816602482015265ffffffffffff8a16604482015260806064820152938492839182916084830190612f68565b03916001600160a01b03165afa908115612d13575f91613933575b50613924906001926130b3565b995b0196959493929190613836565b90508781813d831161395a575b61394a8183612eaf565b81010312612b8157516001613917565b503d613940565b6139789150823d84116107c4576107b68183612eaf565b5f61389b565b5098600190613926565b65ffffffffffff81116139a05765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b9061347791815f52600281016020525f6040812055613a68565b60ff5f516020613c4f5f395f51905f525460401c16156139ed57565b631afcd79f60e31b5f5260045ffd5b90805f526002820160205260405f2054918183159182613a33575b5050613a21575090565b63015ab34360e11b5f5260045260245ffd5b613a4b92506001915f520160205260405f2054151590565b15815f613a17565b8054821015613013575f5260205f2001905f90565b906001820191815f528260205260405f20548015155f14613b3b575f1981018181116130735782545f1981019190821161307357818103613af0575b50505080548015613adc575f190190613abd8282613a53565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b613b26613b00613b109386613a53565b90549060031b1c92839286613a53565b819391549060031b91821b915f19901b19161790565b90555f528360205260405f20555f8080613aa4565b505050505f90565b90613b675750805115613b5857602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613b98575b613b78575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613b70565b5f82815260018201602052604090205461347a57805490600160401b821015612e9b5782613bd9613b10846001809601855584613a53565b90558054925f520160205260405f205560019056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"2376:21827:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;7849:17;;2376:21827;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;2357:1:29;2376:21827:160;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;2376:21827:160;;;;;;;;;;;;;;;9103:10;9074:20;-1:-1:-1;;;;;;;;;;;2376:21827:160;9074:20;9103:10;;;:::i;2376:21827::-;;;;;;;-1:-1:-1;;2376:21827:160;;;;;13809:372;2376:21827;;:::i;:::-;;;:::i;:::-;22945:2;;;;:::i;:::-;13809:372;:::i;:::-;2376:21827;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;7536:21;;2376:21827;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7422:30:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;7422:30;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;7641:21;2376:21827;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7296:34:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;7296:34;2376:21827;;;;;;;;;;;;;;;;;;;;;;7747:22;-1:-1:-1;;;;;;;;;;;2376:21827:160;7747:22;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;:::i;:::-;;;;;;7981:20;;;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;16223:38;;2376:21827;-1:-1:-1;;;;;2376:21827:160;16209:10;:52;16205:108;;2376:21827;;;;16328:9;16339:18;;;;;;2376:21827;;;16359:3;16411:10;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;8806:28:86;;16441:17:160;;-1:-1:-1;;;;;16468:11:160;2376:21827;16468:11;:::i;:::-;2376:21827;8806:28:86;5197:14;5101:129;-1:-1:-1;2376:21827:160;5197:14:86;2376:21827:160;;;-1:-1:-1;2376:21827:160;;5197:26:86;;5101:129;;8806:28;16440:40:160;16436:106;;2376:21827;;-1:-1:-1;;;;;16576:11:160;;;:::i;:::-;2376:21827;;;;;;;;;;16569:29;;;;;;;;;2376:21827;16569:29;;;;;;;16359:3;2376:21827;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;16556:83;;16613:11;2376:21827;;16556:83;;2376:21827;;;;;;;;;;;:::i;:::-;16556:83;;-1:-1:-1;;;;;2376:21827:160;16556:83;;;;;;;2376:21827;16556:83;;;16359:3;;2376:21827;16328:9;;16556:83;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;2376:21827;;;;;;;;;16569:29;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2376:21827;;;;;;;;;16436:106;-1:-1:-1;;;16507:20:160;;2376:21827;15830:20;16507;16205:108;-1:-1:-1;;;16284:18:160;;2376:21827;8477:18;16284;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;4301:16:30;2376:21827:160;;4724:16:30;;:34;;;;2376:21827:160;4803:1:30;4788:16;:50;;;;2376:21827:160;4853:13:30;:30;;;;2376:21827:160;4849:91:30;;;2376:21827:160;4803:1:30;-1:-1:-1;;;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;4977:67:30;;2376:21827:160;;;-1:-1:-1;;;;;2376:21827:160;;;;;;6959:1:30;;6891:76;;:::i;:::-;;;:::i;6959:1::-;6891:76;;:::i;:::-;2376:21827:160;;;;;;;;:::i;:::-;;;;;;;;;;2303:62:29;;:::i;:::-;1800:178:73;;;;-1:-1:-1;;1800:178:73;;;2376:21827:160;1800:178:73;;-1:-1:-1;;1800:178:73;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;3446:19;2376:21827;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;3501:29;2376:21827;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3564:27;2376:21827;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3622:24;2376:21827;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3676:23;2376:21827;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3736:30;2376:21827;;;;;;;;;4803:1:30;3709:24:160;;2376:21827;;;;;;;;;;3776:27;;;2376:21827;3806:33;2376:21827;;;3877:31;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;-1:-1:-1;;;;;3849:25:160;;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;;;;;;;3942:27;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;4017:18;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;4002:12;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;4068:4;3564:27;2376:21827;;4045:12;;2376:21827;4130:19;2376:21827;4114:13;;;2376:21827;4171:14;2376:21827;;;;;;;;4160:8;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;4210:17;2376:21827;;;;;;;;4196:11;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;3033:1;;:::i;:::-;;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;3033:1;;:::i;:::-;;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;4255:33;;:::i;:::-;2376:21827;4238:69;;;;;2376:21827;;;;;;;;;;;;;4238:69;;;;;;;;;;2376:21827;-1:-1:-1;;;;;;4343:35:160;;:::i;:::-;2376:21827;4317:91;;;;;2376:21827;;;3446:19;2376:21827;;;;;;;;;4317:91;;4068:4;2376:21827;4317:91;;2376:21827;4317:91;;;;;;;;2376:21827;;;;;;;;17713:17;2376:21827;;;;;;;;;4803:1:30;2376:21827:160;;;;;;;;;;;18102:44;;2376:21827;;;;;3564:27;2376:21827;;18377:48;2376:21827;;;;;;;;18665:45;2376:21827;;3736:30;2376:21827;;;;18840:21;;2376:21827;;;;;;19112:28;;2376:21827;;;19219:44;;;;:::i;:::-;2376:21827;19219:71;2376:21827;;3849:25;2376:21827;;19561:32;2376:21827;;5064:101:30;;2376:21827:160;;;5064:101:30;2376:21827:160;5140:14:30;2376:21827:160;-1:-1:-1;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;4803:1:30;2376:21827:160;;5140:14:30;2376:21827:160;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;3033:1;2376:21827;;3446:19;2376:21827;;;-1:-1:-1;;;2376:21827:160;;;;;4317:91;;;;;:::i;:::-;2376:21827;;4317:91;;;;2376:21827;;;;4317:91;2376:21827;;;;;;;;;4238:69;;;;;:::i;:::-;2376:21827;;4238:69;;;;2376:21827;;;;;;;;;;;;4977:67:30;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;4977:67:30;;4849:91;-1:-1:-1;;;4906:23:30;;2376:21827:160;6496:23:30;4906;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;2376:21827:160;;;;;;;;;;;;;;7164:36;-1:-1:-1;;;;;;;;;;;2376:21827:160;7164:36;2376:21827;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;9356:11;;;;3505:23:170;23973:47:85;2376:21827:160;9356:11;23973:47:85;:::i;:::-;2376:21827:160;;;;;;1227:2:170;2376:21827:160;;;1249:2:170;2376:21827:160;941:319:170;;3505:23;-1:-1:-1;2376:21827:160;;;9401:17;;2376:21827;-1:-1:-1;9401:76:160;;;;2376:21827;9397:144;;;;21805:50:85;;;;:::i;:::-;;2376:21827:160;;9397:144;-1:-1:-1;;;9500:30:160;;2376:21827;9500:30;;9401:76;2376:21827;837:15:87;;;9441:36:160;837:15:87;;;819:34;837:15;819:34;:::i;:::-;2376:21827:160;;;;;9441:36;;:::i;:::-;2376:21827;;;9422:55;9401:76;;;;2376:21827;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;11781:5;2376:21827;;:::i;:::-;23990:5;;;:::i;:::-;11756:17;-1:-1:-1;;;;;;;;;;;2376:21827:160;11756:17;11781:5;:::i;2376:21827::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;8425:29;;2376:21827;;8425:29;;2376:21827;-1:-1:-1;;;;;2376:21827:160;8411:10;:43;8407:99;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;2376:21827:160;10308:8;;;;2376:21827;;;;;;;;;10294:10;:22;10290:71;;2376:21827;;;10396:12;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;10375:33;10371:90;;10471:30;;;;;;2376:21827;10516:13;;10670:8;2376:21827;10906:13;10670:8;;;10906:13;;2376:21827;;;;10511:677;10568:3;10535:24;;2376:21827;;10531:35;;;;;10623:27;;;;:::i;:::-;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;-1:-1:-1;2376:21827:160;;;;5197:14:86;;2376:21827:160;;;;;;5197:26:86;10665:99:160;;2376:21827;;;;10884:58;2376:21827;;;;3710:23:170;2376:21827:160;23973:47:85;2376:21827:160;;;;;;;;;23973:47:85;;:::i;3710:23:170:-;2376:21827:160;;;;-1:-1:-1;;;;;2376:21827:160;;;;;-1:-1:-1;2376:21827:160;-1:-1:-1;2376:21827:160;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;10884:58;;;;;2376:21827;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;;;;;:::i;:::-;10884:58;2376:21827;;10884:58;;;;;;:::i;:::-;2376:21827;;;;11041:14;;;2376:21827;;11041:14;;2376:21827;;11041:14;;-1:-1:-1;;;;;2376:21827:160;;;;;10956:106;;;;;2376:21827;;;;;;;;;;;;;;;;;;;10956:106;;2376:21827;10956:106;;2376:21827;;;;;;;;;;;;;;;;;;;:::i;:::-;10956:106;;;;;;;;;;;;;10568:3;2376:21827;;;11097:80;2376:21827;;;;;;;;;;;;;;;11129:47;;;2376:21827;;;;;;11129:47;;;;;;:::i;:::-;11097:80;:::i;:::-;10568:3;2376:21827;10516:13;;;10956:106;;;;;:::i;:::-;2376:21827;;10956:106;;;;;2376:21827;;;;;;;;;10956:106;2376:21827;;;10531:35;;11215:93;10531:35;;;2376:21827;;;;;11247:60;;;;2376:21827;;;;;;;;;;;;11247:60;;;11129:47;11247:60;;:::i;11215:93::-;2376:21827;;;;;11205:104;2376:21827;;;;;;10371:90;-1:-1:-1;;;10431:19:160;;2376:21827;20113:19;10431;10290:71;-1:-1:-1;;;10339:11:160;;2376:21827;9799:11;10339;2376:21827;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;9768:8;;;2376:21827;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;9754:10;:22;;;9750:71;;9844:12;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;9835:21;;9831:78;;9943:27;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;9919:101;;;;;;2376:21827;;;;;;;;;;;;9919:101;;2376:21827;9919:101;;2376:21827;;;;;;;;;;;;;;;9919:101;;;;;;;;2376:21827;;;;;;10048:30;;;;2376:21827;;;;;;;;10048:30;;;2376:21827;10048:30;;:::i;:::-;2376:21827;10038:41;;2376:21827;;;;;;9919:101;;;;;;:::i;:::-;2376:21827;;9919:101;;;;2376:21827;;;;;;;;;9831:78;-1:-1:-1;;;9879:19:160;;2376:21827;20113:19;9879;9750:71;-1:-1:-1;;;9799:11:160;;2376:21827;9799:11;;2376:21827;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;-1:-1:-1;;;;;2376:21827:160;3975:40:29;2376:21827:160;;3975:40:29;2376:21827:160;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;8157:30;;2376:21827;;8157:30;;2376:21827;-1:-1:-1;;;;;2376:21827:160;8143:10;:44;8139:101;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;8139:101;-1:-1:-1;;;8210:19:160;;2376:21827;15350:19;8210;2376:21827;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;6429:44:30;;;;;2376:21827:160;6425:105:30;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;2376:21827:160;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;6959:1:30;;-1:-1:-1;;;;;2376:21827:160;6891:76:30;;:::i;6959:1::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;:::i;:::-;;;;;;;;;;2303:62:29;;:::i;:::-;1800:178:73;;;;-1:-1:-1;;1800:178:73;;;2376:21827:160;1800:178:73;;-1:-1:-1;;1800:178:73;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;-1:-1:-1;;;2376:21827:160;-1:-1:-1;;;;;;2376:21827:160;;;;;;;1800:178:73;2376:21827:160;;;;-1:-1:-1;;;;2376:21827:160;-1:-1:-1;;;2376:21827:160;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;-1:-1:-1;;;2376:21827:160;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;-1:-1:-1;;;2376:21827:160;;;;;;;6591:4:30;5155:33:160;;2376:21827;;;6591:4:30;5119:33:160;;2376:21827;;;;;;;;;;4573:1;5237:36;;2376:21827;4573:1;5198:36;;2376:21827;5364:63;5320:34;;;-1:-1:-1;;;;;2376:21827:160;;;;5283:34;;5320;5283;;2376:21827;;;;;;;;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;5364:63;5461:21;;;;2376:21827;5437:21;;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;;5516:21;;;2376:21827;5492:21;;;2376:21827;5572:22;;;;2376:21827;5547:22;;;2376:21827;5624:17;;;;2376:21827;5604:17;;;2376:21827;;;;;;;;;;;5674:20;5651;;;;5674;;2376:21827;;;;;;-1:-1:-1;;5729:20:160;5850;;;;5710:13;5729:20;;;;5710:13;5760:3;2376:21827;;5725:33;;;;;5810:26;5850:36;5810:26;6591:4:30;5810:26:160;;;:::i;:::-;5850:36;;;:::i;:::-;;2376:21827;5710:13;;5725:33;-1:-1:-1;5931:17:160;6046;;;;5725:33;5931:17;5725:33;5959:3;2376:21827;;5927:30;;;;;6009:23;6046:33;6009:23;6591:4:30;6009:23:160;;;:::i;:::-;6046:33;;;:::i;:::-;;2376:21827;5912:13;;5927:30;;-1:-1:-1;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;;;;;;2376:21827:160;6654:20:30;2376:21827:160;;;4573:1;2376:21827;;6654:20:30;2376:21827:160;;;;;;-1:-1:-1;;;;;;2376:21827:160;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;6425:105:30;-1:-1:-1;;;6496:23:30;;2376:21827:160;;6496:23:30;6429:44;4573:1:160;2376:21827;;-1:-1:-1;;;;;2376:21827:160;6448:25:30;;6429:44;;;2376:21827:160;;;;;;;;;;;;;4824:6:60;-1:-1:-1;;;;;2376:21827:160;4815:4:60;4807:23;4803:145;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;4803:145:60;-1:-1:-1;;;4908:29:60;;2376:21827:160;;4908:29:60;2376:21827:160;-1:-1:-1;2376:21827:160;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4401:6:60;2376:21827:160;4392:4:60;4384:23;;;:120;;;;2376:21827:160;4367:251:60;;;2303:62:29;;:::i;:::-;2376:21827:160;;-1:-1:-1;;;5865:52:60;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;5865:52:60;;;;;;;2376:21827:160;-1:-1:-1;5861:437:60;;-1:-1:-1;;;6227:60:60;;2376:21827:160;;;;;1805:47:53;6227:60:60;5861:437;5959:40;;-1:-1:-1;;;;;;;;;;;5959:40:60;;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;;2407:36:53;2376:21827:160;;2407:36:53;2376:21827:160;;2458:15:53;:11;;4107:55:66;4065:25;;;;;;;;2376:21827:160;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;2376:21827:160:-;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;;6159:70;;2376:21827:160;;6159:70:53;-1:-1:-1;;;6199:19:53;;2376:21827:160;;6199:19:53;1744:119;-1:-1:-1;;;1805:47:53;;2376:21827:160;;;1805:47:53;;5955:120:60;-1:-1:-1;;;6026:34:60;;2376:21827:160;;;6026:34:60;;5865:52;;;;2376:21827:160;5865:52:60;;2376:21827:160;5865:52:60;;;;;;2376:21827:160;5865:52:60;;;:::i;:::-;;;2376:21827:160;;;;;5865:52:60;;;;;;;-1:-1:-1;5865:52:60;;4367:251;-1:-1:-1;;;4578:29:60;;2376:21827:160;4578:29:60;;4384:120;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;4462:42:60;;;-1:-1:-1;4384:120:60;;;2376:21827:160;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;9200:10;9172:20;-1:-1:-1;;;;;;;;;;;2376:21827:160;9172:20;9200:10;;;:::i;2376:21827::-;;;;;;;-1:-1:-1;;2376:21827:160;;;;11664:5;2376:21827;;:::i;:::-;23990:5;;;:::i;:::-;11638:17;-1:-1:-1;;;;;;;;;;;2376:21827:160;11638:17;11664:5;:::i;2376:21827::-;;;;;;;;;;;;;;;7032:33;-1:-1:-1;;;;;;;;;;;2376:21827:160;7032:33;2376:21827;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;8720:28;;;2376:21827;;;-1:-1:-1;;;8710:60:160;;8759:10;2376:21827;8710:60;;2376:21827;;;;;;8710:60;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;8710:60;;;;;;;;;;;2376:21827;8709:61;;8705:121;;8854:24;;;2376:21827;;;-1:-1:-1;;;8840:76:160;;8759:10;2376:21827;8840:76;;2376:21827;8910:4;8710:60;2376:21827;;;;;;;;8840:76;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;8840:76;;;;;;;;;;;2376:21827;8839:77;;8835:137;;2166:50:170;837:15:87;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;8759:10;8982:11;8759:10;8982:11;;2166:50:170;:::i;:::-;2165:51;2161:103;;2376:21827:160;;2161:103:170;-1:-1:-1;;;2239:14:170;;2376:21827:160;;2239:14:170;8835:137:160;-1:-1:-1;;;8939:22:160;;2376:21827;8939:22;;8840:76;;;;2376:21827;8840:76;2376:21827;8840:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2376:21827;;;;;;;;;8705:121;-1:-1:-1;;;8793:22:160;;2376:21827;8793:22;;8710:60;;;;2376:21827;8710:60;2376:21827;8710:60;;;;;;;:::i;:::-;;;;2376:21827;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;23990:5;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;11943:8;;;;3505:23:170;23973:47:85;2376:21827:160;11943:8;23973:47:85;:::i;3505:23:170:-;-1:-1:-1;2376:21827:160;;;11982:17;;2376:21827;-1:-1:-1;11982:73:160;;;;2376:21827;11978:138;;;;21805:50:85;;;;:::i;11978:138:160:-;-1:-1:-1;;;12078:27:160;;2376:21827;12078:27;;11982:73;2376:21827;837:15:87;;;12022:33:160;837:15:87;;;819:34;837:15;819:34;:::i;:::-;2376:21827:160;;;;;12022:33;;:::i;:::-;2376:21827;;;12003:52;11982:73;;;;2376:21827;;;;;;;-1:-1:-1;;2376:21827:160;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;15297:30;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;15283:10;:44;15279:101;;15395:9;2376:21827;;15390:726;15423:3;2376:21827;;;;;15406:15;;;;;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;8806:28:86;-1:-1:-1;;;;;15520:18:160;2376:21827;;;15520:18;:::i;:::-;2376:21827;-1:-1:-1;2376:21827:160;;;5197:14:86;;;2376:21827:160;;;;;;5197:26:86;;;5101:129;8806:28;15498:41:160;15494:110;;15623:9;15663:3;15638:16;;;;2376:21827;;;15638:16;:::i;:::-;15634:27;;;;;;;15722:19;15638:16;15722;15638;;;2376:21827;;;15722:16;:::i;:::-;:19;;:::i;:::-;8806:28:86;-1:-1:-1;;;;;15783:15:160;;;:::i;:::-;2376:21827;-1:-1:-1;2376:21827:160;;;5197:14:86;;;2376:21827:160;;;;;;5197:26:86;;;5101:129;8806:28;15764:35:160;15760:109;;2376:21827;;;;;;-1:-1:-1;;;;;15912:15:160;2376:21827;15912:15;:::i;:::-;2376:21827;;;;;;;;;;15905:33;;;;;;;;;;;;;15663:3;16012:12;2376:21827;16012:12;;2376:21827;;16026:18;2376:21827;;;16026:18;:::i;:::-;16064:12;;;2376:21827;;;;;;;;16064:12;;;;2376:21827;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;;;;;;;;;;;;;;;;;15956:135;;2376:21827;15956:135;;2376:21827;;;;;;;;;;;16046:16;2376:21827;;;;;;16064:12;;;2376:21827;;;;;;;;;;;;;;;;:::i;:::-;15956:135;;-1:-1:-1;;;;;2376:21827:160;15956:135;;;;;;;2376:21827;15956:135;;;15663:3;;2376:21827;15623:9;;15956:135;;;;;;;;;;;;;:::i;:::-;;;;;15905:33;;;;;;;;;;;;;;;:::i;:::-;;;;;15634:27;;;2376:21827;15634:27;;2376:21827;15395:9;;;15494:110;-1:-1:-1;;;15566:23:160;;2376:21827;15566:23;;15406:15;;2376:21827;;15279:101;-1:-1:-1;;;15350:19:160;;2376:21827;15350:19;;2376:21827;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;23990:5;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;19801:11;;;2376:21827;;;-1:-1:-1;;;19791:53:160;;-1:-1:-1;;;;;2376:21827:160;;;;19791:53;;2376:21827;;;;;;;;;;;;;;;19791:53;;;;;;;2376:21827;19791:53;;;2376:21827;19790:54;;19786:109;;2376:21827;;-1:-1:-1;;;19909:35:160;;2376:21827;;;;19909:35;;;;;;;;2376:21827;19909:35;;;2376:21827;19948:25;;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;19909:64;19905:128;;2376:21827;;-1:-1:-1;;;20047:27:160;;2376:21827;;;;20047:27;;;;;;;;2376:21827;20047:27;;;2376:21827;-1:-1:-1;20078:12:160;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;20047:43;20043:100;;2376:21827;;-1:-1:-1;;;20209:30:160;;2376:21827;;;;20209:30;;;;;;;;2376:21827;20209:30;;;2376:21827;;;;;;;;;;;20253:44;;;20249:107;;2376:21827;;-1:-1:-1;;;20404:39:160;;2376:21827;;;;20404:39;;;;;;;;2376:21827;20404:39;;;2376:21827;20403:40;;20399:103;;2376:21827;;-1:-1:-1;;;20554:26:160;;2376:21827;;;;20554:26;;;;;;;;2376:21827;20554:26;;;2376:21827;-1:-1:-1;2376:21827:160;20621:12;;;2376:21827;;;;-1:-1:-1;;;20595:39:160;;;;;2376:21827;20621:12;;-1:-1:-1;;;;;2376:21827:160;;;;;;;20595:39;;;;;;;2376:21827;20595:39;;;2376:21827;-1:-1:-1;20595:60:160;20591:158;;2376:21827;;;;;;;;;;;;;20778:32;;;;;;;;;;;;;2376:21827;-1:-1:-1;;;;;;2376:21827:160;17543:82;;2376:21827;;-1:-1:-1;;;20858:37:160;;2376:21827;;;;20858:37;;;;;;;;;;;;2376:21827;20857:38;;20853:99;;2376:21827;;-1:-1:-1;;;20980:24:160;;2376:21827;;;;20980:24;;;;;;;;;;;;2376:21827;-1:-1:-1;2376:21827:160;;-1:-1:-1;;;21018:23:160;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;21018:23;;;;;;;;;;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;21018:48;21014:111;;2376:21827;;-1:-1:-1;;;21139:36:160;;2376:21827;;;;21139:36;;;;;;;;;;;;2376:21827;21135:98;;;2376:21827;;-1:-1:-1;;;21265:36:160;;2376:21827;;;;21265:36;;;;;;;;;;;;2376:21827;;;;;;;;;;;21315:32;21311:92;;21417:39;2376:21827;21432:24;;;;;2376:21827;;21417:39;;:::i;:::-;2376:21827;21417:60;21413:119;;2376:21827;;-1:-1:-1;;;21546:46:160;;2376:21827;;;;21546:46;;;;;;;;;;;;2376:21827;21595:27;;;;2376:21827;-1:-1:-1;21542:139:160;;2376:21827;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;;;;;;;;;;;;;;;;;21710:58;;2376:21827;21710:58;;2376:21827;;;;;;;;;;;:::i;:::-;21710:58;;;;;;;;;;;;;;2376:21827;-1:-1:-1;;;;;;2376:21827:160;21782:22;;;-1:-1:-1;21874:24:160;;2376:21827;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;:::i;:::-;;;;;;;;;21820:93;;;;;2376:21827;;;;;;;;;;;;;;;;;21820:93;;;2376:21827;21820:93;;2376:21827;;;;;;;;;;;;;;;:::i;:::-;21820:93;;;;;;;;;;;;;21778:299;;;;2376:21827;;-1:-1:-1;;;22163:23:160;;;2376:21827;;;22163:23;;;;;;;;;;;;21778:299;-1:-1:-1;;;;;;2376:21827:160;22163:37;22159:94;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;22369:41;;;2376:21827;;;;;;;;;;;22359:71;;;2376:21827;22359:71;;2376:21827;22359:71;;;;;;;;;;;21778:299;22358:72;;22354:135;;2376:21827;;-1:-1:-1;;;22503:39:160;;;2376:21827;;;22503:39;;;;;;;;;;;;21778:299;-1:-1:-1;;;;;;2376:21827:160;22503:49;22499:114;;2376:21827;;-1:-1:-1;;;22627:41:160;;;2376:21827;;;22627:41;;;;;;;;;-1:-1:-1;;;;;22627:41:160;21595:27;22627:41;;;;;21778:299;2376:21827;;;22627:46;22623:118;;11500:17;2166:50:170;837:15:87;;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;1740:2:170;2376:21827:160;;;;-1:-1:-1;;;;;;2376:21827:160;1667:76:170;;11500:17:160;2166:50:170;:::i;22623:118:160:-;-1:-1:-1;;;22696:34:160;;2376:21827;22696:34;;22627:41;;;;;;-1:-1:-1;22627:41:160;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;2376:21827;;;;;;;;;22499:114;-1:-1:-1;;;22575:27:160;;2376:21827;22575:27;;22503:39;;;;;;;;;;;;;;:::i;:::-;;;;;2376:21827;;;;;;;;;22354:135;-1:-1:-1;;;22453:25:160;;2376:21827;22453:25;;22359:71;;;;;;;;;;;;;;:::i;:::-;;;;22159:94;-1:-1:-1;;;22223:19:160;;2376:21827;22223:19;;22163:23;;;;;;;;;;;;;;:::i;:::-;;;;21820:93;;;;;:::i;:::-;2376:21827;;21820:93;;;;21778:299;21946:24;;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;21934:36;;-1:-1:-1;21778:299:160;;-1:-1:-1;21930:147:160;-1:-1:-1;;;22048:18:160;;2376:21827;22048:18;;21710:58;;;;;;;;;;;;;;:::i;:::-;;;;21542:139;-1:-1:-1;;;21645:25:160;;2376:21827;21645:25;;21546:46;;;2376:21827;21546:46;;2376:21827;21546:46;;;;;;2376:21827;21546:46;;;:::i;:::-;;;2376:21827;;;;;21546:46;;;2376:21827;-1:-1:-1;2376:21827:160;;21546:46;;;-1:-1:-1;21546:46:160;;21413:119;-1:-1:-1;;;21500:21:160;;2376:21827;21500:21;;21311:92;-1:-1:-1;;;21370:22:160;;2376:21827;21370:22;;21265:36;;;;2376:21827;21265:36;2376:21827;21265:36;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;21135:98;-1:-1:-1;;;21198:24:160;;2376:21827;21198:24;;21139:36;;;;2376:21827;21139:36;2376:21827;21139:36;;;;;;;:::i;:::-;;;;21014:111;-1:-1:-1;;;21089:25:160;;2376:21827;21089:25;;21018:23;-1:-1:-1;;;;;21018:23:160;;;;;;2376:21827;21018:23;2376:21827;21018:23;;;;;;;:::i;:::-;;;;;;20980:24;;;;2376:21827;20980:24;2376:21827;20980:24;;;;;;;:::i;:::-;;;;20853:99;-1:-1:-1;;;20918:23:160;;2376:21827;20918:23;;20858:37;;;;2376:21827;20858:37;2376:21827;20858:37;;;;;;;:::i;:::-;;;;17543:82;-1:-1:-1;;;;;;17588:26:160;;2376:21827;17588:26;;20778:32;;;;2376:21827;20778:32;2376:21827;20778:32;;;;;;;:::i;:::-;;;;20591:158;20671:67;;;;;2376:21827;;-1:-1:-1;;;20671:67:160;;2376:21827;;20671:67;;2376:21827;;;-1:-1:-1;;2376:21827:160;;;;;20671:67;2376:21827;;20671:67;;;;;;;;;20591:158;;;;20671:67;;;;;2376:21827;20671:67;;:::i;:::-;2376:21827;;;20671:67;;;2376:21827;;;;;;;;;20595:39;;;2376:21827;20595:39;;2376:21827;20595:39;;;;;;2376:21827;20595:39;;;:::i;:::-;;;2376:21827;;;;;20595:39;;;;;;-1:-1:-1;20595:39:160;;20554:26;;;;2376:21827;20554:26;2376:21827;20554:26;;;;;;;:::i;:::-;;;;20399:103;20466:25;;;2376:21827;20466:25;2376:21827;;20466:25;20404:39;;;;2376:21827;20404:39;2376:21827;20404:39;;;;;;;:::i;:::-;;;;20249:107;20320:25;;;2376:21827;20320:25;2376:21827;;20320:25;20209:30;;;;2376:21827;20209:30;2376:21827;20209:30;;;;;;;:::i;:::-;;;;20043:100;20113:19;;;2376:21827;20113:19;2376:21827;;20113:19;20047:27;;;;2376:21827;20047:27;2376:21827;20047:27;;;;;;;:::i;:::-;;;;19905:128;19996:26;;;2376:21827;19996:26;2376:21827;;19996:26;19909:35;;;;2376:21827;19909:35;2376:21827;19909:35;;;;;;;:::i;:::-;;;;19786:109;19867:17;;;2376:21827;19867:17;2376:21827;;19867:17;19791:53;;;;2376:21827;19791:53;2376:21827;19791:53;;;;;;;:::i;:::-;;;;2376:21827;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2376:21827:160;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;-1:-1:-1;2376:21827:160;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;-1:-1:-1;;;;;2376:21827:160;;;;;;-1:-1:-1;;2376:21827:160;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;-1:-1:-1;;2376:21827:160;;;;:::o;:::-;3033:1;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;3033:1;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;12161:1642::-;;12278:17;;2376:21827;;12407:29;;;:::i;:::-;2376:21827;;;12451:39;;;;12447:92;;12294:1;20638:17;;2376:21827;;;;;12627:368;12647:5;;;;;;13062:26;;;;12701:1;20638:17;;;2376:21827;;;;;;;;13118:25;;;;:::i;:::-;2376:21827;13158:25;13153:188;13213:3;2376:21827;;13185:26;;;;;13236:9;;;;;:::i;:::-;2376:21827;13236:22;13232:66;;12701:1;2376:21827;;;;;;;12701:1;13311:19;13213:3;2376:21827;13158:25;;;13232:66;13278:5;;;;;;;;;13153:188;12701:1;13355:18;;13351:316;;13153:188;13677:87;;;;;12161:1642;:::o;13351:316::-;2376:21827;;13518:20;;;2376:21827;;;;;;;;;;13518:20;;;;;;;:::i;:::-;2376:21827;13508:31;;2376:21827;;;;;13624:27;2376:21827;;13624:27;;:::i;:::-;-1:-1:-1;;2376:21827:160;;;;;;;13571:85;;-1:-1:-1;;;;;2376:21827:160;13608:48;;;;:::i;:::-;2376:21827;;;13571:85;;:::i;:::-;2376:21827;13351:316;;;;;2376:21827;;;;12294:1;2376:21827;;;;;12294:1;2376:21827;13185:26;;;;;;;;;;;;12654:3;12678:13;;;;;;;;;12294:1;12673:312;12708:3;2376:21827;;;;;-1:-1:-1;;2376:21827:160;;;;;;12693:13;;;;;12735:9;;;;:::i;:::-;2376:21827;12701:1;2376:21827;;;;;;;;12747:13;;;12701:1;12747:13;;;;;;:::i;:::-;2376:21827;-1:-1:-1;12731:240:160;;12708:3;;;;2376:21827;12678:13;;;12731:240;12861:91;2376:21827;12814:13;12784:55;12814:13;;;;;:::i;:::-;2376:21827;12829:9;;;;;:::i;:::-;2376:21827;12784:55;;;;:::i;:::-;2376:21827;12784:55;:::i;:::-;2376:21827;;;;;;12909:22;;;;:::i;:::-;2376:21827;;;12861:91;2376:21827;;;;;12933:18;;;;:::i;:::-;2376:21827;;;12861:91;;:::i;:::-;2376:21827;12731:240;;;;;12693:13;;;;;12701:1;12693:13;;;;;;2376:21827;12632:13;;;12447:92;12506:22;;;;;;;:::o;2376:21827::-;;;;12294:1;2376:21827;;12294:1;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;:::i;:::-;:::o;14224:940::-;;22945:2;;;:::i;:::-;14487:11;-1:-1:-1;;;;;;;;;;;2376:21827:160;14487:11;2376:21827;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;:::i;:::-;;;;;;;-1:-1:-1;14612:9:160;-1:-1:-1;14607:416:160;14623:24;;;;;;15033:125;;;;;;;;;14376:23;14224:940;:::o;14649:3::-;3215:12:170;;;;3268:14;14768:35:160;3215:12:170;;;;;:::i;:::-;3268:14;;;2376:21827:160;;;;;;1227:2:170;2376:21827:160;;;1249:2:170;2376:21827:160;941:319:170;;3268:14;14768:35:160;;;:::i;:::-;14767:36;14763:83;;14860:39;14935:47;14860:39;;;;;:::i;:::-;-1:-1:-1;;;;;2376:21827:160;;;;14935:47;:::i;:::-;14913:69;;;;:::i;:::-;2376:21827;15011:1;2376:21827;;;;;;;15011:1;14996:16;14649:3;14612:9;2376:21827;14612:9;;;;;14763:83;14823:8;;15011:1;14823:8;;;13809:372;;14031:43;2376:21827;3505:23:170;23973:47:85;13977:20:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;13977:20;2376:21827;;;;;;;23973:47:85;;:::i;14031:43:160:-;14030:44;14026:83;;14127:47;;;:::i;:::-;13809:372;:::o;14026:83::-;14090:8;;-1:-1:-1;14090:8:160;:::o;3405:215:29:-;-1:-1:-1;;;;;2376:21827:160;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;-1:-1:-1;;;;;2376:21827:160;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;2376:21827:160;;3509:1:29;3534:31;24020:181:160;2376:21827;;-1:-1:-1;;;24085:61:160;;2979:4;24085:61;;;2376:21827;24135:10;2979:4;;;2376:21827;;2979:4;;2376:21827;;24085:61;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;24085:61;;;;;;;2979:4;24085:61;;;24020:181;24084:62;;24080:115;;24020:181::o;24080:115::-;24169:15;;;2979:4;24169:15;24085:61;2979:4;24169:15;24085:61;;;;2979:4;24085:61;2979:4;24085:61;;;;;;;:::i;:::-;;;;2376:21827;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;2626:351:170:-;2376:21827:160;;2779:23:170;23973:47:85;-1:-1:-1;;;;;2376:21827:160;;23973:47:85;;:::i;2779:23:170:-;2376:21827:160;;;;;2817:16:170;;;:37;;;;;2626:351;2813:87;;;2910:60;837:15:87;-1:-1:-1;;;819:34:87;837:15;819:34;:::i;:::-;1716:2:170;2376:21827:160;;1667:52:170;1740:2;2376:21827:160;;;;-1:-1:-1;;;;;;2376:21827:160;1667:76:170;;2910:60;:::i;:::-;;2626:351::o;2813:87::-;2877:12;;;-1:-1:-1;2877:12:170;;-1:-1:-1;2877:12:170;2817:37;2376:21827:160;;;;2837:17:170;;2817:37;;;2276:344;2376:21827:160;;2428:23:170;23973:47:85;-1:-1:-1;;;;;2376:21827:160;;23973:47:85;;:::i;2428:23:170:-;2376:21827:160;;;;2466:16:170;;:37;;;;2276:344;2462:91;;;2563:50;837:15:87;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;1740:2:170;2376:21827:160;;;;-1:-1:-1;;;;;;2376:21827:160;1667:76:170;;2563:50;:::i;2462:91::-;2526:16;;;-1:-1:-1;2526:16:170;;-1:-1:-1;2526:16:170;2466:37;2376:21827:160;;;;2486:17:170;2466:37;;;2658:162:29;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;2376:21827:160;;-1:-1:-1;2763:40:29;23080:242:85;;;5853:18:86;5004:11:85;23080:242;5853:18:86;;:::i;:::-;2376:21827:160;;;;;;;;-1:-1:-1;2376:21827:160;5004:11:85;2376:21827:160;;;-1:-1:-1;2376:21827:160;;;;;;;;;23260:55:85;23080:242;:::o;21364:182::-;7898:23:86;21364:182:85;;2376:21827:160;;;;;;;;-1:-1:-1;2376:21827:160;3096:11:85;;;2376:21827:160;;;-1:-1:-1;2376:21827:160;;7898:23:86;:::i;22972:408:160:-;-1:-1:-1;;;;;;;;;;;2376:21827:160;837:15:87;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;;;;23076:22;;23072:80;;23284:16;2376:21827;;;;;;;;;;;;23183:42;;;:87;:42;;;:87;;23284:16;:::i;:::-;2376:21827;837:15:87;819:34;837:15;819:34;:::i;:::-;2376:21827:160;;;23284:36;;23280:94;;22972:408::o;23280:94::-;23121:20;;;-1:-1:-1;23343:20:160;;-1:-1:-1;23343:20:160;23183:87;;;;23284:16;:::i;17224:208::-;2376:21827;;17343:16;;;;17224:208;;17343:16;:37;;17224:208;17343:82;;;;17336:89;;17224:208;:::o;17343:82::-;2376:21827;;17385:17;;;-1:-1:-1;2376:21827:160;17385:39;;;;17343:82;;17224:208;:::o;17385:39::-;2376:21827;;-1:-1:-1;17406:18:160;;-1:-1:-1;17224:208:160;:::o;17343:37::-;2376:21827;;;-1:-1:-1;17363:17:160;;-1:-1:-1;17343:37:160;;;16662:556;-1:-1:-1;;;;;;;;;;;2376:21827:160;16841:8;;;2376:21827;;17125:25;17160:12;;;2376:21827;;;16662:556;2376:21827;;;;;;;16662:556;16837:21;;;;;;16662:556;;;;;;;;:::o;16860:3::-;3215:12:170;;;;;;;;3268:14;16991:53:160;3215:12:170;;;;;:::i;16991:53:160:-;16990:54;16986:101;;2376:21827;;-1:-1:-1;;;17125:25:160;;2376:21827;;;;;17125:25;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;17125:25;;;;;;;2376:21827;17125:25;;;2376:21827;17125:25;;;16860:3;2376:21827;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;17110:91:160;;17125:25;17110:91;;2376:21827;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17110:91;;-1:-1:-1;;;;;2376:21827:160;17110:91;;;;;;;2376:21827;17110:91;;;16860:3;17101:100;;;2376:21827;17101:100;;:::i;:::-;16860:3;16826:9;2376:21827;16826:9;;;;;;;;;17110:91;;;;;;;;;;;;;;;;:::i;:::-;;;2376:21827;;;;;;17110:91;;;;;;;17125:25;;;;;;;;;;;;;;:::i;:::-;;;;16986:101;17064:8;;2376:21827;17064:8;;;14296:213:83;2376:21827:160;14374:24:83;;14370:103;;2376:21827:160;;14296:213:83;:::o;14370:103::-;14421:41;;;;;14452:2;14421:41;2376:21827:160;;;;14421:41:83;;3330:164:85;;8192:26:86;3330:164:85;2376:21827:160;-1:-1:-1;2376:21827:160;3433:11:85;;;2376:21827:160;;-1:-1:-1;2376:21827:160;;;;8192:26:86;:::i;7082:141:30:-;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;5626:274:85;;2376:21827:160;-1:-1:-1;2376:21827:160;5743:11:85;;;2376:21827:160;;;-1:-1:-1;2376:21827:160;;5773:10:85;;;;:33;;;;5626:274;5769:103;;;;5881:12;5626:274;:::o;5769:103::-;5829:32;;;-1:-1:-1;5829:32:85;;2376:21827:160;;-1:-1:-1;5829:32:85;5773:33;8806:28:86;;;5197:14;5101:129;-1:-1:-1;2376:21827:160;5197:14:86;2376:21827:160;;;-1:-1:-1;2376:21827:160;;5197:26:86;;5101:129;;8806:28;5787:19:85;5773:33;;;;2376:21827:160;;;;;;;;-1:-1:-1;2376:21827:160;;-1:-1:-1;2376:21827:160;;;-1:-1:-1;2376:21827:160;:::o;3071:1368:86:-;;3266:14;;;2376:21827:160;;;;;;;;;;;3302:13:86;;;3298:1135;3302:13;;;-1:-1:-1;;2376:21827:160;;;;;;;;;-1:-1:-1;;2376:21827:160;;;20638:17;2376:21827;;;;3777:23:86;;;3773:378;;3298:1135;2376:21827:160;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;;;;20638:17;;2376:21827;;;;;;;;;;;;;;;;;;3266:14:86;4368:11;:::o;2376:21827:160:-;;;;;;;;;;;;3773:378:86;2376:21827:160;3840:22:86;3961:23;3840:22;;;:::i;:::-;2376:21827:160;;;;;;3961:23:86;;;;;:::i;:::-;2376:21827:160;;;;;;;;;;20638:17;;;2376:21827;;;;;;;;;;;;;;;;;;;3773:378:86;;;;;3298:1135;4410:12;;;;2376:21827:160;4410:12:86;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;2376:21827:160;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;2376:21827:160;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;2376:21827:160;;;;4933:24:66;2376:21827:160;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;;2497:406:86;-1:-1:-1;2376:21827:160;;;5197:14:86;;;2376:21827:160;;;;;;2581:21:86;;2376:21827:160;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2776:14:86;2376:21827:160;;;;;;;2832:11:86;:::o","linkReferences":{},"immutableReferences":{"46093":[{"start":7273,"length":32},{"start":7480,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowedVaultImplVersion()":"c9b0b1e9","changeSlashExecutor(address)":"86c241a1","changeSlashRequester(address)":"6d1064eb","collateral()":"d8dfeb45","disableOperator()":"d99fcd66","disableVault(address)":"3ccce789","distributeOperatorRewards(address,uint256,bytes32)":"729e2f36","distributeStakerRewards(((address,uint256)[],uint256,address),uint48)":"7fbe95b5","enableOperator()":"3d15e74e","enableVault(address)":"936f4330","eraDuration()":"4455a38f","executeSlash((address,uint256)[])":"af962995","getActiveOperatorsStakeAt(uint48)":"b5e5ad12","getOperatorStakeAt(address,uint48)":"d99ddfc7","initialize((address,uint48,uint48,uint48,uint48,uint48,uint48,uint64,uint64,uint256,uint256,address,address,(address,address,address,address,address,address,address,address,address,address)))":"ab122753","makeElectionAt(uint48,uint256)":"6e5c7932","maxAdminFee()":"c639e2d6","maxResolverSetEpochsDelay()":"9e032311","minSlashExecutionDelay()":"373bba1f","minVaultEpochDuration()":"945cf2dd","minVetoDuration()":"461e7a8e","operatorGracePeriod()":"709d06ae","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registerOperator()":"2acde098","registerVault(address,address)":"05c4fdf9","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestSlash((address,uint48,(address,uint256)[])[])":"0a71094c","router()":"f887ea40","subnetwork()":"ceebb69a","symbioticContracts()":"bcf33934","transferOwnership(address)":"f2fde38b","unregisterOperator(address)":"96115bc2","unregisterVault(address)":"2633b70f","upgradeToAndCall(address,bytes)":"4f1ef286","vaultGracePeriod()":"79a8b245","vetoSlasherImplType()":"d55a5bdf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyAdded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BurnerHookNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"EnumerableMapNonexistentKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleSlasherType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleStakerRewardsVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleVaultVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStakerRewardsVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValidatorsMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSlashExecutionDelayMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVaultEpochDurationLessThanTwoEras\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoAndSlashDelayTooLongForVaultEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryStakerRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashExecutor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashRequester\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotOptIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayMustBeAtLeastThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedDelegatorHook\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultWrongEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooShort\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowedVaultImplVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRole\",\"type\":\"address\"}],\"name\":\"changeSlashExecutor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRole\",\"type\":\"address\"}],\"name\":\"changeSlashRequester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"disableVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"distributeOperatorRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"_commitment\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"distributeStakerRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"enableVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eraDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.SlashIdentifier[]\",\"name\":\"slashes\",\"type\":\"tuple[]\"}],\"name\":\"executeSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"}],\"name\":\"getActiveOperatorsStakeAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"activeOperators\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"stakes\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"}],\"name\":\"getOperatorStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"eraDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVaultEpochDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"operatorGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vaultGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVetoDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minSlashExecutionDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint64\",\"name\":\"allowedVaultImplVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"vetoSlasherImplType\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"maxResolverSetEpochsDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAdminFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"symbiotic\",\"type\":\"tuple\"}],\"internalType\":\"struct IMiddleware.InitParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"maxValidators\",\"type\":\"uint256\"}],\"name\":\"makeElectionAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxResolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minSlashExecutionDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVaultEpochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rewards\",\"type\":\"address\"}],\"name\":\"registerVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.VaultSlashData[]\",\"name\":\"vaults\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IMiddleware.SlashData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"name\":\"requestSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subnetwork\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbioticContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"unregisterVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoSlasherImplType\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AlreadyAdded()\":[{\"details\":\"Thrown when an address is already added to the map.\"}],\"AlreadyEnabled()\":[{\"details\":\"Thrown when an address is already enabled.\"}],\"BurnerHookNotSupported()\":[{\"details\":\"Emitted when vault's slasher has a burner hook.\"}],\"DelegatorNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's delegator is not initialized.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnumerableMapNonexistentKey(bytes32)\":[{\"details\":\"Query for a nonexistent map key.\"}],\"EraDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `eraDuration` is equal to zero.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncompatibleSlasherType()\":[{\"details\":\"Emitted in `registerVault` when the vaults' slasher type is not supported.\"}],\"IncompatibleStakerRewardsVersion()\":[{\"details\":\"Emitted when rewards contract has incompatible version.\"}],\"IncompatibleVaultVersion()\":[{\"details\":\"Emitted when the vault has incompatible version.\"}],\"IncorrectTimestamp()\":[{\"details\":\"Emitted when requested timestamp is in the future.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidStakerRewardsVault()\":[{\"details\":\"Emitted in `registerVault` when the vault in rewards contract is not the same as in the function parameter.\"}],\"MaxValidatorsMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `maxValidators` is equal to zero.\"}],\"MinSlashExecutionDelayMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minSlashExecutionDelay` is equal to zero.\"}],\"MinVaultEpochDurationLessThanTwoEras()\":[{\"details\":\"Emitted when `minVaultEpochDuration` is less than `2 * eraDuration`.\"}],\"MinVetoAndSlashDelayTooLongForVaultEpoch()\":[{\"details\":\"Emitted when `minVetoDuration + minSlashExecutionDelay` is greater than `minVaultEpochDuration`.\"}],\"MinVetoDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minVetoDuration` is equal to zero.\"}],\"NonFactoryStakerRewards()\":[{\"details\":\"Emitted when rewards contract was not created by the StakerRewardsFactory.\"}],\"NonFactoryVault()\":[{\"details\":\"Emitted when trying to register the vault from unknown factory.\"}],\"NotEnabled()\":[{\"details\":\"Thrown when an address is not enabled.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"NotRegisteredOperator()\":[{\"details\":\"Emitted when `SlashData` contains the operator that is not registered in the Middleware.\"}],\"NotRegisteredVault()\":[{\"details\":\"Emitted when the vault is not registered in the Middleware.\"}],\"NotRouter()\":[{\"details\":\"Emitted when the `msg.sender` is not the Router contract.\"}],\"NotSlashExecutor()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash executor.\"}],\"NotSlashRequester()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash requester.\"}],\"NotVaultOwner()\":[{\"details\":\"Emitted when `msg.sender` is no the owner.\"}],\"OperatorDoesNotExist()\":[{\"details\":\"Emitted when the operator is not registered in the OperatorRegistry.\"}],\"OperatorDoesNotOptIn()\":[{\"details\":\"Emitted when the operator is not opted-in to the Middleware.\"}],\"OperatorGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `operatorGracePeriod` is less than `minVaultEpochDuration`.\"}],\"OperatorGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the operator earlier then `operatorGracePeriod`.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"ResolverMismatch()\":[{\"details\":\"Emitted when slasher's veto resolver is not the same as in the Middleware.\"}],\"ResolverSetDelayMustBeAtLeastThree()\":[{\"details\":\"Emitted when `maxResolverSetEpochsDelay` is less than `3`.\"}],\"ResolverSetDelayTooLong()\":[{\"details\":\"Emitted when the slasher's delay to update the resolver is greater than the one in the Middleware.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SlasherNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's slasher is not initialized.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"UnknownCollateral()\":[{\"details\":\"Emitted when trying to distribute rewards with collateral that is not equal to the one in the Middleware.\"}],\"UnsupportedBurner()\":[{\"details\":\"Emitted when vault's burner is equal to `address(0)`.\"}],\"UnsupportedDelegatorHook()\":[{\"details\":\"Emitted when the delegator's hook is not equal to `address(0)`.\"}],\"VaultGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `vaultGracePeriod` is less than `minVaultEpochDuration`.\"}],\"VaultGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the vault earlier then `vaultGracePeriod`.\"}],\"VaultWrongEpochDuration()\":[{\"details\":\"Emitted when trying to register the vault with `epochDuration` less than `minVaultEpochDuration`.\"}],\"VetoDurationTooLong()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` + `minShashExecutionDelay` is greater than vaultEpochDuration.\"}],\"VetoDurationTooShort()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` less than `minVetoDuration`.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getOperatorStakeAt(address,uint48)\":{\"returns\":{\"stake\":\"The total stake of the operator in all vaults that was active at the given timestamp.\"}},\"makeElectionAt(uint48,uint256)\":{\"details\":\"This function returns the list of validators that are will be responsible for block production in the next era.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerOperator()\":{\"details\":\"Operator must be registered in operator registry.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"IncompatibleStakerRewardsVersion()\":[{\"notice\":\"The version of the rewards contract is a index of the whitelisted versions in StakerRewardsFactory.\"}],\"IncompatibleVaultVersion()\":[{\"notice\":\"The version of the vault is a index of the whitelisted versions in VaultFactory.\"}]},\"kind\":\"user\",\"methods\":{\"disableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"disableVault(address)\":{\"notice\":\"This function can be called only by the vault owner.\"},\"distributeOperatorRewards(address,uint256,bytes32)\":{\"notice\":\"The function can be called only by the Router contract.\"},\"enableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"enableVault(address)\":{\"notice\":\"This function can be called only by the vault owner.\"},\"registerOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"unregisterOperator(address)\":{\"notice\":\"This function can be called only be operator themselves.\"},\"unregisterVault(address)\":{\"notice\":\"This function can be called only by the vault owner.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Middleware.sol\":\"Middleware\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"lib/symbiotic-core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/symbiotic-core/src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"lib/symbiotic-core/src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/symbiotic-core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"lib/symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol\":{\"keccak256\":\"0xb0ba8270d29fa1af4a8024f20072d13bb2eefd3aa10a77dc4650829e738ddb28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6db9eca4620c65a96bc68d3b32d1b92f90558a354be72ac525e689162fda4b06\",\"dweb:/ipfs/QmV5TQpb7b9RMUrMNPw9n1rJX1TRyb573tUoG7rye2W1m4\"]},\"lib/symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol\":{\"keccak256\":\"0xc7ee0e2ffe9f592a6a295d216ab221cbacfcbeccbb06be6098e2b1e46863f6fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6c09ad742a4836d07a4ec910f582a58991503f0244290c4a6c23fe641749e1a\",\"dweb:/ipfs/QmVR4k1D3ZNQVdJ1vkWpeZ1MAotsH4WTwCuu6Z2X1UJEb7\"]},\"lib/symbiotic-rewards/src/interfaces/stakerRewards/IStakerRewards.sol\":{\"keccak256\":\"0x7516733d48956a5d54243c843b977b402a3b53998b81dc0e9ec89afeabc2a60e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53571bf204dc1ccedc4a5f8154d4ad014c20e66f6196b062e260e14a7d0b6f4a\",\"dweb:/ipfs/QmT6JRgPjvQ5DEiFUMyrGxv6qxU1ZvyKMstdigtEKVpF41\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/Middleware.sol\":{\"keccak256\":\"0x85c1b40fd1b55a7cf9e3f9c4f3d7979313dd41c783e5ec1817ce6c91ce7081d8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://dcc4ff6fec91d20d7d8979608df6af8d35cbdbb3280d1666501ed307653872e1\",\"dweb:/ipfs/QmU2x4wMMj2abBL5rUyDzNevw8tDnYDZqCNu89oZ8eHE55\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48\",\"dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AlreadyAdded"},{"inputs":[],"type":"error","name":"AlreadyEnabled"},{"inputs":[],"type":"error","name":"BurnerHookNotSupported"},{"inputs":[],"type":"error","name":"DelegatorNotInitialized"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"type":"error","name":"EnumerableMapNonexistentKey"},{"inputs":[],"type":"error","name":"EraDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"IncompatibleSlasherType"},{"inputs":[],"type":"error","name":"IncompatibleStakerRewardsVersion"},{"inputs":[],"type":"error","name":"IncompatibleVaultVersion"},{"inputs":[],"type":"error","name":"IncorrectTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidStakerRewardsVault"},{"inputs":[],"type":"error","name":"MaxValidatorsMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinVaultEpochDurationLessThanTwoEras"},{"inputs":[],"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch"},{"inputs":[],"type":"error","name":"MinVetoDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"NonFactoryStakerRewards"},{"inputs":[],"type":"error","name":"NonFactoryVault"},{"inputs":[],"type":"error","name":"NotEnabled"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotRegisteredOperator"},{"inputs":[],"type":"error","name":"NotRegisteredVault"},{"inputs":[],"type":"error","name":"NotRouter"},{"inputs":[],"type":"error","name":"NotSlashExecutor"},{"inputs":[],"type":"error","name":"NotSlashRequester"},{"inputs":[],"type":"error","name":"NotVaultOwner"},{"inputs":[],"type":"error","name":"OperatorDoesNotExist"},{"inputs":[],"type":"error","name":"OperatorDoesNotOptIn"},{"inputs":[],"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"OperatorGracePeriodNotPassed"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"ResolverMismatch"},{"inputs":[],"type":"error","name":"ResolverSetDelayMustBeAtLeastThree"},{"inputs":[],"type":"error","name":"ResolverSetDelayTooLong"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SlasherNotInitialized"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownCollateral"},{"inputs":[],"type":"error","name":"UnsupportedBurner"},{"inputs":[],"type":"error","name":"UnsupportedDelegatorHook"},{"inputs":[],"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"VaultGracePeriodNotPassed"},{"inputs":[],"type":"error","name":"VaultWrongEpochDuration"},{"inputs":[],"type":"error","name":"VetoDurationTooLong"},{"inputs":[],"type":"error","name":"VetoDurationTooShort"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allowedVaultImplVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"newRole","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeSlashExecutor"},{"inputs":[{"internalType":"address","name":"newRole","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeSlashRequester"},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableOperator"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableVault"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"distributeOperatorRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct Gear.StakerRewardsCommitment","name":"_commitment","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"distributeStakerRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"enableOperator"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"enableVault"},{"inputs":[],"stateMutability":"view","type":"function","name":"eraDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"struct IMiddleware.SlashIdentifier[]","name":"slashes","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"executeSlash"},{"inputs":[{"internalType":"uint48","name":"ts","type":"uint48"}],"stateMutability":"view","type":"function","name":"getActiveOperatorsStakeAt","outputs":[{"internalType":"address[]","name":"activeOperators","type":"address[]"},{"internalType":"uint256[]","name":"stakes","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"}],"stateMutability":"view","type":"function","name":"getOperatorStakeAt","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"struct IMiddleware.InitParams","name":"_params","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint48","name":"eraDuration","type":"uint48"},{"internalType":"uint48","name":"minVaultEpochDuration","type":"uint48"},{"internalType":"uint48","name":"operatorGracePeriod","type":"uint48"},{"internalType":"uint48","name":"vaultGracePeriod","type":"uint48"},{"internalType":"uint48","name":"minVetoDuration","type":"uint48"},{"internalType":"uint48","name":"minSlashExecutionDelay","type":"uint48"},{"internalType":"uint64","name":"allowedVaultImplVersion","type":"uint64"},{"internalType":"uint64","name":"vetoSlasherImplType","type":"uint64"},{"internalType":"uint256","name":"maxResolverSetEpochsDelay","type":"uint256"},{"internalType":"uint256","name":"maxAdminFee","type":"uint256"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"router","type":"address"},{"internalType":"struct Gear.SymbioticContracts","name":"symbiotic","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"uint256","name":"maxValidators","type":"uint256"}],"stateMutability":"view","type":"function","name":"makeElectionAt","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxResolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minSlashExecutionDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minVaultEpochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minVetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_rewards","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerVault"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"struct IMiddleware.SlashData[]","name":"data","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"struct IMiddleware.VaultSlashData[]","name":"vaults","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]}],"stateMutability":"nonpayable","type":"function","name":"requestSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"subnetwork","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbioticContracts","outputs":[{"internalType":"struct Gear.SymbioticContracts","name":"","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"unregisterVault"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vetoSlasherImplType","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getOperatorStakeAt(address,uint48)":{"returns":{"stake":"The total stake of the operator in all vaults that was active at the given timestamp."}},"makeElectionAt(uint48,uint256)":{"details":"This function returns the list of validators that are will be responsible for block production in the next era."},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"registerOperator()":{"details":"Operator must be registered in operator registry."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":""},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"disableOperator()":{"notice":"This function can be called only be operator themselves."},"disableVault(address)":{"notice":"This function can be called only by the vault owner."},"distributeOperatorRewards(address,uint256,bytes32)":{"notice":"The function can be called only by the Router contract."},"enableOperator()":{"notice":"This function can be called only be operator themselves."},"enableVault(address)":{"notice":"This function can be called only by the vault owner."},"registerOperator()":{"notice":"This function can be called only be operator themselves."},"unregisterOperator(address)":{"notice":"This function can be called only be operator themselves."},"unregisterVault(address)":{"notice":"This function can be called only by the vault owner."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Middleware.sol":"Middleware"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c","urls":["bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d","dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"lib/symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol":{"keccak256":"0xb0ba8270d29fa1af4a8024f20072d13bb2eefd3aa10a77dc4650829e738ddb28","urls":["bzz-raw://6db9eca4620c65a96bc68d3b32d1b92f90558a354be72ac525e689162fda4b06","dweb:/ipfs/QmV5TQpb7b9RMUrMNPw9n1rJX1TRyb573tUoG7rye2W1m4"],"license":"MIT"},"lib/symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol":{"keccak256":"0xc7ee0e2ffe9f592a6a295d216ab221cbacfcbeccbb06be6098e2b1e46863f6fc","urls":["bzz-raw://e6c09ad742a4836d07a4ec910f582a58991503f0244290c4a6c23fe641749e1a","dweb:/ipfs/QmVR4k1D3ZNQVdJ1vkWpeZ1MAotsH4WTwCuu6Z2X1UJEb7"],"license":"MIT"},"lib/symbiotic-rewards/src/interfaces/stakerRewards/IStakerRewards.sol":{"keccak256":"0x7516733d48956a5d54243c843b977b402a3b53998b81dc0e9ec89afeabc2a60e","urls":["bzz-raw://53571bf204dc1ccedc4a5f8154d4ad014c20e66f6196b062e260e14a7d0b6f4a","dweb:/ipfs/QmT6JRgPjvQ5DEiFUMyrGxv6qxU1ZvyKMstdigtEKVpF41"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/Middleware.sol":{"keccak256":"0x85c1b40fd1b55a7cf9e3f9c4f3d7979313dd41c783e5ec1817ce6c91ce7081d8","urls":["bzz-raw://dcc4ff6fec91d20d7d8979608df6af8d35cbdbb3280d1666501ed307653872e1","dweb:/ipfs/QmU2x4wMMj2abBL5rUyDzNevw8tDnYDZqCNu89oZ8eHE55"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e","urls":["bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48","dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Middleware.sol","id":77274,"exportedSymbols":{"EnumerableMap":[58543],"Gear":[84058],"IAccessControl":[44539],"IBaseDelegator":[65506],"IDefaultOperatorRewards":[71798],"IDefaultStakerRewards":[71992],"IEntity":[65100],"IMiddleware":[74131],"IMigratableEntity":[65208],"INetworkMiddlewareService":[65994],"INetworkRegistry":[64998],"IOptInService":[66120],"IRegistry":[65332],"IVault":[66856],"IVetoSlasher":[66518],"MapWithTimeData":[84346],"Middleware":[77273],"OwnableUpgradeable":[42322],"ReentrancyGuardTransientUpgradeable":[43943],"SlotDerivation":[48965],"StorageSlot":[49089],"Subnetwork":[64978],"Time":[60343],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:24130:160","nodes":[{"id":75003,"nodeType":"PragmaDirective","src":"74:24:160","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":75005,"nodeType":"ImportDirective","src":"100:101:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":75004,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75007,"nodeType":"ImportDirective","src":"202:140:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":75006,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"215:35:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75009,"nodeType":"ImportDirective","src":"343:81:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":44540,"symbolAliases":[{"foreign":{"id":75008,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44539,"src":"351:14:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75011,"nodeType":"ImportDirective","src":"425:88:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":75010,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"433:15:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75013,"nodeType":"ImportDirective","src":"514:80:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":75012,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"522:14:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75015,"nodeType":"ImportDirective","src":"595:74:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":75014,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"603:11:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75017,"nodeType":"ImportDirective","src":"670:86:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol","file":"@openzeppelin/contracts/utils/structs/EnumerableMap.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":58544,"symbolAliases":[{"foreign":{"id":75016,"name":"EnumerableMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58543,"src":"678:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75019,"nodeType":"ImportDirective","src":"757:66:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/types/Time.sol","file":"@openzeppelin/contracts/utils/types/Time.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":60344,"symbolAliases":[{"foreign":{"id":75018,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"765:4:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75021,"nodeType":"ImportDirective","src":"824:48:160","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":75020,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"832:11:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75023,"nodeType":"ImportDirective","src":"873:44:160","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":84059,"symbolAliases":[{"foreign":{"id":75022,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"881:4:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75025,"nodeType":"ImportDirective","src":"918:66:160","nodes":[],"absolutePath":"src/libraries/MapWithTimeData.sol","file":"src/libraries/MapWithTimeData.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":84347,"symbolAliases":[{"foreign":{"id":75024,"name":"MapWithTimeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84346,"src":"926:15:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75027,"nodeType":"ImportDirective","src":"985:81:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol","file":"symbiotic-core/src/contracts/libraries/Subnetwork.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":64979,"symbolAliases":[{"foreign":{"id":75026,"name":"Subnetwork","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64978,"src":"993:10:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75029,"nodeType":"ImportDirective","src":"1067:84:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol","file":"symbiotic-core/src/interfaces/INetworkRegistry.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":64999,"symbolAliases":[{"foreign":{"id":75028,"name":"INetworkRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64998,"src":"1075:16:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75031,"nodeType":"ImportDirective","src":"1152:73:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/common/IEntity.sol","file":"symbiotic-core/src/interfaces/common/IEntity.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65101,"symbolAliases":[{"foreign":{"id":75030,"name":"IEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65100,"src":"1160:7:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75033,"nodeType":"ImportDirective","src":"1226:93:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol","file":"symbiotic-core/src/interfaces/common/IMigratableEntity.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65209,"symbolAliases":[{"foreign":{"id":75032,"name":"IMigratableEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65208,"src":"1234:17:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75035,"nodeType":"ImportDirective","src":"1320:77:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/common/IRegistry.sol","file":"symbiotic-core/src/interfaces/common/IRegistry.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65333,"symbolAliases":[{"foreign":{"id":75034,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"1328:9:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75037,"nodeType":"ImportDirective","src":"1398:90:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol","file":"symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65507,"symbolAliases":[{"foreign":{"id":75036,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"1406:14:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75039,"nodeType":"ImportDirective","src":"1489:110:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol","file":"symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65995,"symbolAliases":[{"foreign":{"id":75038,"name":"INetworkMiddlewareService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65994,"src":"1497:25:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75041,"nodeType":"ImportDirective","src":"1600:86:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/service/IOptInService.sol","file":"symbiotic-core/src/interfaces/service/IOptInService.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":66121,"symbolAliases":[{"foreign":{"id":75040,"name":"IOptInService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66120,"src":"1608:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75043,"nodeType":"ImportDirective","src":"1687:84:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol","file":"symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":66519,"symbolAliases":[{"foreign":{"id":75042,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"1695:12:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75045,"nodeType":"ImportDirective","src":"1772:70:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/vault/IVault.sol","file":"symbiotic-core/src/interfaces/vault/IVault.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":66857,"symbolAliases":[{"foreign":{"id":75044,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"1780:6:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75047,"nodeType":"ImportDirective","src":"1843:130:160","nodes":[],"absolutePath":"lib/symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol","file":"symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":71799,"symbolAliases":[{"foreign":{"id":75046,"name":"IDefaultOperatorRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71798,"src":"1856:23:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75049,"nodeType":"ImportDirective","src":"1974:118:160","nodes":[],"absolutePath":"lib/symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol","file":"symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":71993,"symbolAliases":[{"foreign":{"id":75048,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"1982:21:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77273,"nodeType":"ContractDefinition","src":"2376:21827:160","nodes":[{"id":75061,"nodeType":"UsingForDirective","src":"2491:55:160","nodes":[],"global":false,"libraryName":{"id":75058,"name":"EnumerableMap","nameLocations":["2497:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":58543,"src":"2497:13:160"},"typeName":{"id":75060,"nodeType":"UserDefinedTypeName","pathNode":{"id":75059,"name":"EnumerableMap.AddressToUintMap","nameLocations":["2515:13:160","2529:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":56867,"src":"2515:30:160"},"referencedDeclaration":56867,"src":"2515:30:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage_ptr","typeString":"struct EnumerableMap.AddressToUintMap"}}},{"id":75065,"nodeType":"UsingForDirective","src":"2551:57:160","nodes":[],"global":false,"libraryName":{"id":75062,"name":"MapWithTimeData","nameLocations":["2557:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":84346,"src":"2557:15:160"},"typeName":{"id":75064,"nodeType":"UserDefinedTypeName","pathNode":{"id":75063,"name":"EnumerableMap.AddressToUintMap","nameLocations":["2577:13:160","2591:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":56867,"src":"2577:30:160"},"referencedDeclaration":56867,"src":"2577:30:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage_ptr","typeString":"struct EnumerableMap.AddressToUintMap"}}},{"id":75069,"nodeType":"UsingForDirective","src":"2614:58:160","nodes":[],"global":false,"libraryName":{"id":75066,"name":"EnumerableMap","nameLocations":["2620:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":58543,"src":"2620:13:160"},"typeName":{"id":75068,"nodeType":"UserDefinedTypeName","pathNode":{"id":75067,"name":"EnumerableMap.AddressToAddressMap","nameLocations":["2638:13:160","2652:19:160"],"nodeType":"IdentifierPath","referencedDeclaration":57162,"src":"2638:33:160"},"referencedDeclaration":57162,"src":"2638:33:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToAddressMap_$57162_storage_ptr","typeString":"struct EnumerableMap.AddressToAddressMap"}}},{"id":75072,"nodeType":"UsingForDirective","src":"2678:29:160","nodes":[],"global":false,"libraryName":{"id":75070,"name":"Subnetwork","nameLocations":["2684:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":64978,"src":"2684:10:160"},"typeName":{"id":75071,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":75075,"nodeType":"VariableDeclaration","src":"2820:106:160","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"2845:12:160","scope":77273,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75073,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2820:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830623863353661663663633961643430316164323235626665393664663737663330343962613137656164616331636239356565383964663165363964313030","id":75074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2860:66:160","typeDescriptions":{"typeIdentifier":"t_rational_5223398203118087324979291777783578297303922957705888423515209926851254931712_by_1","typeString":"int_const 5223...(68 digits omitted)...1712"},"value":"0x0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100"},"visibility":"private"},{"id":75078,"nodeType":"VariableDeclaration","src":"2933:50:160","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2958:18:160","scope":77273,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75076,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2933:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":75077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2979:4:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"private"},{"id":75081,"nodeType":"VariableDeclaration","src":"2989:45:160","nodes":[],"constant":true,"mutability":"constant","name":"NETWORK_IDENTIFIER","nameLocation":"3012:18:160","scope":77273,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":75079,"name":"uint8","nodeType":"ElementaryTypeName","src":"2989:5:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":75080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3033:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"id":75089,"nodeType":"FunctionDefinition","src":"3109:53:160","nodes":[],"body":{"id":75088,"nodeType":"Block","src":"3123:39:160","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75085,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"3133:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3133:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75087,"nodeType":"ExpressionStatement","src":"3133:22:160"}]},"documentation":{"id":75082,"nodeType":"StructuredDocumentation","src":"3041:63:160","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75083,"nodeType":"ParameterList","parameters":[],"src":"3120:2:160"},"returnParameters":{"id":75084,"nodeType":"ParameterList","parameters":[],"src":"3123:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75243,"nodeType":"FunctionDefinition","src":"3168:1277:160","nodes":[],"body":{"id":75242,"nodeType":"Block","src":"3236:1209:160","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75098,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3261:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3269:5:160","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":73862,"src":"3261:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75097,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"3246:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3246:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75101,"nodeType":"ExpressionStatement","src":"3246:29:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75102,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"3285:31:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75104,"nodeType":"ExpressionStatement","src":"3285:33:160"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655631","id":75106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3345:33:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""},"value":"middleware.storage.MiddlewareV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""}],"id":75105,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77242,"src":"3329:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3329:50:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75108,"nodeType":"ExpressionStatement","src":"3329:50:160"},{"assignments":[75111],"declarations":[{"constant":false,"id":75111,"mutability":"mutable","name":"$","nameLocation":"3405:1:160","nodeType":"VariableDeclaration","scope":75242,"src":"3389:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75110,"nodeType":"UserDefinedTypeName","pathNode":{"id":75109,"name":"Storage","nameLocations":["3389:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"3389:7:160"},"referencedDeclaration":73928,"src":"3389:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75114,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75112,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"3409:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3409:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3389:30:160"},{"expression":{"id":75120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75115,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3430:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3432:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"3430:13:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75118,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3446:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3454:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73864,"src":"3446:19:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3430:35:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75121,"nodeType":"ExpressionStatement","src":"3430:35:160"},{"expression":{"id":75127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75122,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3475:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3477:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"3475:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75125,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3501:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3509:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73866,"src":"3501:29:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3475:55:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75128,"nodeType":"ExpressionStatement","src":"3475:55:160"},{"expression":{"id":75134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75129,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3540:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3542:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"3540:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75132,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3564:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3572:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73868,"src":"3564:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3540:51:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75135,"nodeType":"ExpressionStatement","src":"3540:51:160"},{"expression":{"id":75141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75136,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3601:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3603:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"3601:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75139,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3622:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3630:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73870,"src":"3622:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3601:45:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75142,"nodeType":"ExpressionStatement","src":"3601:45:160"},{"expression":{"id":75148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75143,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3656:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3658:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"3656:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75146,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3676:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3684:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73872,"src":"3676:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3656:43:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75149,"nodeType":"ExpressionStatement","src":"3656:43:160"},{"expression":{"id":75155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75150,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3709:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3711:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"3709:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75153,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3736:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3744:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73874,"src":"3736:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3709:57:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75156,"nodeType":"ExpressionStatement","src":"3709:57:160"},{"expression":{"id":75162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75157,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3776:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3778:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"3776:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75160,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3806:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3814:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73880,"src":"3806:33:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3776:63:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75163,"nodeType":"ExpressionStatement","src":"3776:63:160"},{"expression":{"id":75169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75164,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3849:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3851:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"3849:25:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75167,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3877:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3885:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73876,"src":"3877:31:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3849:59:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75170,"nodeType":"ExpressionStatement","src":"3849:59:160"},{"expression":{"id":75176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75171,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3918:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3920:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"3918:21:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75174,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3942:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3950:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73878,"src":"3942:27:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3918:51:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75177,"nodeType":"ExpressionStatement","src":"3918:51:160"},{"expression":{"id":75183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75178,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4002:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4004:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"4002:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75181,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4017:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4025:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73884,"src":"4017:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4002:33:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75184,"nodeType":"ExpressionStatement","src":"4002:33:160"},{"expression":{"id":75195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75185,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4045:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4047:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"4045:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75193,"name":"NETWORK_IDENTIFIER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"4085:18:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":75190,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4068:4:160","typeDescriptions":{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}],"id":75189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4060:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75188,"name":"address","nodeType":"ElementaryTypeName","src":"4060:7:160","typeDescriptions":{}}},"id":75191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4074:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":64940,"src":"4060:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint96_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,uint96) pure returns (bytes32)"}},"id":75194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:44:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4045:59:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75196,"nodeType":"ExpressionStatement","src":"4045:59:160"},{"expression":{"id":75202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75197,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4114:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4116:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"4114:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75200,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4130:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73882,"src":"4130:19:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4114:35:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75203,"nodeType":"ExpressionStatement","src":"4114:35:160"},{"expression":{"id":75209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75204,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4160:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4162:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"4160:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75207,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4171:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4179:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73886,"src":"4171:14:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4160:25:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75210,"nodeType":"ExpressionStatement","src":"4160:25:160"},{"expression":{"id":75216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75211,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4196:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4198:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"4196:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75214,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4210:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4218:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73889,"src":"4210:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_calldata_ptr","typeString":"struct Gear.SymbioticContracts calldata"}},"src":"4196:31:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75217,"nodeType":"ExpressionStatement","src":"4196:31:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"expression":{"id":75219,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4255:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4263:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73889,"src":"4255:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_calldata_ptr","typeString":"struct Gear.SymbioticContracts calldata"}},"id":75221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4273:15:160","memberName":"networkRegistry","nodeType":"MemberAccess","referencedDeclaration":83180,"src":"4255:33:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75218,"name":"INetworkRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64998,"src":"4238:16:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INetworkRegistry_$64998_$","typeString":"type(contract INetworkRegistry)"}},"id":75222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:51:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INetworkRegistry_$64998","typeString":"contract INetworkRegistry"}},"id":75223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4290:15:160","memberName":"registerNetwork","nodeType":"MemberAccess","referencedDeclaration":64997,"src":"4238:67:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":75224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:69:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75225,"nodeType":"ExpressionStatement","src":"4238:69:160"},{"expression":{"arguments":[{"arguments":[{"id":75234,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4402:4:160","typeDescriptions":{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}],"id":75233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4394:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75232,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:160","typeDescriptions":{}}},"id":75235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":75227,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4343:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4351:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73889,"src":"4343:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_calldata_ptr","typeString":"struct Gear.SymbioticContracts calldata"}},"id":75229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4361:17:160","memberName":"middlewareService","nodeType":"MemberAccess","referencedDeclaration":83182,"src":"4343:35:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75226,"name":"INetworkMiddlewareService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65994,"src":"4317:25:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INetworkMiddlewareService_$65994_$","typeString":"type(contract INetworkMiddlewareService)"}},"id":75230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4317:62:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INetworkMiddlewareService_$65994","typeString":"contract INetworkMiddlewareService"}},"id":75231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4380:13:160","memberName":"setMiddleware","nodeType":"MemberAccess","referencedDeclaration":65993,"src":"4317:76:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":75236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4317:91:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75237,"nodeType":"ExpressionStatement","src":"4317:91:160"},{"expression":{"arguments":[{"id":75239,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4436:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}],"id":75238,"name":"_validateStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76822,"src":"4419:16:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73928_storage_ptr_$returns$__$","typeString":"function (struct IMiddleware.Storage storage pointer) view"}},"id":75240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4419:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75241,"nodeType":"ExpressionStatement","src":"4419:19:160"}]},"functionSelector":"ab122753","implemented":true,"kind":"function","modifiers":[{"id":75095,"kind":"modifierInvocation","modifierName":{"id":75094,"name":"initializer","nameLocations":["3224:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"3224:11:160"},"nodeType":"ModifierInvocation","src":"3224:11:160"}],"name":"initialize","nameLocation":"3177:10:160","parameters":{"id":75093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75092,"mutability":"mutable","name":"_params","nameLocation":"3208:7:160","nodeType":"VariableDeclaration","scope":75243,"src":"3188:27:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams"},"typeName":{"id":75091,"nodeType":"UserDefinedTypeName","pathNode":{"id":75090,"name":"InitParams","nameLocations":["3188:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":73890,"src":"3188:10:160"},"referencedDeclaration":73890,"src":"3188:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_storage_ptr","typeString":"struct IMiddleware.InitParams"}},"visibility":"internal"}],"src":"3187:29:160"},"returnParameters":{"id":75096,"nodeType":"ParameterList","parameters":[],"src":"3236:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75440,"nodeType":"FunctionDefinition","src":"4518:1578:160","nodes":[],"body":{"id":75439,"nodeType":"Block","src":"4576:1520:160","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":75253,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"4601:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4601:7:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75252,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"4586:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4586:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75256,"nodeType":"ExpressionStatement","src":"4586:23:160"},{"assignments":[75259],"declarations":[{"constant":false,"id":75259,"mutability":"mutable","name":"oldStorage","nameLocation":"4636:10:160","nodeType":"VariableDeclaration","scope":75439,"src":"4620:26:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75258,"nodeType":"UserDefinedTypeName","pathNode":{"id":75257,"name":"Storage","nameLocations":["4620:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"4620:7:160"},"referencedDeclaration":73928,"src":"4620:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75262,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75260,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"4649:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4649:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4620:39:160"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655632","id":75264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4686:33:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""},"value":"middleware.storage.MiddlewareV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""}],"id":75263,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77242,"src":"4670:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4670:50:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75266,"nodeType":"ExpressionStatement","src":"4670:50:160"},{"assignments":[75269],"declarations":[{"constant":false,"id":75269,"mutability":"mutable","name":"newStorage","nameLocation":"4746:10:160","nodeType":"VariableDeclaration","scope":75439,"src":"4730:26:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75268,"nodeType":"UserDefinedTypeName","pathNode":{"id":75267,"name":"Storage","nameLocations":["4730:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"4730:7:160"},"referencedDeclaration":73928,"src":"4730:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75272,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75270,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"4759:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4759:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4730:39:160"},{"expression":{"id":75278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75273,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4780:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4791:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"4780:22:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75276,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"4805:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4816:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"4805:22:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4780:47:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75279,"nodeType":"ExpressionStatement","src":"4780:47:160"},{"expression":{"id":75285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75280,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4837:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4848:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"4837:32:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75283,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"4872:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4883:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"4872:32:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4837:67:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75286,"nodeType":"ExpressionStatement","src":"4837:67:160"},{"expression":{"id":75292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75287,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4914:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4925:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"4914:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75290,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"4947:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4958:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"4947:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4914:63:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75293,"nodeType":"ExpressionStatement","src":"4914:63:160"},{"expression":{"id":75299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75294,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4987:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4998:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"4987:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75297,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5017:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5028:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"5017:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4987:57:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75300,"nodeType":"ExpressionStatement","src":"4987:57:160"},{"expression":{"id":75306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75301,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5054:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5065:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"5054:26:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75304,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5083:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5094:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"5083:26:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5054:55:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75307,"nodeType":"ExpressionStatement","src":"5054:55:160"},{"expression":{"id":75313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75308,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5119:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5130:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"5119:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75311,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5155:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5166:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"5155:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5119:69:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75314,"nodeType":"ExpressionStatement","src":"5119:69:160"},{"expression":{"id":75320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75315,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5198:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5209:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"5198:36:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75318,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5237:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5248:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"5237:36:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5198:75:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75321,"nodeType":"ExpressionStatement","src":"5198:75:160"},{"expression":{"id":75327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75322,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5283:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5294:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"5283:34:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75325,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5320:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5331:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"5320:34:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5283:71:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75328,"nodeType":"ExpressionStatement","src":"5283:71:160"},{"expression":{"id":75334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75329,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5364:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5375:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"5364:30:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75332,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5397:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5408:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"5397:30:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5364:63:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75335,"nodeType":"ExpressionStatement","src":"5364:63:160"},{"expression":{"id":75341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75336,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5437:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5448:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"5437:21:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75339,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5461:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5472:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"5461:21:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5437:45:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75342,"nodeType":"ExpressionStatement","src":"5437:45:160"},{"expression":{"id":75348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75343,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5492:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5503:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"5492:21:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75346,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5516:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5527:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"5516:21:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5492:45:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75349,"nodeType":"ExpressionStatement","src":"5492:45:160"},{"expression":{"id":75355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75350,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5547:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5558:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"5547:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75353,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5572:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5583:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"5572:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5547:47:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75356,"nodeType":"ExpressionStatement","src":"5547:47:160"},{"expression":{"id":75362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75357,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5604:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5615:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"5604:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75360,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5624:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5635:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"5624:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5604:37:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75363,"nodeType":"ExpressionStatement","src":"5604:37:160"},{"expression":{"id":75369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75364,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5651:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5662:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"5651:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75367,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5674:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5685:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"5674:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"src":"5651:43:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75370,"nodeType":"ExpressionStatement","src":"5651:43:160"},{"body":{"id":75403,"nodeType":"Block","src":"5765:132:160","statements":[{"assignments":[75385,75387],"declarations":[{"constant":false,"id":75385,"mutability":"mutable","name":"key","nameLocation":"5788:3:160","nodeType":"VariableDeclaration","scope":75403,"src":"5780:11:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75384,"name":"address","nodeType":"ElementaryTypeName","src":"5780:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75387,"mutability":"mutable","name":"value","nameLocation":"5801:5:160","nodeType":"VariableDeclaration","scope":75403,"src":"5793:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75386,"name":"uint256","nodeType":"ElementaryTypeName","src":"5793:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75393,"initialValue":{"arguments":[{"id":75391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75372,"src":"5834:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75388,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5810:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5821:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"5810:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5831:2:160","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":57022,"src":"5810:23:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint256)"}},"id":75392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5810:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5779:57:160"},{"expression":{"arguments":[{"id":75399,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75385,"src":"5875:3:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75387,"src":"5880:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75394,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5850:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5861:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"5850:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5871:3:160","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":56900,"src":"5850:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint256) returns (bool)"}},"id":75401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5850:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75402,"nodeType":"ExpressionStatement","src":"5850:36:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75372,"src":"5725:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":75376,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5729:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5740:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"5729:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5750:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"5729:27:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":75379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5729:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:33:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75404,"initializationExpression":{"assignments":[75372],"declarations":[{"constant":false,"id":75372,"mutability":"mutable","name":"i","nameLocation":"5718:1:160","nodeType":"VariableDeclaration","scope":75404,"src":"5710:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75371,"name":"uint256","nodeType":"ElementaryTypeName","src":"5710:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75374,"initialValue":{"hexValue":"30","id":75373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5722:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5710:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5760:3:160","subExpression":{"id":75381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75372,"src":"5760:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75383,"nodeType":"ExpressionStatement","src":"5760:3:160"},"nodeType":"ForStatement","src":"5705:192:160"},{"body":{"id":75437,"nodeType":"Block","src":"5964:126:160","statements":[{"assignments":[75419,75421],"declarations":[{"constant":false,"id":75419,"mutability":"mutable","name":"key","nameLocation":"5987:3:160","nodeType":"VariableDeclaration","scope":75437,"src":"5979:11:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75418,"name":"address","nodeType":"ElementaryTypeName","src":"5979:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75421,"mutability":"mutable","name":"value","nameLocation":"6000:5:160","nodeType":"VariableDeclaration","scope":75437,"src":"5992:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75427,"initialValue":{"arguments":[{"id":75425,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75406,"src":"6030:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75422,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"6009:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6020:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"6009:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6027:2:160","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":57022,"src":"6009:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint256)"}},"id":75426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5978:54:160"},{"expression":{"arguments":[{"id":75433,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75419,"src":"6068:3:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75421,"src":"6073:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75428,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"6046:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6057:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"6046:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6064:3:160","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":56900,"src":"6046:21:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint256) returns (bool)"}},"id":75435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6046:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75436,"nodeType":"ExpressionStatement","src":"6046:33:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75409,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75406,"src":"5927:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":75410,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5931:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5942:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"5931:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5949:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"5931:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":75413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5931:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5927:30:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75438,"initializationExpression":{"assignments":[75406],"declarations":[{"constant":false,"id":75406,"mutability":"mutable","name":"i","nameLocation":"5920:1:160","nodeType":"VariableDeclaration","scope":75438,"src":"5912:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75405,"name":"uint256","nodeType":"ElementaryTypeName","src":"5912:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75408,"initialValue":{"hexValue":"30","id":75407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5924:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5912:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5959:3:160","subExpression":{"id":75415,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75406,"src":"5959:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75417,"nodeType":"ExpressionStatement","src":"5959:3:160"},"nodeType":"ForStatement","src":"5907:183:160"}]},"documentation":{"id":75244,"nodeType":"StructuredDocumentation","src":"4451:62:160","text":" @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":75247,"kind":"modifierInvocation","modifierName":{"id":75246,"name":"onlyOwner","nameLocations":["4549:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"4549:9:160"},"nodeType":"ModifierInvocation","src":"4549:9:160"},{"arguments":[{"hexValue":"32","id":75249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4573:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":75250,"kind":"modifierInvocation","modifierName":{"id":75248,"name":"reinitializer","nameLocations":["4559:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"4559:13:160"},"nodeType":"ModifierInvocation","src":"4559:16:160"}],"name":"reinitialize","nameLocation":"4527:12:160","parameters":{"id":75245,"nodeType":"ParameterList","parameters":[],"src":"4539:2:160"},"returnParameters":{"id":75251,"nodeType":"ParameterList","parameters":[],"src":"4576:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75450,"nodeType":"FunctionDefinition","src":"6261:84:160","nodes":[],"body":{"id":75449,"nodeType":"Block","src":"6343:2:160","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":75441,"nodeType":"StructuredDocumentation","src":"6102:154:160","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":75447,"kind":"modifierInvocation","modifierName":{"id":75446,"name":"onlyOwner","nameLocations":["6333:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"6333:9:160"},"nodeType":"ModifierInvocation","src":"6333:9:160"}],"name":"_authorizeUpgrade","nameLocation":"6270:17:160","overrides":{"id":75445,"nodeType":"OverrideSpecifier","overrides":[],"src":"6324:8:160"},"parameters":{"id":75444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75443,"mutability":"mutable","name":"newImplementation","nameLocation":"6296:17:160","nodeType":"VariableDeclaration","scope":75450,"src":"6288:25:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75442,"name":"address","nodeType":"ElementaryTypeName","src":"6288:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6287:27:160"},"returnParameters":{"id":75448,"nodeType":"ParameterList","parameters":[],"src":"6343:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":75460,"nodeType":"FunctionDefinition","src":"6370:98:160","nodes":[],"body":{"id":75459,"nodeType":"Block","src":"6422:46:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75455,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6439:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"6439:22:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75454,"id":75458,"nodeType":"Return","src":"6432:29:160"}]},"baseFunctions":[73952],"functionSelector":"4455a38f","implemented":true,"kind":"function","modifiers":[],"name":"eraDuration","nameLocation":"6379:11:160","parameters":{"id":75451,"nodeType":"ParameterList","parameters":[],"src":"6390:2:160"},"returnParameters":{"id":75454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75460,"src":"6414:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75452,"name":"uint48","nodeType":"ElementaryTypeName","src":"6414:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6413:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75470,"nodeType":"FunctionDefinition","src":"6474:118:160","nodes":[],"body":{"id":75469,"nodeType":"Block","src":"6536:56:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75465,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6553:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6553:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6564:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"6553:32:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75464,"id":75468,"nodeType":"Return","src":"6546:39:160"}]},"baseFunctions":[73957],"functionSelector":"945cf2dd","implemented":true,"kind":"function","modifiers":[],"name":"minVaultEpochDuration","nameLocation":"6483:21:160","parameters":{"id":75461,"nodeType":"ParameterList","parameters":[],"src":"6504:2:160"},"returnParameters":{"id":75464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75470,"src":"6528:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75462,"name":"uint48","nodeType":"ElementaryTypeName","src":"6528:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6527:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75480,"nodeType":"FunctionDefinition","src":"6598:116:160","nodes":[],"body":{"id":75479,"nodeType":"Block","src":"6660:54:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75475,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6677:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6677:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6688:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"6677:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75474,"id":75478,"nodeType":"Return","src":"6670:37:160"}]},"baseFunctions":[73962],"functionSelector":"709d06ae","implemented":true,"kind":"function","modifiers":[],"name":"operatorGracePeriod","nameLocation":"6607:19:160","parameters":{"id":75471,"nodeType":"ParameterList","parameters":[],"src":"6626:2:160"},"returnParameters":{"id":75474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75480,"src":"6652:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75472,"name":"uint48","nodeType":"ElementaryTypeName","src":"6652:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6651:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75490,"nodeType":"FunctionDefinition","src":"6720:110:160","nodes":[],"body":{"id":75489,"nodeType":"Block","src":"6779:51:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75485,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6796:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6807:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"6796:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75484,"id":75488,"nodeType":"Return","src":"6789:34:160"}]},"baseFunctions":[73967],"functionSelector":"79a8b245","implemented":true,"kind":"function","modifiers":[],"name":"vaultGracePeriod","nameLocation":"6729:16:160","parameters":{"id":75481,"nodeType":"ParameterList","parameters":[],"src":"6745:2:160"},"returnParameters":{"id":75484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75490,"src":"6771:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75482,"name":"uint48","nodeType":"ElementaryTypeName","src":"6771:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6770:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75500,"nodeType":"FunctionDefinition","src":"6836:108:160","nodes":[],"body":{"id":75499,"nodeType":"Block","src":"6894:50:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75495,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6911:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6911:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6922:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"6911:26:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75494,"id":75498,"nodeType":"Return","src":"6904:33:160"}]},"baseFunctions":[73972],"functionSelector":"461e7a8e","implemented":true,"kind":"function","modifiers":[],"name":"minVetoDuration","nameLocation":"6845:15:160","parameters":{"id":75491,"nodeType":"ParameterList","parameters":[],"src":"6860:2:160"},"returnParameters":{"id":75494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75493,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75500,"src":"6886:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75492,"name":"uint48","nodeType":"ElementaryTypeName","src":"6886:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6885:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75510,"nodeType":"FunctionDefinition","src":"6950:122:160","nodes":[],"body":{"id":75509,"nodeType":"Block","src":"7015:57:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75505,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7032:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7032:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7043:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"7032:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75504,"id":75508,"nodeType":"Return","src":"7025:40:160"}]},"baseFunctions":[73977],"functionSelector":"373bba1f","implemented":true,"kind":"function","modifiers":[],"name":"minSlashExecutionDelay","nameLocation":"6959:22:160","parameters":{"id":75501,"nodeType":"ParameterList","parameters":[],"src":"6981:2:160"},"returnParameters":{"id":75504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75510,"src":"7007:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75502,"name":"uint48","nodeType":"ElementaryTypeName","src":"7007:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7006:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75520,"nodeType":"FunctionDefinition","src":"7078:129:160","nodes":[],"body":{"id":75519,"nodeType":"Block","src":"7147:60:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75515,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7164:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7164:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7175:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"7164:36:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75514,"id":75518,"nodeType":"Return","src":"7157:43:160"}]},"baseFunctions":[73982],"functionSelector":"9e032311","implemented":true,"kind":"function","modifiers":[],"name":"maxResolverSetEpochsDelay","nameLocation":"7087:25:160","parameters":{"id":75511,"nodeType":"ParameterList","parameters":[],"src":"7112:2:160"},"returnParameters":{"id":75514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75520,"src":"7138:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75512,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7137:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75530,"nodeType":"FunctionDefinition","src":"7213:124:160","nodes":[],"body":{"id":75529,"nodeType":"Block","src":"7279:58:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75525,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7296:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7296:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7307:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"7296:34:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":75524,"id":75528,"nodeType":"Return","src":"7289:41:160"}]},"baseFunctions":[73987],"functionSelector":"c9b0b1e9","implemented":true,"kind":"function","modifiers":[],"name":"allowedVaultImplVersion","nameLocation":"7222:23:160","parameters":{"id":75521,"nodeType":"ParameterList","parameters":[],"src":"7245:2:160"},"returnParameters":{"id":75524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75523,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75530,"src":"7271:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":75522,"name":"uint64","nodeType":"ElementaryTypeName","src":"7271:6:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7270:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75540,"nodeType":"FunctionDefinition","src":"7343:116:160","nodes":[],"body":{"id":75539,"nodeType":"Block","src":"7405:54:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75535,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7422:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7433:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"7422:30:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":75534,"id":75538,"nodeType":"Return","src":"7415:37:160"}]},"baseFunctions":[73992],"functionSelector":"d55a5bdf","implemented":true,"kind":"function","modifiers":[],"name":"vetoSlasherImplType","nameLocation":"7352:19:160","parameters":{"id":75531,"nodeType":"ParameterList","parameters":[],"src":"7371:2:160"},"returnParameters":{"id":75534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75540,"src":"7397:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":75532,"name":"uint64","nodeType":"ElementaryTypeName","src":"7397:6:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7396:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75550,"nodeType":"FunctionDefinition","src":"7465:99:160","nodes":[],"body":{"id":75549,"nodeType":"Block","src":"7519:45:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75545,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7536:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7547:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"7536:21:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75544,"id":75548,"nodeType":"Return","src":"7529:28:160"}]},"baseFunctions":[73997],"functionSelector":"d8dfeb45","implemented":true,"kind":"function","modifiers":[],"name":"collateral","nameLocation":"7474:10:160","parameters":{"id":75541,"nodeType":"ParameterList","parameters":[],"src":"7484:2:160"},"returnParameters":{"id":75544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75550,"src":"7510:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75542,"name":"address","nodeType":"ElementaryTypeName","src":"7510:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7509:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75560,"nodeType":"FunctionDefinition","src":"7570:99:160","nodes":[],"body":{"id":75559,"nodeType":"Block","src":"7624:45:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75555,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7641:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7641:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7652:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"7641:21:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75554,"id":75558,"nodeType":"Return","src":"7634:28:160"}]},"baseFunctions":[74002],"functionSelector":"ceebb69a","implemented":true,"kind":"function","modifiers":[],"name":"subnetwork","nameLocation":"7579:10:160","parameters":{"id":75551,"nodeType":"ParameterList","parameters":[],"src":"7589:2:160"},"returnParameters":{"id":75554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75560,"src":"7615:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7615:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7614:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75570,"nodeType":"FunctionDefinition","src":"7675:101:160","nodes":[],"body":{"id":75569,"nodeType":"Block","src":"7730:46:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75565,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7747:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7747:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7758:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"7747:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75564,"id":75568,"nodeType":"Return","src":"7740:29:160"}]},"baseFunctions":[74007],"functionSelector":"c639e2d6","implemented":true,"kind":"function","modifiers":[],"name":"maxAdminFee","nameLocation":"7684:11:160","parameters":{"id":75561,"nodeType":"ParameterList","parameters":[],"src":"7695:2:160"},"returnParameters":{"id":75564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75570,"src":"7721:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7721:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7720:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75580,"nodeType":"FunctionDefinition","src":"7782:91:160","nodes":[],"body":{"id":75579,"nodeType":"Block","src":"7832:41:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75575,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7849:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7849:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7860:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"7849:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75574,"id":75578,"nodeType":"Return","src":"7842:24:160"}]},"baseFunctions":[74012],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"7791:6:160","parameters":{"id":75571,"nodeType":"ParameterList","parameters":[],"src":"7797:2:160"},"returnParameters":{"id":75574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75580,"src":"7823:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75572,"name":"address","nodeType":"ElementaryTypeName","src":"7823:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7822:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75591,"nodeType":"FunctionDefinition","src":"7879:129:160","nodes":[],"body":{"id":75590,"nodeType":"Block","src":"7964:44:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75586,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7981:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7981:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7992:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"7981:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"functionReturnParameters":75585,"id":75589,"nodeType":"Return","src":"7974:27:160"}]},"baseFunctions":[74018],"functionSelector":"bcf33934","implemented":true,"kind":"function","modifiers":[],"name":"symbioticContracts","nameLocation":"7888:18:160","parameters":{"id":75581,"nodeType":"ParameterList","parameters":[],"src":"7906:2:160"},"returnParameters":{"id":75585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75591,"src":"7932:30:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_memory_ptr","typeString":"struct Gear.SymbioticContracts"},"typeName":{"id":75583,"nodeType":"UserDefinedTypeName","pathNode":{"id":75582,"name":"Gear.SymbioticContracts","nameLocations":["7932:4:160","7937:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":83195,"src":"7932:23:160"},"referencedDeclaration":83195,"src":"7932:23:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage_ptr","typeString":"struct Gear.SymbioticContracts"}},"visibility":"internal"}],"src":"7931:32:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75622,"nodeType":"FunctionDefinition","src":"8033:263:160","nodes":[],"body":{"id":75621,"nodeType":"Block","src":"8089:207:160","nodes":[],"statements":[{"assignments":[75598],"declarations":[{"constant":false,"id":75598,"mutability":"mutable","name":"$","nameLocation":"8115:1:160","nodeType":"VariableDeclaration","scope":75621,"src":"8099:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75597,"nodeType":"UserDefinedTypeName","pathNode":{"id":75596,"name":"Storage","nameLocations":["8099:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"8099:7:160"},"referencedDeclaration":73928,"src":"8099:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75601,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75599,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"8119:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8119:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8099:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75602,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8143:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8147:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8143:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":75604,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75598,"src":"8157:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75605,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8159:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8157:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8169:18:160","memberName":"roleSlashRequester","nodeType":"MemberAccess","referencedDeclaration":83190,"src":"8157:30:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8143:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75612,"nodeType":"IfStatement","src":"8139:101:160","trueBody":{"id":75611,"nodeType":"Block","src":"8189:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75608,"name":"NotSlashRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73824,"src":"8210:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8210:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75610,"nodeType":"RevertStatement","src":"8203:26:160"}]}},{"expression":{"id":75619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75613,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75598,"src":"8249:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8251:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8249:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8261:18:160","memberName":"roleSlashRequester","nodeType":"MemberAccess","referencedDeclaration":83190,"src":"8249:30:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75618,"name":"newRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75593,"src":"8282:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8249:40:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75620,"nodeType":"ExpressionStatement","src":"8249:40:160"}]},"baseFunctions":[74023],"functionSelector":"6d1064eb","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashRequester","nameLocation":"8042:20:160","parameters":{"id":75594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75593,"mutability":"mutable","name":"newRole","nameLocation":"8071:7:160","nodeType":"VariableDeclaration","scope":75622,"src":"8063:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75592,"name":"address","nodeType":"ElementaryTypeName","src":"8063:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8062:17:160"},"returnParameters":{"id":75595,"nodeType":"ParameterList","parameters":[],"src":"8089:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75653,"nodeType":"FunctionDefinition","src":"8302:259:160","nodes":[],"body":{"id":75652,"nodeType":"Block","src":"8357:204:160","nodes":[],"statements":[{"assignments":[75629],"declarations":[{"constant":false,"id":75629,"mutability":"mutable","name":"$","nameLocation":"8383:1:160","nodeType":"VariableDeclaration","scope":75652,"src":"8367:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75628,"nodeType":"UserDefinedTypeName","pathNode":{"id":75627,"name":"Storage","nameLocations":["8367:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"8367:7:160"},"referencedDeclaration":73928,"src":"8367:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75632,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75630,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"8387:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8367:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8411:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8415:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8411:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":75635,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75629,"src":"8425:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8427:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8425:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8437:17:160","memberName":"roleSlashExecutor","nodeType":"MemberAccess","referencedDeclaration":83192,"src":"8425:29:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8411:43:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75643,"nodeType":"IfStatement","src":"8407:99:160","trueBody":{"id":75642,"nodeType":"Block","src":"8456:50:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75639,"name":"NotSlashExecutor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73827,"src":"8477:16:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8477:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75641,"nodeType":"RevertStatement","src":"8470:25:160"}]}},{"expression":{"id":75650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75644,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75629,"src":"8515:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8517:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8515:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8527:17:160","memberName":"roleSlashExecutor","nodeType":"MemberAccess","referencedDeclaration":83192,"src":"8515:29:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75649,"name":"newRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75624,"src":"8547:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8515:39:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75651,"nodeType":"ExpressionStatement","src":"8515:39:160"}]},"baseFunctions":[74028],"functionSelector":"86c241a1","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashExecutor","nameLocation":"8311:19:160","parameters":{"id":75625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75624,"mutability":"mutable","name":"newRole","nameLocation":"8339:7:160","nodeType":"VariableDeclaration","scope":75653,"src":"8331:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75623,"name":"address","nodeType":"ElementaryTypeName","src":"8331:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8330:17:160"},"returnParameters":{"id":75626,"nodeType":"ParameterList","parameters":[],"src":"8357:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75707,"nodeType":"FunctionDefinition","src":"8617:405:160","nodes":[],"body":{"id":75706,"nodeType":"Block","src":"8654:368:160","nodes":[],"statements":[{"assignments":[75658],"declarations":[{"constant":false,"id":75658,"mutability":"mutable","name":"$","nameLocation":"8680:1:160","nodeType":"VariableDeclaration","scope":75706,"src":"8664:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75657,"nodeType":"UserDefinedTypeName","pathNode":{"id":75656,"name":"Storage","nameLocations":["8664:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"8664:7:160"},"referencedDeclaration":73928,"src":"8664:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75661,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75659,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"8684:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8684:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8664:30:160"},{"condition":{"id":75671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8709:61:160","subExpression":{"arguments":[{"expression":{"id":75668,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8759:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8763:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8759:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":75663,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75658,"src":"8720:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8722:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8720:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8732:16:160","memberName":"operatorRegistry","nodeType":"MemberAccess","referencedDeclaration":83178,"src":"8720:28:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75662,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"8710:9:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$65332_$","typeString":"type(contract IRegistry)"}},"id":75666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8710:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$65332","typeString":"contract IRegistry"}},"id":75667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8750:8:160","memberName":"isEntity","nodeType":"MemberAccess","referencedDeclaration":65317,"src":"8710:48:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":75670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8710:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75676,"nodeType":"IfStatement","src":"8705:121:160","trueBody":{"id":75675,"nodeType":"Block","src":"8772:54:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75672,"name":"OperatorDoesNotExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73773,"src":"8793:20:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8793:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75674,"nodeType":"RevertStatement","src":"8786:29:160"}]}},{"condition":{"id":75690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8839:77:160","subExpression":{"arguments":[{"expression":{"id":75683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8890:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8894:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8890:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":75687,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8910:4:160","typeDescriptions":{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}],"id":75686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8902:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75685,"name":"address","nodeType":"ElementaryTypeName","src":"8902:7:160","typeDescriptions":{}}},"id":75688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8902:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":75678,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75658,"src":"8854:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8856:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8854:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8866:12:160","memberName":"networkOptIn","nodeType":"MemberAccess","referencedDeclaration":83184,"src":"8854:24:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75677,"name":"IOptInService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66120,"src":"8840:13:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptInService_$66120_$","typeString":"type(contract IOptInService)"}},"id":75681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptInService_$66120","typeString":"contract IOptInService"}},"id":75682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8880:9:160","memberName":"isOptedIn","nodeType":"MemberAccess","referencedDeclaration":66067,"src":"8840:49:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view external returns (bool)"}},"id":75689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:76:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75695,"nodeType":"IfStatement","src":"8835:137:160","trueBody":{"id":75694,"nodeType":"Block","src":"8918:54:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75691,"name":"OperatorDoesNotOptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73776,"src":"8939:20:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8939:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75693,"nodeType":"RevertStatement","src":"8932:29:160"}]}},{"expression":{"arguments":[{"expression":{"id":75701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9001:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9005:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9001:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":75703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9013:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"expression":{"id":75696,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75658,"src":"8982:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8984:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"8982:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8994:6:160","memberName":"append","nodeType":"MemberAccess","referencedDeclaration":84171,"src":"8982:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint160_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint160)"}},"id":75704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8982:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75705,"nodeType":"ExpressionStatement","src":"8982:33:160"}]},"baseFunctions":[74067],"functionSelector":"2acde098","implemented":true,"kind":"function","modifiers":[],"name":"registerOperator","nameLocation":"8626:16:160","parameters":{"id":75654,"nodeType":"ParameterList","parameters":[],"src":"8642:2:160"},"returnParameters":{"id":75655,"nodeType":"ParameterList","parameters":[],"src":"8654:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75719,"nodeType":"FunctionDefinition","src":"9028:93:160","nodes":[],"body":{"id":75718,"nodeType":"Block","src":"9064:57:160","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9103:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9107:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9103:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75710,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9074:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9074:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9085:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9074:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9095:7:160","memberName":"disable","nodeType":"MemberAccess","referencedDeclaration":84265,"src":"9074:28:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":75716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9074:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75717,"nodeType":"ExpressionStatement","src":"9074:40:160"}]},"baseFunctions":[74071],"functionSelector":"d99fcd66","implemented":true,"kind":"function","modifiers":[],"name":"disableOperator","nameLocation":"9037:15:160","parameters":{"id":75708,"nodeType":"ParameterList","parameters":[],"src":"9052:2:160"},"returnParameters":{"id":75709,"nodeType":"ParameterList","parameters":[],"src":"9064:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75731,"nodeType":"FunctionDefinition","src":"9127:91:160","nodes":[],"body":{"id":75730,"nodeType":"Block","src":"9162:56:160","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75726,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9200:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9204:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9200:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75722,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9172:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9172:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9183:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9172:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9193:6:160","memberName":"enable","nodeType":"MemberAccess","referencedDeclaration":84218,"src":"9172:27:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":75728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9172:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75729,"nodeType":"ExpressionStatement","src":"9172:39:160"}]},"baseFunctions":[74075],"functionSelector":"3d15e74e","implemented":true,"kind":"function","modifiers":[],"name":"enableOperator","nameLocation":"9136:14:160","parameters":{"id":75720,"nodeType":"ParameterList","parameters":[],"src":"9150:2:160"},"returnParameters":{"id":75721,"nodeType":"ParameterList","parameters":[],"src":"9162:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75776,"nodeType":"FunctionDefinition","src":"9224:362:160","nodes":[],"body":{"id":75775,"nodeType":"Block","src":"9279:307:160","nodes":[],"statements":[{"assignments":[75738],"declarations":[{"constant":false,"id":75738,"mutability":"mutable","name":"$","nameLocation":"9305:1:160","nodeType":"VariableDeclaration","scope":75775,"src":"9289:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75737,"nodeType":"UserDefinedTypeName","pathNode":{"id":75736,"name":"Storage","nameLocations":["9289:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"9289:7:160"},"referencedDeclaration":73928,"src":"9289:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75741,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75739,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9309:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9309:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9289:30:160"},{"assignments":[null,75743],"declarations":[null,{"constant":false,"id":75743,"mutability":"mutable","name":"disabledTime","nameLocation":"9340:12:160","nodeType":"VariableDeclaration","scope":75775,"src":"9333:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75742,"name":"uint48","nodeType":"ElementaryTypeName","src":"9333:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":75749,"initialValue":{"arguments":[{"id":75747,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75733,"src":"9377:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75744,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75738,"src":"9356:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9358:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9356:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9368:8:160","memberName":"getTimes","nodeType":"MemberAccess","referencedDeclaration":84324,"src":"9356:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint48,uint48)"}},"id":75748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9356:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9330:56:160"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":75761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":75752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75750,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75743,"src":"9401:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9417:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9401:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":75760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75753,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"9422:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":75754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9427:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"9422:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":75755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9422:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":75759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75756,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75743,"src":"9441:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":75757,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75738,"src":"9456:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9458:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"9456:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9441:36:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9422:55:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9401:76:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75766,"nodeType":"IfStatement","src":"9397:144:160","trueBody":{"id":75765,"nodeType":"Block","src":"9479:62:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75762,"name":"OperatorGracePeriodNotPassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73761,"src":"9500:28:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9500:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75764,"nodeType":"RevertStatement","src":"9493:37:160"}]}},{"expression":{"arguments":[{"id":75772,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75733,"src":"9570:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75767,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75738,"src":"9551:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9553:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9551:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9563:6:160","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":56927,"src":"9551:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) returns (bool)"}},"id":75773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9551:28:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75774,"nodeType":"ExpressionStatement","src":"9551:28:160"}]},"baseFunctions":[74081],"functionSelector":"96115bc2","implemented":true,"kind":"function","modifiers":[],"name":"unregisterOperator","nameLocation":"9233:18:160","parameters":{"id":75734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75733,"mutability":"mutable","name":"operator","nameLocation":"9260:8:160","nodeType":"VariableDeclaration","scope":75776,"src":"9252:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75732,"name":"address","nodeType":"ElementaryTypeName","src":"9252:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9251:18:160"},"returnParameters":{"id":75735,"nodeType":"ParameterList","parameters":[],"src":"9279:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75834,"nodeType":"FunctionDefinition","src":"9592:494:160","nodes":[],"body":{"id":75833,"nodeType":"Block","src":"9699:387:160","nodes":[],"statements":[{"assignments":[75789],"declarations":[{"constant":false,"id":75789,"mutability":"mutable","name":"$","nameLocation":"9725:1:160","nodeType":"VariableDeclaration","scope":75833,"src":"9709:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75788,"nodeType":"UserDefinedTypeName","pathNode":{"id":75787,"name":"Storage","nameLocations":["9709:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"9709:7:160"},"referencedDeclaration":73928,"src":"9709:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75792,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75790,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9729:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9729:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9709:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75793,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9754:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9758:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9754:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75795,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9768:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9770:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"9768:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9754:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75802,"nodeType":"IfStatement","src":"9750:71:160","trueBody":{"id":75801,"nodeType":"Block","src":"9778:43:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75798,"name":"NotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73821,"src":"9799:9:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9799:11:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75800,"nodeType":"RevertStatement","src":"9792:18:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75803,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75778,"src":"9835:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75804,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9844:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9846:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"9844:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9835:21:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75811,"nodeType":"IfStatement","src":"9831:78:160","trueBody":{"id":75810,"nodeType":"Block","src":"9858:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75807,"name":"UnknownCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73758,"src":"9879:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9879:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75809,"nodeType":"RevertStatement","src":"9872:26:160"}]}},{"expression":{"arguments":[{"expression":{"id":75818,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9990:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9992:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"9990:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75820,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75778,"src":"10000:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75821,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75780,"src":"10007:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75822,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75782,"src":"10015:4:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"expression":{"expression":{"id":75813,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9943:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9945:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"9943:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9955:15:160","memberName":"operatorRewards","nodeType":"MemberAccess","referencedDeclaration":83188,"src":"9943:27:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75812,"name":"IDefaultOperatorRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71798,"src":"9919:23:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultOperatorRewards_$71798_$","typeString":"type(contract IDefaultOperatorRewards)"}},"id":75816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9919:52:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultOperatorRewards_$71798","typeString":"contract IDefaultOperatorRewards"}},"id":75817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9972:17:160","memberName":"distributeRewards","nodeType":"MemberAccess","referencedDeclaration":71780,"src":"9919:70:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,bytes32) external"}},"id":75823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9919:101:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75824,"nodeType":"ExpressionStatement","src":"9919:101:160"},{"expression":{"arguments":[{"arguments":[{"id":75828,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75780,"src":"10065:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75829,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75782,"src":"10073:4:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":75826,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10048:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10052:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"10048:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10048:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75825,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10038:9:160","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10038:41:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75786,"id":75832,"nodeType":"Return","src":"10031:48:160"}]},"baseFunctions":[74119],"functionSelector":"729e2f36","implemented":true,"kind":"function","modifiers":[],"name":"distributeOperatorRewards","nameLocation":"9601:25:160","parameters":{"id":75783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75778,"mutability":"mutable","name":"token","nameLocation":"9635:5:160","nodeType":"VariableDeclaration","scope":75834,"src":"9627:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75777,"name":"address","nodeType":"ElementaryTypeName","src":"9627:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75780,"mutability":"mutable","name":"amount","nameLocation":"9650:6:160","nodeType":"VariableDeclaration","scope":75834,"src":"9642:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75779,"name":"uint256","nodeType":"ElementaryTypeName","src":"9642:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75782,"mutability":"mutable","name":"root","nameLocation":"9666:4:160","nodeType":"VariableDeclaration","scope":75834,"src":"9658:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9658:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9626:45:160"},"returnParameters":{"id":75786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75834,"src":"9690:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9690:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9689:9:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75982,"nodeType":"FunctionDefinition","src":"10092:1224:160","nodes":[],"body":{"id":75981,"nodeType":"Block","src":"10239:1077:160","nodes":[],"statements":[{"assignments":[75846],"declarations":[{"constant":false,"id":75846,"mutability":"mutable","name":"$","nameLocation":"10265:1:160","nodeType":"VariableDeclaration","scope":75981,"src":"10249:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75845,"nodeType":"UserDefinedTypeName","pathNode":{"id":75844,"name":"Storage","nameLocations":["10249:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"10249:7:160"},"referencedDeclaration":73928,"src":"10249:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75849,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75847,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"10269:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10269:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10249:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75850,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10294:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10298:6:160","memberName":"sender","nodeType":"MemberAccess","src":"10294:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75852,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10308:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10310:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"10308:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10294:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75859,"nodeType":"IfStatement","src":"10290:71:160","trueBody":{"id":75858,"nodeType":"Block","src":"10318:43:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75855,"name":"NotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73821,"src":"10339:9:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10339:11:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75857,"nodeType":"RevertStatement","src":"10332:18:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75860,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"10375:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10387:5:160","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":83011,"src":"10375:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75862,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10396:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10398:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"10396:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10375:33:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75869,"nodeType":"IfStatement","src":"10371:90:160","trueBody":{"id":75868,"nodeType":"Block","src":"10410:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75865,"name":"UnknownCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73758,"src":"10431:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10431:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75867,"nodeType":"RevertStatement","src":"10424:26:160"}]}},{"assignments":[75871],"declarations":[{"constant":false,"id":75871,"mutability":"mutable","name":"distributionBytes","nameLocation":"10484:17:160","nodeType":"VariableDeclaration","scope":75981,"src":"10471:30:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75870,"name":"bytes","nodeType":"ElementaryTypeName","src":"10471:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75872,"nodeType":"VariableDeclarationStatement","src":"10471:30:160"},{"body":{"id":75964,"nodeType":"Block","src":"10573:615:160","statements":[{"assignments":[75889],"declarations":[{"constant":false,"id":75889,"mutability":"mutable","name":"rewards","nameLocation":"10613:7:160","nodeType":"VariableDeclaration","scope":75964,"src":"10587:33:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards"},"typeName":{"id":75888,"nodeType":"UserDefinedTypeName","pathNode":{"id":75887,"name":"Gear.StakerRewards","nameLocations":["10587:4:160","10592:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":83018,"src":"10587:18:160"},"referencedDeclaration":83018,"src":"10587:18:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_storage_ptr","typeString":"struct Gear.StakerRewards"}},"visibility":"internal"}],"id":75894,"initialValue":{"baseExpression":{"expression":{"id":75890,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"10623:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10635:12:160","memberName":"distribution","nodeType":"MemberAccess","referencedDeclaration":83007,"src":"10623:24:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$83018_memory_ptr_$dyn_memory_ptr","typeString":"struct Gear.StakerRewards memory[] memory"}},"id":75893,"indexExpression":{"id":75892,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75874,"src":"10648:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10623:27:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"nodeType":"VariableDeclarationStatement","src":"10587:63:160"},{"condition":{"id":75901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10669:33:160","subExpression":{"arguments":[{"expression":{"id":75898,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"10688:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10696:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":83015,"src":"10688:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75895,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10670:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10672:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"10670:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10679:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"10670:17:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":75900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10670:32:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75906,"nodeType":"IfStatement","src":"10665:99:160","trueBody":{"id":75905,"nodeType":"Block","src":"10704:60:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75902,"name":"NotRegisteredVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73809,"src":"10729:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10729:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75904,"nodeType":"RevertStatement","src":"10722:27:160"}]}},{"assignments":[75908],"declarations":[{"constant":false,"id":75908,"mutability":"mutable","name":"rewardsAddress","nameLocation":"10786:14:160","nodeType":"VariableDeclaration","scope":75964,"src":"10778:22:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75907,"name":"address","nodeType":"ElementaryTypeName","src":"10778:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75918,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":75914,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"10834:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10842:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":83015,"src":"10834:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75911,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10811:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10813:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"10811:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10820:13:160","memberName":"getPinnedData","nodeType":"MemberAccess","referencedDeclaration":84345,"src":"10811:22:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint160_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint160)"}},"id":75916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10811:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":75910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10803:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75909,"name":"address","nodeType":"ElementaryTypeName","src":"10803:7:160","typeDescriptions":{}}},"id":75917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10803:46:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10778:71:160"},{"assignments":[75920],"declarations":[{"constant":false,"id":75920,"mutability":"mutable","name":"data","nameLocation":"10877:4:160","nodeType":"VariableDeclaration","scope":75964,"src":"10864:17:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75919,"name":"bytes","nodeType":"ElementaryTypeName","src":"10864:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75935,"initialValue":{"arguments":[{"id":75923,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75839,"src":"10895:9:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":75924,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10906:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10908:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"10906:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"","id":75928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10927:2:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":75927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10921:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75926,"name":"bytes","nodeType":"ElementaryTypeName","src":"10921:5:160","typeDescriptions":{}}},"id":75929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10921:9:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"","id":75932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10938:2:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":75931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10932:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75930,"name":"bytes","nodeType":"ElementaryTypeName","src":"10932:5:160","typeDescriptions":{}}},"id":75933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10932:9:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75921,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10884:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10888:6:160","memberName":"encode","nodeType":"MemberAccess","src":"10884:10:160","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10884:58:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"10864:78:160"},{"expression":{"arguments":[{"expression":{"id":75940,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"11012:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11014:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"11012:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75942,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"11022:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11034:5:160","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":83011,"src":"11022:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75944,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"11041:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11049:6:160","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":83017,"src":"11041:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75946,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75920,"src":"11057:4:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":75937,"name":"rewardsAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75908,"src":"10978:14:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75936,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"10956:21:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultStakerRewards_$71992_$","typeString":"type(contract IDefaultStakerRewards)"}},"id":75938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10956:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultStakerRewards_$71992","typeString":"contract IDefaultStakerRewards"}},"id":75939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10994:17:160","memberName":"distributeRewards","nodeType":"MemberAccess","referencedDeclaration":72068,"src":"10956:55:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory) external"}},"id":75947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10956:106:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75948,"nodeType":"ExpressionStatement","src":"10956:106:160"},{"expression":{"id":75962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75949,"name":"distributionBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75871,"src":"11077:17:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75953,"name":"distributionBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75871,"src":"11110:17:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":75956,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"11146:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11154:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":83015,"src":"11146:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75958,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"11161:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$83018_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11169:6:160","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":83017,"src":"11161:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75954,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11129:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11133:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"11129:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11129:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11097:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75950,"name":"bytes","nodeType":"ElementaryTypeName","src":"11097:5:160","typeDescriptions":{}}},"id":75952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11103:6:160","memberName":"concat","nodeType":"MemberAccess","src":"11097:12:160","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11097:80:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11077:100:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75963,"nodeType":"ExpressionStatement","src":"11077:100:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75877,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75874,"src":"10531:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":75878,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"10535:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10547:12:160","memberName":"distribution","nodeType":"MemberAccess","referencedDeclaration":83007,"src":"10535:24:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$83018_memory_ptr_$dyn_memory_ptr","typeString":"struct Gear.StakerRewards memory[] memory"}},"id":75880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10560:6:160","memberName":"length","nodeType":"MemberAccess","src":"10535:31:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10531:35:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75965,"initializationExpression":{"assignments":[75874],"declarations":[{"constant":false,"id":75874,"mutability":"mutable","name":"i","nameLocation":"10524:1:160","nodeType":"VariableDeclaration","scope":75965,"src":"10516:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75873,"name":"uint256","nodeType":"ElementaryTypeName","src":"10516:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75876,"initialValue":{"hexValue":"30","id":75875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10528:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10516:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10568:3:160","subExpression":{"id":75882,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75874,"src":"10570:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75884,"nodeType":"ExpressionStatement","src":"10568:3:160"},"nodeType":"ForStatement","src":"10511:677:160"},{"expression":{"arguments":[{"arguments":[{"id":75970,"name":"distributionBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75871,"src":"11228:17:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":75973,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"11264:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11276:11:160","memberName":"totalAmount","nodeType":"MemberAccess","referencedDeclaration":83009,"src":"11264:23:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75975,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"11289:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11301:5:160","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":83011,"src":"11289:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":75971,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11247:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11251:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"11247:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11247:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11215:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75967,"name":"bytes","nodeType":"ElementaryTypeName","src":"11215:5:160","typeDescriptions":{}}},"id":75969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11221:6:160","memberName":"concat","nodeType":"MemberAccess","src":"11215:12:160","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11215:93:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75966,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11205:9:160","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:104:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75843,"id":75980,"nodeType":"Return","src":"11198:111:160"}]},"baseFunctions":[74130],"functionSelector":"7fbe95b5","implemented":true,"kind":"function","modifiers":[],"name":"distributeStakerRewards","nameLocation":"10101:23:160","parameters":{"id":75840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75837,"mutability":"mutable","name":"_commitment","nameLocation":"10161:11:160","nodeType":"VariableDeclaration","scope":75982,"src":"10125:47:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":75836,"nodeType":"UserDefinedTypeName","pathNode":{"id":75835,"name":"Gear.StakerRewardsCommitment","nameLocations":["10125:4:160","10130:23:160"],"nodeType":"IdentifierPath","referencedDeclaration":83012,"src":"10125:28:160"},"referencedDeclaration":83012,"src":"10125:28:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":75839,"mutability":"mutable","name":"timestamp","nameLocation":"10181:9:160","nodeType":"VariableDeclaration","scope":75982,"src":"10174:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75838,"name":"uint48","nodeType":"ElementaryTypeName","src":"10174:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"10124:67:160"},"returnParameters":{"id":75843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75982,"src":"10226:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75841,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10226:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10225:9:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76013,"nodeType":"FunctionDefinition","src":"11322:236:160","nodes":[],"body":{"id":76012,"nodeType":"Block","src":"11407:151:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":75993,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11432:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75992,"name":"_validateVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77089,"src":"11417:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11417:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75995,"nodeType":"ExpressionStatement","src":"11417:22:160"},{"expression":{"arguments":[{"id":75997,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11472:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75998,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75986,"src":"11480:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":75996,"name":"_validateStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77136,"src":"11449:22:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) view"}},"id":75999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11449:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76000,"nodeType":"ExpressionStatement","src":"11449:40:160"},{"expression":{"arguments":[{"id":76005,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11525:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":76008,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75986,"src":"11541:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11533:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":76006,"name":"uint160","nodeType":"ElementaryTypeName","src":"11533:7:160","typeDescriptions":{}}},"id":76009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11533:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76001,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11500:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11500:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11511:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11500:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11518:6:160","memberName":"append","nodeType":"MemberAccess","referencedDeclaration":84171,"src":"11500:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint160_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint160)"}},"id":76010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11500:51:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76011,"nodeType":"ExpressionStatement","src":"11500:51:160"}]},"baseFunctions":[74089],"functionSelector":"05c4fdf9","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":75989,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11399:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":75990,"kind":"modifierInvocation","modifierName":{"id":75988,"name":"vaultOwner","nameLocations":["11388:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11388:10:160"},"nodeType":"ModifierInvocation","src":"11388:18:160"}],"name":"registerVault","nameLocation":"11331:13:160","parameters":{"id":75987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75984,"mutability":"mutable","name":"_vault","nameLocation":"11353:6:160","nodeType":"VariableDeclaration","scope":76013,"src":"11345:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75983,"name":"address","nodeType":"ElementaryTypeName","src":"11345:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75986,"mutability":"mutable","name":"_rewards","nameLocation":"11369:8:160","nodeType":"VariableDeclaration","scope":76013,"src":"11361:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75985,"name":"address","nodeType":"ElementaryTypeName","src":"11361:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11344:34:160"},"returnParameters":{"id":75991,"nodeType":"ParameterList","parameters":[],"src":"11407:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76029,"nodeType":"FunctionDefinition","src":"11564:113:160","nodes":[],"body":{"id":76028,"nodeType":"Block","src":"11628:49:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76025,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76015,"src":"11664:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76021,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11638:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11638:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76023,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11649:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11638:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11656:7:160","memberName":"disable","nodeType":"MemberAccess","referencedDeclaration":84265,"src":"11638:25:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":76026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11638:32:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76027,"nodeType":"ExpressionStatement","src":"11638:32:160"}]},"baseFunctions":[74101],"functionSelector":"3ccce789","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76018,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76015,"src":"11621:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76019,"kind":"modifierInvocation","modifierName":{"id":76017,"name":"vaultOwner","nameLocations":["11610:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11610:10:160"},"nodeType":"ModifierInvocation","src":"11610:17:160"}],"name":"disableVault","nameLocation":"11573:12:160","parameters":{"id":76016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76015,"mutability":"mutable","name":"vault","nameLocation":"11594:5:160","nodeType":"VariableDeclaration","scope":76029,"src":"11586:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76014,"name":"address","nodeType":"ElementaryTypeName","src":"11586:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11585:15:160"},"returnParameters":{"id":76020,"nodeType":"ParameterList","parameters":[],"src":"11628:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76045,"nodeType":"FunctionDefinition","src":"11683:111:160","nodes":[],"body":{"id":76044,"nodeType":"Block","src":"11746:48:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76041,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"11781:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76037,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11756:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11756:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11767:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11756:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11774:6:160","memberName":"enable","nodeType":"MemberAccess","referencedDeclaration":84218,"src":"11756:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":76042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11756:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76043,"nodeType":"ExpressionStatement","src":"11756:31:160"}]},"baseFunctions":[74107],"functionSelector":"936f4330","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76034,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"11739:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76035,"kind":"modifierInvocation","modifierName":{"id":76033,"name":"vaultOwner","nameLocations":["11728:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11728:10:160"},"nodeType":"ModifierInvocation","src":"11728:17:160"}],"name":"enableVault","nameLocation":"11692:11:160","parameters":{"id":76032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76031,"mutability":"mutable","name":"vault","nameLocation":"11712:5:160","nodeType":"VariableDeclaration","scope":76045,"src":"11704:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76030,"name":"address","nodeType":"ElementaryTypeName","src":"11704:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11703:15:160"},"returnParameters":{"id":76036,"nodeType":"ParameterList","parameters":[],"src":"11746:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76093,"nodeType":"FunctionDefinition","src":"11800:355:160","nodes":[],"body":{"id":76092,"nodeType":"Block","src":"11867:288:160","nodes":[],"statements":[{"assignments":[76055],"declarations":[{"constant":false,"id":76055,"mutability":"mutable","name":"$","nameLocation":"11893:1:160","nodeType":"VariableDeclaration","scope":76092,"src":"11877:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76054,"nodeType":"UserDefinedTypeName","pathNode":{"id":76053,"name":"Storage","nameLocations":["11877:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"11877:7:160"},"referencedDeclaration":73928,"src":"11877:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76058,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76056,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11897:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11897:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11877:30:160"},{"assignments":[null,76060],"declarations":[null,{"constant":false,"id":76060,"mutability":"mutable","name":"disabledTime","nameLocation":"11927:12:160","nodeType":"VariableDeclaration","scope":76092,"src":"11920:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76059,"name":"uint48","nodeType":"ElementaryTypeName","src":"11920:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76066,"initialValue":{"arguments":[{"id":76064,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76047,"src":"11961:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76061,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"11943:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11945:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11943:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11952:8:160","memberName":"getTimes","nodeType":"MemberAccess","referencedDeclaration":84324,"src":"11943:17:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint48,uint48)"}},"id":76065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11943:24:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"11917:50:160"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76067,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76060,"src":"11982:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11998:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11982:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76070,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"12003:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":76071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12008:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"12003:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":76072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12003:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76073,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76060,"src":"12022:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":76074,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"12037:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12039:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"12037:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12022:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12003:52:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11982:73:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76083,"nodeType":"IfStatement","src":"11978:138:160","trueBody":{"id":76082,"nodeType":"Block","src":"12057:59:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76079,"name":"VaultGracePeriodNotPassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73764,"src":"12078:25:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12078:27:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76081,"nodeType":"RevertStatement","src":"12071:34:160"}]}},{"expression":{"arguments":[{"id":76089,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76047,"src":"12142:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76084,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"12126:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12128:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"12126:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12135:6:160","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":56927,"src":"12126:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) returns (bool)"}},"id":76090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12126:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76091,"nodeType":"ExpressionStatement","src":"12126:22:160"}]},"baseFunctions":[74095],"functionSelector":"2633b70f","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76050,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76047,"src":"11860:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76051,"kind":"modifierInvocation","modifierName":{"id":76049,"name":"vaultOwner","nameLocations":["11849:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11849:10:160"},"nodeType":"ModifierInvocation","src":"11849:17:160"}],"name":"unregisterVault","nameLocation":"11809:15:160","parameters":{"id":76048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76047,"mutability":"mutable","name":"vault","nameLocation":"11833:5:160","nodeType":"VariableDeclaration","scope":76093,"src":"11825:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76046,"name":"address","nodeType":"ElementaryTypeName","src":"11825:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11824:15:160"},"returnParameters":{"id":76052,"nodeType":"ParameterList","parameters":[],"src":"11867:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76289,"nodeType":"FunctionDefinition","src":"12161:1642:160","nodes":[],"body":{"id":76288,"nodeType":"Block","src":"12260:1543:160","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76104,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"12278:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12294:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12278:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76107,"name":"MaxValidatorsMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73836,"src":"12297:34:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12297:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76103,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12270:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12270:64:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76110,"nodeType":"ExpressionStatement","src":"12270:64:160"},{"assignments":[76115,76118],"declarations":[{"constant":false,"id":76115,"mutability":"mutable","name":"activeOperators","nameLocation":"12363:15:160","nodeType":"VariableDeclaration","scope":76288,"src":"12346:32:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76113,"name":"address","nodeType":"ElementaryTypeName","src":"12346:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76114,"nodeType":"ArrayTypeName","src":"12346:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":76118,"mutability":"mutable","name":"stakes","nameLocation":"12397:6:160","nodeType":"VariableDeclaration","scope":76288,"src":"12380:23:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":76116,"name":"uint256","nodeType":"ElementaryTypeName","src":"12380:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76117,"nodeType":"ArrayTypeName","src":"12380:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":76122,"initialValue":{"arguments":[{"id":76120,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76095,"src":"12433:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76119,"name":"getActiveOperatorsStakeAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76432,"src":"12407:25:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint48) view returns (address[] memory,uint256[] memory)"}},"id":76121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12407:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"12345:91:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76123,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12451:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12467:6:160","memberName":"length","nodeType":"MemberAccess","src":"12451:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":76125,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"12477:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:39:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76130,"nodeType":"IfStatement","src":"12447:92:160","trueBody":{"id":76129,"nodeType":"Block","src":"12492:47:160","statements":[{"expression":{"id":76127,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12513:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":76102,"id":76128,"nodeType":"Return","src":"12506:22:160"}]}},{"assignments":[76132],"declarations":[{"constant":false,"id":76132,"mutability":"mutable","name":"n","nameLocation":"12591:1:160","nodeType":"VariableDeclaration","scope":76288,"src":"12583:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76131,"name":"uint256","nodeType":"ElementaryTypeName","src":"12583:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76135,"initialValue":{"expression":{"id":76133,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12595:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12611:6:160","memberName":"length","nodeType":"MemberAccess","src":"12595:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12583:34:160"},{"body":{"id":76213,"nodeType":"Block","src":"12659:336:160","statements":[{"body":{"id":76211,"nodeType":"Block","src":"12713:272:160","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":76160,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12735:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76162,"indexExpression":{"id":76161,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12742:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12735:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":76163,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12747:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76167,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76164,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12754:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12758:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12754:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12747:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12735:25:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76210,"nodeType":"IfStatement","src":"12731:240:160","trueBody":{"id":76209,"nodeType":"Block","src":"12762:209:160","statements":[{"expression":{"id":76187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":76169,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12785:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76171,"indexExpression":{"id":76170,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12792:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12785:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":76172,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12796:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76176,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76173,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12803:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12807:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12803:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12796:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76177,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12784:26:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":76178,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12814:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76182,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76179,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12821:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12825:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12821:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12814:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":76183,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12829:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76185,"indexExpression":{"id":76184,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12836:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12829:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12813:26:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"12784:55:160","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76188,"nodeType":"ExpressionStatement","src":"12784:55:160"},{"expression":{"id":76207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":76189,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12862:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76191,"indexExpression":{"id":76190,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12878:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12862:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":76192,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12882:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76196,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76193,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12898:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12902:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12898:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12882:22:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76197,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12861:44:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":76198,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12909:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76202,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76199,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12925:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12929:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12925:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12909:22:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":76203,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12933:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76205,"indexExpression":{"id":76204,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12949:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12933:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12908:44:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"12861:91:160","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76208,"nodeType":"ExpressionStatement","src":"12861:91:160"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76150,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12693:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76151,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76132,"src":"12697:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12701:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12697:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":76154,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76137,"src":"12705:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12697:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12693:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76212,"initializationExpression":{"assignments":[76147],"declarations":[{"constant":false,"id":76147,"mutability":"mutable","name":"j","nameLocation":"12686:1:160","nodeType":"VariableDeclaration","scope":76212,"src":"12678:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76146,"name":"uint256","nodeType":"ElementaryTypeName","src":"12678:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76149,"initialValue":{"hexValue":"30","id":76148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12690:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12678:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12708:3:160","subExpression":{"id":76157,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12708:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76159,"nodeType":"ExpressionStatement","src":"12708:3:160"},"nodeType":"ForStatement","src":"12673:312:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76137,"src":"12647:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":76141,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76132,"src":"12651:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12647:5:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76214,"initializationExpression":{"assignments":[76137],"declarations":[{"constant":false,"id":76137,"mutability":"mutable","name":"i","nameLocation":"12640:1:160","nodeType":"VariableDeclaration","scope":76214,"src":"12632:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76136,"name":"uint256","nodeType":"ElementaryTypeName","src":"12632:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76139,"initialValue":{"hexValue":"30","id":76138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12644:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12632:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12654:3:160","subExpression":{"id":76143,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76137,"src":"12654:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76145,"nodeType":"ExpressionStatement","src":"12654:3:160"},"nodeType":"ForStatement","src":"12627:368:160"},{"assignments":[76216],"declarations":[{"constant":false,"id":76216,"mutability":"mutable","name":"sameStakeCount","nameLocation":"13070:14:160","nodeType":"VariableDeclaration","scope":76288,"src":"13062:22:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76215,"name":"uint256","nodeType":"ElementaryTypeName","src":"13062:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76218,"initialValue":{"hexValue":"31","id":76217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13087:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13062:26:160"},{"assignments":[76220],"declarations":[{"constant":false,"id":76220,"mutability":"mutable","name":"lastStake","nameLocation":"13106:9:160","nodeType":"VariableDeclaration","scope":76288,"src":"13098:17:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76219,"name":"uint256","nodeType":"ElementaryTypeName","src":"13098:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76226,"initialValue":{"baseExpression":{"id":76221,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"13118:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76225,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76222,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13125:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13141:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13125:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13118:25:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13098:45:160"},{"body":{"id":76250,"nodeType":"Block","src":"13218:123:160","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":76238,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"13236:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76240,"indexExpression":{"id":76239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"13243:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13236:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":76241,"name":"lastStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76220,"src":"13249:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13236:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76245,"nodeType":"IfStatement","src":"13232:66:160","trueBody":{"id":76244,"nodeType":"Block","src":"13260:38:160","statements":[{"id":76243,"nodeType":"Break","src":"13278:5:160"}]}},{"expression":{"id":76248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76246,"name":"sameStakeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"13311:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":76247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13329:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13311:19:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76249,"nodeType":"ExpressionStatement","src":"13311:19:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76231,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"13185:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76232,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13189:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13205:6:160","memberName":"length","nodeType":"MemberAccess","src":"13189:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13185:26:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76251,"initializationExpression":{"assignments":[76228],"declarations":[{"constant":false,"id":76228,"mutability":"mutable","name":"i","nameLocation":"13166:1:160","nodeType":"VariableDeclaration","scope":76251,"src":"13158:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76227,"name":"uint256","nodeType":"ElementaryTypeName","src":"13158:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76230,"initialValue":{"id":76229,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13170:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13158:25:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13213:3:160","subExpression":{"id":76235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"13213:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76237,"nodeType":"ExpressionStatement","src":"13213:3:160"},"nodeType":"ForStatement","src":"13153:188:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76252,"name":"sameStakeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"13355:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":76253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13372:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13355:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76284,"nodeType":"IfStatement","src":"13351:316:160","trueBody":{"id":76283,"nodeType":"Block","src":"13375:292:160","statements":[{"assignments":[76256],"declarations":[{"constant":false,"id":76256,"mutability":"mutable","name":"randomIndex","nameLocation":"13486:11:160","nodeType":"VariableDeclaration","scope":76283,"src":"13478:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76255,"name":"uint256","nodeType":"ElementaryTypeName","src":"13478:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76268,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":76262,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76095,"src":"13535:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":76260,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13518:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13522:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"13518:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13518:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76259,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13508:9:160","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13508:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13500:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76257,"name":"uint256","nodeType":"ElementaryTypeName","src":"13500:7:160","typeDescriptions":{}}},"id":76265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13500:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":76266,"name":"sameStakeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"13543:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13500:57:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13478:79:160"},{"expression":{"id":76281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76269,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13571:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76273,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76270,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13587:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13603:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13587:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13571:34:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":76274,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13608:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76280,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76275,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13624:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":76276,"name":"randomIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76256,"src":"13640:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13624:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13654:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13624:31:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13608:48:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13571:85:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76282,"nodeType":"ExpressionStatement","src":"13571:85:160"}]}},{"AST":{"nativeSrc":"13702:62:160","nodeType":"YulBlock","src":"13702:62:160","statements":[{"expression":{"arguments":[{"name":"activeOperators","nativeSrc":"13723:15:160","nodeType":"YulIdentifier","src":"13723:15:160"},{"name":"maxValidators","nativeSrc":"13740:13:160","nodeType":"YulIdentifier","src":"13740:13:160"}],"functionName":{"name":"mstore","nativeSrc":"13716:6:160","nodeType":"YulIdentifier","src":"13716:6:160"},"nativeSrc":"13716:38:160","nodeType":"YulFunctionCall","src":"13716:38:160"},"nativeSrc":"13716:38:160","nodeType":"YulExpressionStatement","src":"13716:38:160"}]},"evmVersion":"osaka","externalReferences":[{"declaration":76115,"isOffset":false,"isSlot":false,"src":"13723:15:160","valueSize":1},{"declaration":76097,"isOffset":false,"isSlot":false,"src":"13740:13:160","valueSize":1}],"flags":["memory-safe"],"id":76285,"nodeType":"InlineAssembly","src":"13677:87:160"},{"expression":{"id":76286,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13781:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":76102,"id":76287,"nodeType":"Return","src":"13774:22:160"}]},"baseFunctions":[74039],"functionSelector":"6e5c7932","implemented":true,"kind":"function","modifiers":[],"name":"makeElectionAt","nameLocation":"12170:14:160","parameters":{"id":76098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76095,"mutability":"mutable","name":"ts","nameLocation":"12192:2:160","nodeType":"VariableDeclaration","scope":76289,"src":"12185:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76094,"name":"uint48","nodeType":"ElementaryTypeName","src":"12185:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76097,"mutability":"mutable","name":"maxValidators","nameLocation":"12204:13:160","nodeType":"VariableDeclaration","scope":76289,"src":"12196:21:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76096,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12184:34:160"},"returnParameters":{"id":76102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76289,"src":"12242:16:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76099,"name":"address","nodeType":"ElementaryTypeName","src":"12242:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76100,"nodeType":"ArrayTypeName","src":"12242:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12241:18:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":76330,"nodeType":"FunctionDefinition","src":"13809:372:160","nodes":[],"body":{"id":76329,"nodeType":"Block","src":"13923:258:160","nodes":[],"statements":[{"assignments":[76302,76304],"declarations":[{"constant":false,"id":76302,"mutability":"mutable","name":"enabledTime","nameLocation":"13941:11:160","nodeType":"VariableDeclaration","scope":76329,"src":"13934:18:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76301,"name":"uint48","nodeType":"ElementaryTypeName","src":"13934:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76304,"mutability":"mutable","name":"disabledTime","nameLocation":"13961:12:160","nodeType":"VariableDeclaration","scope":76329,"src":"13954:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76303,"name":"uint48","nodeType":"ElementaryTypeName","src":"13954:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76311,"initialValue":{"arguments":[{"id":76309,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76291,"src":"14007:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76305,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"13977:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13977:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13988:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"13977:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13998:8:160","memberName":"getTimes","nodeType":"MemberAccess","referencedDeclaration":84324,"src":"13977:29:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint48,uint48)"}},"id":76310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13977:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"13933:83:160"},{"condition":{"id":76317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14030:44:160","subExpression":{"arguments":[{"id":76313,"name":"enabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76302,"src":"14044:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76314,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76304,"src":"14057:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76315,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"14071:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76312,"name":"_wasActiveAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76717,"src":"14031:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$_t_uint48_$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48,uint48,uint48) pure returns (bool)"}},"id":76316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14031:43:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76321,"nodeType":"IfStatement","src":"14026:83:160","trueBody":{"id":76320,"nodeType":"Block","src":"14076:33:160","statements":[{"expression":{"hexValue":"30","id":76318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14097:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":76300,"id":76319,"nodeType":"Return","src":"14090:8:160"}]}},{"expression":{"id":76327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76322,"name":"stake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76299,"src":"14119:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76324,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76291,"src":"14161:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76325,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"14171:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76323,"name":"_collectOperatorStakeFromVaultsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76688,"src":"14127:33:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint48_$returns$_t_uint256_$","typeString":"function (address,uint48) view returns (uint256)"}},"id":76326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14127:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14119:55:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76328,"nodeType":"ExpressionStatement","src":"14119:55:160"}]},"baseFunctions":[74049],"functionSelector":"d99ddfc7","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76296,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"13895:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":76297,"kind":"modifierInvocation","modifierName":{"id":76295,"name":"validTimestamp","nameLocations":["13880:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":77146,"src":"13880:14:160"},"nodeType":"ModifierInvocation","src":"13880:18:160"}],"name":"getOperatorStakeAt","nameLocation":"13818:18:160","parameters":{"id":76294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76291,"mutability":"mutable","name":"operator","nameLocation":"13845:8:160","nodeType":"VariableDeclaration","scope":76330,"src":"13837:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76290,"name":"address","nodeType":"ElementaryTypeName","src":"13837:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76293,"mutability":"mutable","name":"ts","nameLocation":"13862:2:160","nodeType":"VariableDeclaration","scope":76330,"src":"13855:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76292,"name":"uint48","nodeType":"ElementaryTypeName","src":"13855:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13836:29:160"},"returnParameters":{"id":76300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76299,"mutability":"mutable","name":"stake","nameLocation":"13916:5:160","nodeType":"VariableDeclaration","scope":76330,"src":"13908:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76298,"name":"uint256","nodeType":"ElementaryTypeName","src":"13908:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13907:15:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":76432,"nodeType":"FunctionDefinition","src":"14224:940:160","nodes":[],"body":{"id":76431,"nodeType":"Block","src":"14405:759:160","nodes":[],"statements":[{"assignments":[76346],"declarations":[{"constant":false,"id":76346,"mutability":"mutable","name":"$","nameLocation":"14431:1:160","nodeType":"VariableDeclaration","scope":76431,"src":"14415:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76345,"nodeType":"UserDefinedTypeName","pathNode":{"id":76344,"name":"Storage","nameLocations":["14415:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"14415:7:160"},"referencedDeclaration":73928,"src":"14415:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76349,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76347,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"14435:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14435:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14415:30:160"},{"expression":{"id":76359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76350,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76339,"src":"14455:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76354,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14487:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14489:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14487:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14499:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"14487:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14487:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14473:13:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":76351,"name":"address","nodeType":"ElementaryTypeName","src":"14477:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76352,"nodeType":"ArrayTypeName","src":"14477:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":76358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14473:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"14455:53:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76360,"nodeType":"ExpressionStatement","src":"14455:53:160"},{"expression":{"id":76370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76361,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"14518:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76365,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14541:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14543:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14541:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14553:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"14541:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14541:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14527:13:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":76362,"name":"uint256","nodeType":"ElementaryTypeName","src":"14531:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76363,"nodeType":"ArrayTypeName","src":"14531:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":76369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14527:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14518:44:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76371,"nodeType":"ExpressionStatement","src":"14518:44:160"},{"assignments":[76373],"declarations":[{"constant":false,"id":76373,"mutability":"mutable","name":"operatorIdx","nameLocation":"14581:11:160","nodeType":"VariableDeclaration","scope":76431,"src":"14573:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76372,"name":"uint256","nodeType":"ElementaryTypeName","src":"14573:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76375,"initialValue":{"hexValue":"30","id":76374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14595:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14573:23:160"},{"body":{"id":76428,"nodeType":"Block","src":"14654:369:160","statements":[{"assignments":[76389,76391,76393],"declarations":[{"constant":false,"id":76389,"mutability":"mutable","name":"operator","nameLocation":"14677:8:160","nodeType":"VariableDeclaration","scope":76428,"src":"14669:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76388,"name":"address","nodeType":"ElementaryTypeName","src":"14669:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76391,"mutability":"mutable","name":"enabled","nameLocation":"14694:7:160","nodeType":"VariableDeclaration","scope":76428,"src":"14687:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76390,"name":"uint48","nodeType":"ElementaryTypeName","src":"14687:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76393,"mutability":"mutable","name":"disabled","nameLocation":"14710:8:160","nodeType":"VariableDeclaration","scope":76428,"src":"14703:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76392,"name":"uint48","nodeType":"ElementaryTypeName","src":"14703:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76399,"initialValue":{"arguments":[{"id":76397,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76377,"src":"14746:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":76394,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14722:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14724:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14722:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14734:11:160","memberName":"atWithTimes","nodeType":"MemberAccess","referencedDeclaration":84300,"src":"14722:23:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint48,uint48)"}},"id":76398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14722:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$_t_uint48_$","typeString":"tuple(address,uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"14668:80:160"},{"condition":{"id":76405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14767:36:160","subExpression":{"arguments":[{"id":76401,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76391,"src":"14781:7:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76402,"name":"disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76393,"src":"14790:8:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76403,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76332,"src":"14800:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76400,"name":"_wasActiveAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76717,"src":"14768:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$_t_uint48_$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48,uint48,uint48) pure returns (bool)"}},"id":76404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14768:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76408,"nodeType":"IfStatement","src":"14763:83:160","trueBody":{"id":76407,"nodeType":"Block","src":"14805:41:160","statements":[{"id":76406,"nodeType":"Continue","src":"14823:8:160"}]}},{"expression":{"id":76413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76409,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76339,"src":"14860:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76411,"indexExpression":{"id":76410,"name":"operatorIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"14876:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14860:28:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76412,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76389,"src":"14891:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14860:39:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76414,"nodeType":"ExpressionStatement","src":"14860:39:160"},{"expression":{"id":76422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76415,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"14913:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76417,"indexExpression":{"id":76416,"name":"operatorIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"14920:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14913:19:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76419,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76389,"src":"14969:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76420,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76332,"src":"14979:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76418,"name":"_collectOperatorStakeFromVaultsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76688,"src":"14935:33:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint48_$returns$_t_uint256_$","typeString":"function (address,uint48) view returns (uint256)"}},"id":76421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14935:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14913:69:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76423,"nodeType":"ExpressionStatement","src":"14913:69:160"},{"expression":{"id":76426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76424,"name":"operatorIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"14996:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":76425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15011:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14996:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76427,"nodeType":"ExpressionStatement","src":"14996:16:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76377,"src":"14623:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76380,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14627:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14629:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14627:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14639:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"14627:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14627:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14623:24:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76429,"initializationExpression":{"assignments":[76377],"declarations":[{"constant":false,"id":76377,"mutability":"mutable","name":"i","nameLocation":"14620:1:160","nodeType":"VariableDeclaration","scope":76429,"src":"14612:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76376,"name":"uint256","nodeType":"ElementaryTypeName","src":"14612:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76378,"nodeType":"VariableDeclarationStatement","src":"14612:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14649:3:160","subExpression":{"id":76385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76377,"src":"14651:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76387,"nodeType":"ExpressionStatement","src":"14649:3:160"},"nodeType":"ForStatement","src":"14607:416:160"},{"AST":{"nativeSrc":"15058:100:160","nodeType":"YulBlock","src":"15058:100:160","statements":[{"expression":{"arguments":[{"name":"activeOperators","nativeSrc":"15079:15:160","nodeType":"YulIdentifier","src":"15079:15:160"},{"name":"operatorIdx","nativeSrc":"15096:11:160","nodeType":"YulIdentifier","src":"15096:11:160"}],"functionName":{"name":"mstore","nativeSrc":"15072:6:160","nodeType":"YulIdentifier","src":"15072:6:160"},"nativeSrc":"15072:36:160","nodeType":"YulFunctionCall","src":"15072:36:160"},"nativeSrc":"15072:36:160","nodeType":"YulExpressionStatement","src":"15072:36:160"},{"expression":{"arguments":[{"name":"stakes","nativeSrc":"15128:6:160","nodeType":"YulIdentifier","src":"15128:6:160"},{"name":"operatorIdx","nativeSrc":"15136:11:160","nodeType":"YulIdentifier","src":"15136:11:160"}],"functionName":{"name":"mstore","nativeSrc":"15121:6:160","nodeType":"YulIdentifier","src":"15121:6:160"},"nativeSrc":"15121:27:160","nodeType":"YulFunctionCall","src":"15121:27:160"},"nativeSrc":"15121:27:160","nodeType":"YulExpressionStatement","src":"15121:27:160"}]},"evmVersion":"osaka","externalReferences":[{"declaration":76339,"isOffset":false,"isSlot":false,"src":"15079:15:160","valueSize":1},{"declaration":76373,"isOffset":false,"isSlot":false,"src":"15096:11:160","valueSize":1},{"declaration":76373,"isOffset":false,"isSlot":false,"src":"15136:11:160","valueSize":1},{"declaration":76342,"isOffset":false,"isSlot":false,"src":"15128:6:160","valueSize":1}],"flags":["memory-safe"],"id":76430,"nodeType":"InlineAssembly","src":"15033:125:160"}]},"functionSelector":"b5e5ad12","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76335,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76332,"src":"14321:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":76336,"kind":"modifierInvocation","modifierName":{"id":76334,"name":"validTimestamp","nameLocations":["14306:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":77146,"src":"14306:14:160"},"nodeType":"ModifierInvocation","src":"14306:18:160"}],"name":"getActiveOperatorsStakeAt","nameLocation":"14233:25:160","parameters":{"id":76333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76332,"mutability":"mutable","name":"ts","nameLocation":"14266:2:160","nodeType":"VariableDeclaration","scope":76432,"src":"14259:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76331,"name":"uint48","nodeType":"ElementaryTypeName","src":"14259:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14258:11:160"},"returnParameters":{"id":76343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76339,"mutability":"mutable","name":"activeOperators","nameLocation":"14359:15:160","nodeType":"VariableDeclaration","scope":76432,"src":"14342:32:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76337,"name":"address","nodeType":"ElementaryTypeName","src":"14342:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76338,"nodeType":"ArrayTypeName","src":"14342:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":76342,"mutability":"mutable","name":"stakes","nameLocation":"14393:6:160","nodeType":"VariableDeclaration","scope":76432,"src":"14376:23:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":76340,"name":"uint256","nodeType":"ElementaryTypeName","src":"14376:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76341,"nodeType":"ArrayTypeName","src":"14376:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14341:59:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":76548,"nodeType":"FunctionDefinition","src":"15170:952:160","nodes":[],"body":{"id":76547,"nodeType":"Block","src":"15228:894:160","nodes":[],"statements":[{"assignments":[76441],"declarations":[{"constant":false,"id":76441,"mutability":"mutable","name":"$","nameLocation":"15254:1:160","nodeType":"VariableDeclaration","scope":76547,"src":"15238:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76440,"nodeType":"UserDefinedTypeName","pathNode":{"id":76439,"name":"Storage","nameLocations":["15238:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"15238:7:160"},"referencedDeclaration":73928,"src":"15238:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76444,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76442,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"15258:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15258:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15238:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15283:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15287:6:160","memberName":"sender","nodeType":"MemberAccess","src":"15283:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":76447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"15297:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15299:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"15297:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":76449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15309:18:160","memberName":"roleSlashRequester","nodeType":"MemberAccess","referencedDeclaration":83190,"src":"15297:30:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15283:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76455,"nodeType":"IfStatement","src":"15279:101:160","trueBody":{"id":76454,"nodeType":"Block","src":"15329:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76451,"name":"NotSlashRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73824,"src":"15350:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15350:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76453,"nodeType":"RevertStatement","src":"15343:26:160"}]}},{"body":{"id":76545,"nodeType":"Block","src":"15428:688:160","statements":[{"assignments":[76468],"declarations":[{"constant":false,"id":76468,"mutability":"mutable","name":"slashData","nameLocation":"15461:9:160","nodeType":"VariableDeclaration","scope":76545,"src":"15442:28:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData"},"typeName":{"id":76467,"nodeType":"UserDefinedTypeName","pathNode":{"id":76466,"name":"SlashData","nameLocations":["15442:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":73942,"src":"15442:9:160"},"referencedDeclaration":73942,"src":"15442:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_storage_ptr","typeString":"struct IMiddleware.SlashData"}},"visibility":"internal"}],"id":76472,"initialValue":{"baseExpression":{"id":76469,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76436,"src":"15473:4:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}},"id":76471,"indexExpression":{"id":76470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76457,"src":"15478:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15473:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"nodeType":"VariableDeclarationStatement","src":"15442:38:160"},{"condition":{"id":76479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15498:41:160","subExpression":{"arguments":[{"expression":{"id":76476,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"15520:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15530:8:160","memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":73935,"src":"15520:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76473,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"15499:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15501:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"15499:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15511:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"15499:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":76478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15499:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76484,"nodeType":"IfStatement","src":"15494:110:160","trueBody":{"id":76483,"nodeType":"Block","src":"15541:63:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76480,"name":"NotRegisteredOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73812,"src":"15566:21:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15566:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76482,"nodeType":"RevertStatement","src":"15559:30:160"}]}},{"body":{"id":76543,"nodeType":"Block","src":"15668:438:160","statements":[{"assignments":[76498],"declarations":[{"constant":false,"id":76498,"mutability":"mutable","name":"vaultData","nameLocation":"15710:9:160","nodeType":"VariableDeclaration","scope":76543,"src":"15686:33:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData"},"typeName":{"id":76497,"nodeType":"UserDefinedTypeName","pathNode":{"id":76496,"name":"VaultSlashData","nameLocations":["15686:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":73933,"src":"15686:14:160"},"referencedDeclaration":73933,"src":"15686:14:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_storage_ptr","typeString":"struct IMiddleware.VaultSlashData"}},"visibility":"internal"}],"id":76503,"initialValue":{"baseExpression":{"expression":{"id":76499,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"15722:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15732:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73941,"src":"15722:16:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_VaultSlashData_$73933_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata[] calldata"}},"id":76502,"indexExpression":{"id":76501,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76486,"src":"15739:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15722:19:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"nodeType":"VariableDeclarationStatement","src":"15686:55:160"},{"condition":{"id":76510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15764:35:160","subExpression":{"arguments":[{"expression":{"id":76507,"name":"vaultData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76498,"src":"15783:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"id":76508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15793:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73930,"src":"15783:15:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76504,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"15765:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15767:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"15765:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76506,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15774:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"15765:17:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":76509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15765:34:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76515,"nodeType":"IfStatement","src":"15760:109:160","trueBody":{"id":76514,"nodeType":"Block","src":"15801:68:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76511,"name":"NotRegisteredVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73809,"src":"15830:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15830:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76513,"nodeType":"RevertStatement","src":"15823:27:160"}]}},{"assignments":[76517],"declarations":[{"constant":false,"id":76517,"mutability":"mutable","name":"slasher","nameLocation":"15895:7:160","nodeType":"VariableDeclaration","scope":76543,"src":"15887:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76516,"name":"address","nodeType":"ElementaryTypeName","src":"15887:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76524,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":76519,"name":"vaultData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76498,"src":"15912:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"id":76520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15922:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73930,"src":"15912:15:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76518,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"15905:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15905:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15929:7:160","memberName":"slasher","nodeType":"MemberAccess","referencedDeclaration":66928,"src":"15905:31:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15905:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15887:51:160"},{"expression":{"arguments":[{"expression":{"id":76529,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"16012:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16014:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"16012:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76531,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"16026:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16036:8:160","memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":73935,"src":"16026:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76533,"name":"vaultData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76498,"src":"16046:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"id":76534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16056:6:160","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":73932,"src":"16046:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76535,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"16064:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16074:2:160","memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":73937,"src":"16064:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[{"hexValue":"30","id":76539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16088:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16078:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":76537,"name":"bytes","nodeType":"ElementaryTypeName","src":"16082:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":76540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16078:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":76526,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76517,"src":"15969:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76525,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"15956:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15956:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15999:12:160","memberName":"requestSlash","nodeType":"MemberAccess","referencedDeclaration":66489,"src":"15956:55:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint48_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes32,address,uint256,uint48,bytes memory) external returns (uint256)"}},"id":76541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15956:135:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76542,"nodeType":"ExpressionStatement","src":"15956:135:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76488,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76486,"src":"15634:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":76489,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"15638:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15648:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73941,"src":"15638:16:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_VaultSlashData_$73933_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata[] calldata"}},"id":76491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15655:6:160","memberName":"length","nodeType":"MemberAccess","src":"15638:23:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15634:27:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76544,"initializationExpression":{"assignments":[76486],"declarations":[{"constant":false,"id":76486,"mutability":"mutable","name":"j","nameLocation":"15631:1:160","nodeType":"VariableDeclaration","scope":76544,"src":"15623:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76485,"name":"uint256","nodeType":"ElementaryTypeName","src":"15623:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76487,"nodeType":"VariableDeclarationStatement","src":"15623:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15663:3:160","subExpression":{"id":76493,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76486,"src":"15665:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76495,"nodeType":"ExpressionStatement","src":"15663:3:160"},"nodeType":"ForStatement","src":"15618:488:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76459,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76457,"src":"15406:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76460,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76436,"src":"15410:4:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}},"id":76461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15415:6:160","memberName":"length","nodeType":"MemberAccess","src":"15410:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15406:15:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76546,"initializationExpression":{"assignments":[76457],"declarations":[{"constant":false,"id":76457,"mutability":"mutable","name":"i","nameLocation":"15403:1:160","nodeType":"VariableDeclaration","scope":76546,"src":"15395:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76456,"name":"uint256","nodeType":"ElementaryTypeName","src":"15395:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76458,"nodeType":"VariableDeclarationStatement","src":"15395:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15423:3:160","subExpression":{"id":76463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76457,"src":"15425:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76465,"nodeType":"ExpressionStatement","src":"15423:3:160"},"nodeType":"ForStatement","src":"15390:726:160"}]},"baseFunctions":[74056],"functionSelector":"0a71094c","implemented":true,"kind":"function","modifiers":[],"name":"requestSlash","nameLocation":"15179:12:160","parameters":{"id":76437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76436,"mutability":"mutable","name":"data","nameLocation":"15213:4:160","nodeType":"VariableDeclaration","scope":76548,"src":"15192:25:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData[]"},"typeName":{"baseType":{"id":76434,"nodeType":"UserDefinedTypeName","pathNode":{"id":76433,"name":"SlashData","nameLocations":["15192:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":73942,"src":"15192:9:160"},"referencedDeclaration":73942,"src":"15192:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_storage_ptr","typeString":"struct IMiddleware.SlashData"}},"id":76435,"nodeType":"ArrayTypeName","src":"15192:11:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashData[]"}},"visibility":"internal"}],"src":"15191:27:160"},"returnParameters":{"id":76438,"nodeType":"ParameterList","parameters":[],"src":"15228:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76617,"nodeType":"FunctionDefinition","src":"16128:528:160","nodes":[],"body":{"id":76616,"nodeType":"Block","src":"16195:461:160","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76555,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16209:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16213:6:160","memberName":"sender","nodeType":"MemberAccess","src":"16209:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76557,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"16223:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16223:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16234:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"16223:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":76560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16244:17:160","memberName":"roleSlashExecutor","nodeType":"MemberAccess","referencedDeclaration":83192,"src":"16223:38:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16209:52:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76566,"nodeType":"IfStatement","src":"16205:108:160","trueBody":{"id":76565,"nodeType":"Block","src":"16263:50:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76562,"name":"NotSlashExecutor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73827,"src":"16284:16:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16284:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76564,"nodeType":"RevertStatement","src":"16277:25:160"}]}},{"body":{"id":76614,"nodeType":"Block","src":"16364:286:160","statements":[{"assignments":[76579],"declarations":[{"constant":false,"id":76579,"mutability":"mutable","name":"slash","nameLocation":"16403:5:160","nodeType":"VariableDeclaration","scope":76614,"src":"16378:30:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier"},"typeName":{"id":76578,"nodeType":"UserDefinedTypeName","pathNode":{"id":76577,"name":"SlashIdentifier","nameLocations":["16378:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":73947,"src":"16378:15:160"},"referencedDeclaration":73947,"src":"16378:15:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier"}},"visibility":"internal"}],"id":76583,"initialValue":{"baseExpression":{"id":76580,"name":"slashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76552,"src":"16411:7:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}},"id":76582,"indexExpression":{"id":76581,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"16419:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16411:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"nodeType":"VariableDeclarationStatement","src":"16378:43:160"},{"condition":{"id":76591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16440:40:160","subExpression":{"arguments":[{"expression":{"id":76588,"name":"slash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76579,"src":"16468:5:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"id":76589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16474:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73944,"src":"16468:11:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76584,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"16441:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16441:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16452:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"16441:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16459:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"16441:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":76590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16441:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76596,"nodeType":"IfStatement","src":"16436:106:160","trueBody":{"id":76595,"nodeType":"Block","src":"16482:60:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76592,"name":"NotRegisteredVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73809,"src":"16507:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16507:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76594,"nodeType":"RevertStatement","src":"16500:27:160"}]}},{"expression":{"arguments":[{"expression":{"id":76606,"name":"slash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76579,"src":"16613:5:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"id":76607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16619:5:160","memberName":"index","nodeType":"MemberAccess","referencedDeclaration":73946,"src":"16613:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":76610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16636:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16626:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":76608,"name":"bytes","nodeType":"ElementaryTypeName","src":"16630:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":76611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16626:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":76599,"name":"slash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76579,"src":"16576:5:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"id":76600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16582:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73944,"src":"16576:11:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76598,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"16569:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16569:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16589:7:160","memberName":"slasher","nodeType":"MemberAccess","referencedDeclaration":66928,"src":"16569:27:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16569:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76597,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"16556:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16556:43:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16600:12:160","memberName":"executeSlash","nodeType":"MemberAccess","referencedDeclaration":66499,"src":"16556:56:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,bytes memory) external returns (uint256)"}},"id":76612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16556:83:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76613,"nodeType":"ExpressionStatement","src":"16556:83:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76570,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"16339:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76571,"name":"slashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76552,"src":"16343:7:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}},"id":76572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16351:6:160","memberName":"length","nodeType":"MemberAccess","src":"16343:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16339:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76615,"initializationExpression":{"assignments":[76568],"declarations":[{"constant":false,"id":76568,"mutability":"mutable","name":"i","nameLocation":"16336:1:160","nodeType":"VariableDeclaration","scope":76615,"src":"16328:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76567,"name":"uint256","nodeType":"ElementaryTypeName","src":"16328:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76569,"nodeType":"VariableDeclarationStatement","src":"16328:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16359:3:160","subExpression":{"id":76574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"16361:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76576,"nodeType":"ExpressionStatement","src":"16359:3:160"},"nodeType":"ForStatement","src":"16323:327:160"}]},"baseFunctions":[74063],"functionSelector":"af962995","implemented":true,"kind":"function","modifiers":[],"name":"executeSlash","nameLocation":"16137:12:160","parameters":{"id":76553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76552,"mutability":"mutable","name":"slashes","nameLocation":"16177:7:160","nodeType":"VariableDeclaration","scope":76617,"src":"16150:34:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"},"typeName":{"baseType":{"id":76550,"nodeType":"UserDefinedTypeName","pathNode":{"id":76549,"name":"SlashIdentifier","nameLocations":["16150:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":73947,"src":"16150:15:160"},"referencedDeclaration":73947,"src":"16150:15:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier"}},"id":76551,"nodeType":"ArrayTypeName","src":"16150:17:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"}},"visibility":"internal"}],"src":"16149:36:160"},"returnParameters":{"id":76554,"nodeType":"ParameterList","parameters":[],"src":"16195:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76688,"nodeType":"FunctionDefinition","src":"16662:556:160","nodes":[],"body":{"id":76687,"nodeType":"Block","src":"16771:447:160","nodes":[],"statements":[{"assignments":[76628],"declarations":[{"constant":false,"id":76628,"mutability":"mutable","name":"$","nameLocation":"16797:1:160","nodeType":"VariableDeclaration","scope":76687,"src":"16781:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76627,"nodeType":"UserDefinedTypeName","pathNode":{"id":76626,"name":"Storage","nameLocations":["16781:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"16781:7:160"},"referencedDeclaration":73928,"src":"16781:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76631,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76629,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"16801:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16801:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16781:30:160"},{"body":{"id":76685,"nodeType":"Block","src":"16865:347:160","statements":[{"assignments":[76645,76647,76649],"declarations":[{"constant":false,"id":76645,"mutability":"mutable","name":"vault","nameLocation":"16888:5:160","nodeType":"VariableDeclaration","scope":76685,"src":"16880:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76644,"name":"address","nodeType":"ElementaryTypeName","src":"16880:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76647,"mutability":"mutable","name":"vaultEnabledTime","nameLocation":"16902:16:160","nodeType":"VariableDeclaration","scope":76685,"src":"16895:23:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76646,"name":"uint48","nodeType":"ElementaryTypeName","src":"16895:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76649,"mutability":"mutable","name":"vaultDisabledTime","nameLocation":"16927:17:160","nodeType":"VariableDeclaration","scope":76685,"src":"16920:24:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76648,"name":"uint48","nodeType":"ElementaryTypeName","src":"16920:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76655,"initialValue":{"arguments":[{"id":76653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76633,"src":"16969:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":76650,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76628,"src":"16948:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16950:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"16948:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76652,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16957:11:160","memberName":"atWithTimes","nodeType":"MemberAccess","referencedDeclaration":84300,"src":"16948:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint48,uint48)"}},"id":76654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16948:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$_t_uint48_$","typeString":"tuple(address,uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"16879:92:160"},{"condition":{"id":76661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16990:54:160","subExpression":{"arguments":[{"id":76657,"name":"vaultEnabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76647,"src":"17004:16:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76658,"name":"vaultDisabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76649,"src":"17022:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76659,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76621,"src":"17041:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76656,"name":"_wasActiveAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76717,"src":"16991:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$_t_uint48_$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48,uint48,uint48) pure returns (bool)"}},"id":76660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16991:53:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76664,"nodeType":"IfStatement","src":"16986:101:160","trueBody":{"id":76663,"nodeType":"Block","src":"17046:41:160","statements":[{"id":76662,"nodeType":"Continue","src":"17064:8:160"}]}},{"expression":{"id":76683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76665,"name":"stake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76624,"src":"17101:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"expression":{"id":76674,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76628,"src":"17160:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17162:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"17160:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76676,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76619,"src":"17174:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76677,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76621,"src":"17184:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[{"hexValue":"30","id":76680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17198:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17188:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":76678,"name":"bytes","nodeType":"ElementaryTypeName","src":"17192:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":76681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17188:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76668,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76645,"src":"17132:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76667,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"17125:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17125:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17139:9:160","memberName":"delegator","nodeType":"MemberAccess","referencedDeclaration":66916,"src":"17125:23:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17125:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76666,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"17110:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseDelegator_$65506_$","typeString":"type(contract IBaseDelegator)"}},"id":76672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17110:41:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17152:7:160","memberName":"stakeAt","nodeType":"MemberAccess","referencedDeclaration":65467,"src":"17110:49:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_uint48_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes32,address,uint48,bytes memory) view external returns (uint256)"}},"id":76682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17110:91:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17101:100:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76684,"nodeType":"ExpressionStatement","src":"17101:100:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76635,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76633,"src":"16837:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76636,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76628,"src":"16841:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16843:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"16841:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16850:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"16841:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16841:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16837:21:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76686,"initializationExpression":{"assignments":[76633],"declarations":[{"constant":false,"id":76633,"mutability":"mutable","name":"i","nameLocation":"16834:1:160","nodeType":"VariableDeclaration","scope":76686,"src":"16826:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76632,"name":"uint256","nodeType":"ElementaryTypeName","src":"16826:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76634,"nodeType":"VariableDeclarationStatement","src":"16826:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16860:3:160","subExpression":{"id":76641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76633,"src":"16862:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76643,"nodeType":"ExpressionStatement","src":"16860:3:160"},"nodeType":"ForStatement","src":"16821:391:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_collectOperatorStakeFromVaultsAt","nameLocation":"16671:33:160","parameters":{"id":76622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76619,"mutability":"mutable","name":"operator","nameLocation":"16713:8:160","nodeType":"VariableDeclaration","scope":76688,"src":"16705:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76618,"name":"address","nodeType":"ElementaryTypeName","src":"16705:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76621,"mutability":"mutable","name":"ts","nameLocation":"16730:2:160","nodeType":"VariableDeclaration","scope":76688,"src":"16723:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76620,"name":"uint48","nodeType":"ElementaryTypeName","src":"16723:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"16704:29:160"},"returnParameters":{"id":76625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76624,"mutability":"mutable","name":"stake","nameLocation":"16764:5:160","nodeType":"VariableDeclaration","scope":76688,"src":"16756:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76623,"name":"uint256","nodeType":"ElementaryTypeName","src":"16756:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16755:15:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76717,"nodeType":"FunctionDefinition","src":"17224:208:160","nodes":[],"body":{"id":76716,"nodeType":"Block","src":"17326:106:160","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76699,"name":"enabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"17343:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":76700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17358:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17343:16:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76702,"name":"enabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"17363:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":76703,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76694,"src":"17378:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"17363:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17343:37:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76706,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"17385:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17401:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17385:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76709,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"17406:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":76710,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76694,"src":"17422:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"17406:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17385:39:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":76713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17384:41:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17343:82:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":76698,"id":76715,"nodeType":"Return","src":"17336:89:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wasActiveAt","nameLocation":"17233:12:160","parameters":{"id":76695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76690,"mutability":"mutable","name":"enabledTime","nameLocation":"17253:11:160","nodeType":"VariableDeclaration","scope":76717,"src":"17246:18:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76689,"name":"uint48","nodeType":"ElementaryTypeName","src":"17246:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76692,"mutability":"mutable","name":"disabledTime","nameLocation":"17273:12:160","nodeType":"VariableDeclaration","scope":76717,"src":"17266:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76691,"name":"uint48","nodeType":"ElementaryTypeName","src":"17266:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76694,"mutability":"mutable","name":"ts","nameLocation":"17294:2:160","nodeType":"VariableDeclaration","scope":76717,"src":"17287:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76693,"name":"uint48","nodeType":"ElementaryTypeName","src":"17287:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17245:52:160"},"returnParameters":{"id":76698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76717,"src":"17320:4:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76696,"name":"bool","nodeType":"ElementaryTypeName","src":"17320:4:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17319:6:160"},"scope":77273,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":76734,"nodeType":"FunctionDefinition","src":"17477:154:160","nodes":[],"body":{"id":76733,"nodeType":"Block","src":"17533:98:160","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76722,"name":"hook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76719,"src":"17547:4:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17563:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17555:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76723,"name":"address","nodeType":"ElementaryTypeName","src":"17555:7:160","typeDescriptions":{}}},"id":76726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17555:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17547:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76732,"nodeType":"IfStatement","src":"17543:82:160","trueBody":{"id":76731,"nodeType":"Block","src":"17567:58:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76728,"name":"UnsupportedDelegatorHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73779,"src":"17588:24:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17588:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76730,"nodeType":"RevertStatement","src":"17581:33:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_delegatorHookCheck","nameLocation":"17486:19:160","parameters":{"id":76720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76719,"mutability":"mutable","name":"hook","nameLocation":"17514:4:160","nodeType":"VariableDeclaration","scope":76734,"src":"17506:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76718,"name":"address","nodeType":"ElementaryTypeName","src":"17506:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17505:14:160"},"returnParameters":{"id":76721,"nodeType":"ParameterList","parameters":[],"src":"17533:0:160"},"scope":77273,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":76822,"nodeType":"FunctionDefinition","src":"17637:2002:160","nodes":[],"body":{"id":76821,"nodeType":"Block","src":"17695:1944:160","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76741,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"17713:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17715:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"17713:13:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17729:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17713:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76745,"name":"EraDurationMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73839,"src":"17732:32:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17732:34:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76740,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17705:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17705:62:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76748,"nodeType":"ExpressionStatement","src":"17705:62:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76750,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18102:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18104:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"18102:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":76752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18129:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":76753,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18133:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18135:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"18133:13:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18129:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18102:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76757,"name":"MinVaultEpochDurationLessThanTwoEras","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73842,"src":"18148:36:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18148:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76749,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18094:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18094:93:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76760,"nodeType":"ExpressionStatement","src":"18094:93:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76762,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18377:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18379:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"18377:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":76764,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18402:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18404:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"18402:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18377:48:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76767,"name":"OperatorGracePeriodLessThanMinVaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73845,"src":"18427:48:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18427:50:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18369:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18369:109:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76770,"nodeType":"ExpressionStatement","src":"18369:109:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76772,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18665:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18667:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"18665:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":76774,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18687:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18689:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"18687:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18665:45:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76777,"name":"VaultGracePeriodLessThanMinVaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73848,"src":"18712:45:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18712:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76771,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18657:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18657:103:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76780,"nodeType":"ExpressionStatement","src":"18657:103:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76782,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18840:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18842:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"18840:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18840:21:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76786,"name":"MinVetoDurationMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73851,"src":"18863:36:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18863:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18832:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18832:70:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76789,"nodeType":"ExpressionStatement","src":"18832:70:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76791,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19112:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19114:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"19112:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19139:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19112:28:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76795,"name":"MinSlashExecutionDelayMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73854,"src":"19142:43:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19142:45:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19104:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19104:84:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76798,"nodeType":"ExpressionStatement","src":"19104:84:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76800,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19219:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19221:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"19219:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":76802,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19239:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19241:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"19239:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"19219:44:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":76805,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19267:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19269:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"19267:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"19219:71:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76808,"name":"MinVetoAndSlashDelayTooLongForVaultEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73857,"src":"19304:40:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19304:42:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76799,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19198:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19198:158:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76811,"nodeType":"ExpressionStatement","src":"19198:158:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76813,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19561:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19563:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"19561:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"33","id":76815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19592:1:160","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"19561:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76817,"name":"ResolverSetDelayMustBeAtLeastThree","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73860,"src":"19595:34:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19595:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76812,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19553:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19553:79:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76820,"nodeType":"ExpressionStatement","src":"19553:79:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateStorage","nameLocation":"17646:16:160","parameters":{"id":76738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76737,"mutability":"mutable","name":"$","nameLocation":"17679:1:160","nodeType":"VariableDeclaration","scope":76822,"src":"17663:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76736,"nodeType":"UserDefinedTypeName","pathNode":{"id":76735,"name":"Storage","nameLocations":["17663:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"17663:7:160"},"referencedDeclaration":73928,"src":"17663:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"src":"17662:19:160"},"returnParameters":{"id":76739,"nodeType":"ParameterList","parameters":[],"src":"17695:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77089,"nodeType":"FunctionDefinition","src":"19687:2572:160","nodes":[],"body":{"id":77088,"nodeType":"Block","src":"19735:2524:160","nodes":[],"statements":[{"assignments":[76829],"declarations":[{"constant":false,"id":76829,"mutability":"mutable","name":"$","nameLocation":"19761:1:160","nodeType":"VariableDeclaration","scope":77088,"src":"19745:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76828,"nodeType":"UserDefinedTypeName","pathNode":{"id":76827,"name":"Storage","nameLocations":["19745:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"19745:7:160"},"referencedDeclaration":73928,"src":"19745:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76832,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76830,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"19765:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19765:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19745:30:160"},{"condition":{"id":76841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19790:54:160","subExpression":{"arguments":[{"id":76839,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"19837:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":76834,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"19801:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19803:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"19801:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":76836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19813:13:160","memberName":"vaultRegistry","nodeType":"MemberAccess","referencedDeclaration":83176,"src":"19801:25:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76833,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"19791:9:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$65332_$","typeString":"type(contract IRegistry)"}},"id":76837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19791:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$65332","typeString":"contract IRegistry"}},"id":76838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19828:8:160","memberName":"isEntity","nodeType":"MemberAccess","referencedDeclaration":65317,"src":"19791:45:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":76840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19791:53:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76846,"nodeType":"IfStatement","src":"19786:109:160","trueBody":{"id":76845,"nodeType":"Block","src":"19846:49:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76842,"name":"NonFactoryVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73752,"src":"19867:15:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19867:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76844,"nodeType":"RevertStatement","src":"19860:24:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":76854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76848,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"19927:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76847,"name":"IMigratableEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65208,"src":"19909:17:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMigratableEntity_$65208_$","typeString":"type(contract IMigratableEntity)"}},"id":76849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19909:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMigratableEntity_$65208","typeString":"contract IMigratableEntity"}},"id":76850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19935:7:160","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":65189,"src":"19909:33:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":76851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19909:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":76852,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"19948:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19950:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"19948:25:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"19909:64:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76859,"nodeType":"IfStatement","src":"19905:128:160","trueBody":{"id":76858,"nodeType":"Block","src":"19975:58:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76855,"name":"IncompatibleVaultVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73803,"src":"19996:24:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19996:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76857,"nodeType":"RevertStatement","src":"19989:33:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76861,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20054:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76860,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20047:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20047:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20062:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":66904,"src":"20047:25:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20047:27:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":76865,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"20078:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20080:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"20078:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20047:43:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76872,"nodeType":"IfStatement","src":"20043:100:160","trueBody":{"id":76871,"nodeType":"Block","src":"20092:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76868,"name":"UnknownCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73758,"src":"20113:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20113:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76870,"nodeType":"RevertStatement","src":"20106:26:160"}]}},{"assignments":[76874],"declarations":[{"constant":false,"id":76874,"mutability":"mutable","name":"vaultEpochDuration","nameLocation":"20188:18:160","nodeType":"VariableDeclaration","scope":77088,"src":"20181:25:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76873,"name":"uint48","nodeType":"ElementaryTypeName","src":"20181:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76880,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76876,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20216:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76875,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20209:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20209:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20224:13:160","memberName":"epochDuration","nodeType":"MemberAccess","referencedDeclaration":66946,"src":"20209:28:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint48_$","typeString":"function () view external returns (uint48)"}},"id":76879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20209:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"20181:58:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76881,"name":"vaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76874,"src":"20253:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76882,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"20274:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20276:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"20274:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"20253:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76889,"nodeType":"IfStatement","src":"20249:107:160","trueBody":{"id":76888,"nodeType":"Block","src":"20299:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76885,"name":"VaultWrongEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73755,"src":"20320:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20320:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76887,"nodeType":"RevertStatement","src":"20313:32:160"}]}},{"condition":{"id":76895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20403:40:160","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76891,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20411:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76890,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20404:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20404:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20419:22:160","memberName":"isDelegatorInitialized","nodeType":"MemberAccess","referencedDeclaration":66922,"src":"20404:37:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":76894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20404:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76900,"nodeType":"IfStatement","src":"20399:103:160","trueBody":{"id":76899,"nodeType":"Block","src":"20445:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76896,"name":"DelegatorNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73785,"src":"20466:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20466:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76898,"nodeType":"RevertStatement","src":"20459:32:160"}]}},{"assignments":[76903],"declarations":[{"constant":false,"id":76903,"mutability":"mutable","name":"delegator","nameLocation":"20527:9:160","nodeType":"VariableDeclaration","scope":77088,"src":"20512:24:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"},"typeName":{"id":76902,"nodeType":"UserDefinedTypeName","pathNode":{"id":76901,"name":"IBaseDelegator","nameLocations":["20512:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":65506,"src":"20512:14:160"},"referencedDeclaration":65506,"src":"20512:14:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"visibility":"internal"}],"id":76911,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76906,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20561:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76905,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20554:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20554:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20569:9:160","memberName":"delegator","nodeType":"MemberAccess","referencedDeclaration":66916,"src":"20554:24:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20554:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76904,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"20539:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseDelegator_$65506_$","typeString":"type(contract IBaseDelegator)"}},"id":76910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20539:42:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"nodeType":"VariableDeclarationStatement","src":"20512:69:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":76914,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"20621:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20623:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"20621:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76912,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76903,"src":"20595:9:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20605:15:160","memberName":"maxNetworkLimit","nodeType":"MemberAccess","referencedDeclaration":65453,"src":"20595:25:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":76916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20595:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":76919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20643:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76918,"name":"uint256","nodeType":"ElementaryTypeName","src":"20643:7:160","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":76917,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"20638:4:160","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":76920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20638:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":76921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20652:3:160","memberName":"max","nodeType":"MemberAccess","src":"20638:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20595:60:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76935,"nodeType":"IfStatement","src":"20591:158:160","trueBody":{"id":76934,"nodeType":"Block","src":"20657:92:160","statements":[{"expression":{"arguments":[{"id":76926,"name":"NETWORK_IDENTIFIER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"20700:18:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"arguments":[{"id":76929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20725:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76928,"name":"uint256","nodeType":"ElementaryTypeName","src":"20725:7:160","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":76927,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"20720:4:160","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":76930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20720:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":76931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20734:3:160","memberName":"max","nodeType":"MemberAccess","src":"20720:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76923,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76903,"src":"20671:9:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20681:18:160","memberName":"setMaxNetworkLimit","nodeType":"MemberAccess","referencedDeclaration":65485,"src":"20671:28:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (uint96,uint256) external"}},"id":76932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20671:67:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76933,"nodeType":"ExpressionStatement","src":"20671:67:160"}]}},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76938,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76903,"src":"20793:9:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}],"id":76937,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"20778:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseDelegator_$65506_$","typeString":"type(contract IBaseDelegator)"}},"id":76939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20778:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20804:4:160","memberName":"hook","nodeType":"MemberAccess","referencedDeclaration":65445,"src":"20778:30:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20778:32:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76936,"name":"_delegatorHookCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76734,"src":"20758:19:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":76942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20758:53:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76943,"nodeType":"ExpressionStatement","src":"20758:53:160"},{"condition":{"id":76949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20857:38:160","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76945,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20865:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76944,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20858:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20858:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20873:20:160","memberName":"isSlasherInitialized","nodeType":"MemberAccess","referencedDeclaration":66934,"src":"20858:35:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":76948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20858:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76954,"nodeType":"IfStatement","src":"20853:99:160","trueBody":{"id":76953,"nodeType":"Block","src":"20897:55:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76950,"name":"SlasherNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73788,"src":"20918:21:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20918:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76952,"nodeType":"RevertStatement","src":"20911:30:160"}]}},{"assignments":[76956],"declarations":[{"constant":false,"id":76956,"mutability":"mutable","name":"slasher","nameLocation":"20970:7:160","nodeType":"VariableDeclaration","scope":77088,"src":"20962:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76955,"name":"address","nodeType":"ElementaryTypeName","src":"20962:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76962,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76958,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20987:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76957,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20980:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20980:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20995:7:160","memberName":"slasher","nodeType":"MemberAccess","referencedDeclaration":66928,"src":"20980:22:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20980:24:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20962:42:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":76970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76964,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21026:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76963,"name":"IEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65100,"src":"21018:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IEntity_$65100_$","typeString":"type(contract IEntity)"}},"id":76965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21018:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IEntity_$65100","typeString":"contract IEntity"}},"id":76966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21035:4:160","memberName":"TYPE","nodeType":"MemberAccess","referencedDeclaration":65093,"src":"21018:21:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":76967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21018:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":76968,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21045:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21047:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"21045:21:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"21018:48:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76975,"nodeType":"IfStatement","src":"21014:111:160","trueBody":{"id":76974,"nodeType":"Block","src":"21068:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76971,"name":"IncompatibleSlasherType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73791,"src":"21089:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21089:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76973,"nodeType":"RevertStatement","src":"21082:32:160"}]}},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76977,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21152:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76976,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21139:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21139:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21161:12:160","memberName":"isBurnerHook","nodeType":"MemberAccess","referencedDeclaration":66186,"src":"21139:34:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":76980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21139:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76985,"nodeType":"IfStatement","src":"21135:98:160","trueBody":{"id":76984,"nodeType":"Block","src":"21177:56:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76981,"name":"BurnerHookNotSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73794,"src":"21198:22:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21198:24:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76983,"nodeType":"RevertStatement","src":"21191:31:160"}]}},{"assignments":[76987],"declarations":[{"constant":false,"id":76987,"mutability":"mutable","name":"vetoDuration","nameLocation":"21250:12:160","nodeType":"VariableDeclaration","scope":77088,"src":"21243:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76986,"name":"uint48","nodeType":"ElementaryTypeName","src":"21243:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76993,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76989,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21278:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76988,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21265:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21265:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21287:12:160","memberName":"vetoDuration","nodeType":"MemberAccess","referencedDeclaration":66421,"src":"21265:34:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint48_$","typeString":"function () view external returns (uint48)"}},"id":76992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21265:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"21243:58:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76994,"name":"vetoDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76987,"src":"21315:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76995,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21330:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21332:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"21330:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"21315:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77002,"nodeType":"IfStatement","src":"21311:92:160","trueBody":{"id":77001,"nodeType":"Block","src":"21349:54:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76998,"name":"VetoDurationTooShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73797,"src":"21370:20:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21370:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77000,"nodeType":"RevertStatement","src":"21363:29:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77003,"name":"vetoDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76987,"src":"21417:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":77004,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21432:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21434:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"21432:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"21417:39:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":77007,"name":"vaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76874,"src":"21459:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"21417:60:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77013,"nodeType":"IfStatement","src":"21413:119:160","trueBody":{"id":77012,"nodeType":"Block","src":"21479:53:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77009,"name":"VetoDurationTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73800,"src":"21500:19:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21500:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77011,"nodeType":"RevertStatement","src":"21493:28:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77015,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21559:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77014,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21546:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":77016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21546:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":77017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21568:22:160","memberName":"resolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":66451,"src":"21546:44:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":77018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21546:46:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":77019,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21595:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21597:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"21595:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21546:76:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77026,"nodeType":"IfStatement","src":"21542:139:160","trueBody":{"id":77025,"nodeType":"Block","src":"21624:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77022,"name":"ResolverSetDelayTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73818,"src":"21645:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21645:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77024,"nodeType":"RevertStatement","src":"21638:32:160"}]}},{"assignments":[77028],"declarations":[{"constant":false,"id":77028,"mutability":"mutable","name":"resolver","nameLocation":"21699:8:160","nodeType":"VariableDeclaration","scope":77088,"src":"21691:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77027,"name":"address","nodeType":"ElementaryTypeName","src":"21691:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":77040,"initialValue":{"arguments":[{"expression":{"id":77033,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21741:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21743:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"21741:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":77037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21765:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"21755:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":77035,"name":"bytes","nodeType":"ElementaryTypeName","src":"21759:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":77038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21755:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":77030,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21723:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77029,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21710:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":77031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21710:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":77032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21732:8:160","memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":66473,"src":"21710:30:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,bytes memory) view external returns (address)"}},"id":77039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21710:58:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"21691:77:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77041,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77028,"src":"21782:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21802:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21794:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77042,"name":"address","nodeType":"ElementaryTypeName","src":"21794:7:160","typeDescriptions":{}}},"id":77045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21794:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21782:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77062,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77028,"src":"21934:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":77063,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21946:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21948:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"21946:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":77065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21958:12:160","memberName":"vetoResolver","nodeType":"MemberAccess","referencedDeclaration":83194,"src":"21946:24:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21934:36:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77071,"nodeType":"IfStatement","src":"21930:147:160","trueBody":{"id":77070,"nodeType":"Block","src":"21972:105:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77067,"name":"ResolverMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73815,"src":"22048:16:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22048:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77069,"nodeType":"RevertStatement","src":"22041:25:160"}]}},"id":77072,"nodeType":"IfStatement","src":"21778:299:160","trueBody":{"id":77061,"nodeType":"Block","src":"21806:118:160","statements":[{"expression":{"arguments":[{"id":77051,"name":"NETWORK_IDENTIFIER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"21854:18:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"expression":{"id":77052,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21874:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21876:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"21874:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":77054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21886:12:160","memberName":"vetoResolver","nodeType":"MemberAccess","referencedDeclaration":83194,"src":"21874:24:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":77057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21910:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"21900:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":77055,"name":"bytes","nodeType":"ElementaryTypeName","src":"21904:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":77058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21900:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":77048,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21833:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77047,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21820:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":77049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21820:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":77050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21842:11:160","memberName":"setResolver","nodeType":"MemberAccess","referencedDeclaration":66517,"src":"21820:33:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint96_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint96,address,bytes memory) external"}},"id":77059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21820:93:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77060,"nodeType":"ExpressionStatement","src":"21820:93:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77074,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"22170:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77073,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"22163:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":77075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22163:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":77076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22178:6:160","memberName":"burner","nodeType":"MemberAccess","referencedDeclaration":66910,"src":"22163:21:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":77077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22163:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22198:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22190:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77078,"name":"address","nodeType":"ElementaryTypeName","src":"22190:7:160","typeDescriptions":{}}},"id":77081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22190:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22163:37:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77087,"nodeType":"IfStatement","src":"22159:94:160","trueBody":{"id":77086,"nodeType":"Block","src":"22202:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77083,"name":"UnsupportedBurner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73782,"src":"22223:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22223:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77085,"nodeType":"RevertStatement","src":"22216:26:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateVault","nameLocation":"19696:14:160","parameters":{"id":76825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76824,"mutability":"mutable","name":"_vault","nameLocation":"19719:6:160","nodeType":"VariableDeclaration","scope":77089,"src":"19711:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76823,"name":"address","nodeType":"ElementaryTypeName","src":"19711:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19710:16:160"},"returnParameters":{"id":76826,"nodeType":"ParameterList","parameters":[],"src":"19735:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":77136,"nodeType":"FunctionDefinition","src":"22265:482:160","nodes":[],"body":{"id":77135,"nodeType":"Block","src":"22344:403:160","nodes":[],"statements":[{"condition":{"id":77105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"22358:72:160","subExpression":{"arguments":[{"id":77103,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77093,"src":"22421:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77097,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"22369:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":77098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22369:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22380:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"22369:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":77100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22390:20:160","memberName":"stakerRewardsFactory","nodeType":"MemberAccess","referencedDeclaration":83186,"src":"22369:41:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77096,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"22359:9:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$65332_$","typeString":"type(contract IRegistry)"}},"id":77101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22359:52:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$65332","typeString":"contract IRegistry"}},"id":77102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22412:8:160","memberName":"isEntity","nodeType":"MemberAccess","referencedDeclaration":65317,"src":"22359:61:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":77104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22359:71:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77110,"nodeType":"IfStatement","src":"22354:135:160","trueBody":{"id":77109,"nodeType":"Block","src":"22432:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77106,"name":"NonFactoryStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73830,"src":"22453:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22453:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77108,"nodeType":"RevertStatement","src":"22446:32:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77112,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77093,"src":"22525:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77111,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"22503:21:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultStakerRewards_$71992_$","typeString":"type(contract IDefaultStakerRewards)"}},"id":77113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22503:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultStakerRewards_$71992","typeString":"contract IDefaultStakerRewards"}},"id":77114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22535:5:160","memberName":"VAULT","nodeType":"MemberAccess","referencedDeclaration":71927,"src":"22503:37:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":77115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22503:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":77116,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77091,"src":"22546:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22503:49:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77122,"nodeType":"IfStatement","src":"22499:114:160","trueBody":{"id":77121,"nodeType":"Block","src":"22554:59:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77118,"name":"InvalidStakerRewardsVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73833,"src":"22575:25:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22575:27:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77120,"nodeType":"RevertStatement","src":"22568:34:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":77129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77124,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77093,"src":"22649:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77123,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"22627:21:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultStakerRewards_$71992_$","typeString":"type(contract IDefaultStakerRewards)"}},"id":77125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultStakerRewards_$71992","typeString":"contract IDefaultStakerRewards"}},"id":77126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22659:7:160","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":72044,"src":"22627:39:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":77127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:41:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"32","id":77128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22672:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22627:46:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77134,"nodeType":"IfStatement","src":"22623:118:160","trueBody":{"id":77133,"nodeType":"Block","src":"22675:66:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77130,"name":"IncompatibleStakerRewardsVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73806,"src":"22696:32:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22696:34:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77132,"nodeType":"RevertStatement","src":"22689:41:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateStakerRewards","nameLocation":"22274:22:160","parameters":{"id":77094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77091,"mutability":"mutable","name":"_vault","nameLocation":"22305:6:160","nodeType":"VariableDeclaration","scope":77136,"src":"22297:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77090,"name":"address","nodeType":"ElementaryTypeName","src":"22297:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77093,"mutability":"mutable","name":"_rewards","nameLocation":"22321:8:160","nodeType":"VariableDeclaration","scope":77136,"src":"22313:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77092,"name":"address","nodeType":"ElementaryTypeName","src":"22313:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22296:34:160"},"returnParameters":{"id":77095,"nodeType":"ParameterList","parameters":[],"src":"22344:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77146,"nodeType":"ModifierDefinition","src":"22884:82:160","nodes":[],"body":{"id":77145,"nodeType":"Block","src":"22919:47:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":77141,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77138,"src":"22945:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":77140,"name":"_validTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77193,"src":"22929:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$__$","typeString":"function (uint48) view"}},"id":77142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22929:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77143,"nodeType":"ExpressionStatement","src":"22929:19:160"},{"id":77144,"nodeType":"PlaceholderStatement","src":"22958:1:160"}]},"name":"validTimestamp","nameLocation":"22893:14:160","parameters":{"id":77139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77138,"mutability":"mutable","name":"ts","nameLocation":"22915:2:160","nodeType":"VariableDeclaration","scope":77146,"src":"22908:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":77137,"name":"uint48","nodeType":"ElementaryTypeName","src":"22908:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"22907:11:160"},"virtual":false,"visibility":"internal"},{"id":77193,"nodeType":"FunctionDefinition","src":"22972:408:160","nodes":[],"body":{"id":77192,"nodeType":"Block","src":"23022:358:160","nodes":[],"statements":[{"assignments":[77153],"declarations":[{"constant":false,"id":77153,"mutability":"mutable","name":"$","nameLocation":"23048:1:160","nodeType":"VariableDeclaration","scope":77192,"src":"23032:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":77152,"nodeType":"UserDefinedTypeName","pathNode":{"id":77151,"name":"Storage","nameLocations":["23032:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"23032:7:160"},"referencedDeclaration":73928,"src":"23032:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":77156,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":77154,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"23052:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":77155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23052:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"23032:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77157,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77148,"src":"23076:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77158,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"23082:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":77159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23087:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"23082:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":77160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23082:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23076:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77166,"nodeType":"IfStatement","src":"23072:80:160","trueBody":{"id":77165,"nodeType":"Block","src":"23100:52:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77162,"name":"IncorrectTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73770,"src":"23121:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23121:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77164,"nodeType":"RevertStatement","src":"23114:27:160"}]}},{"assignments":[77168],"declarations":[{"constant":false,"id":77168,"mutability":"mutable","name":"gracePeriod","nameLocation":"23169:11:160","nodeType":"VariableDeclaration","scope":77192,"src":"23162:18:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":77167,"name":"uint48","nodeType":"ElementaryTypeName","src":"23162:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":77179,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77169,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23183:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23185:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"23183:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":77171,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23207:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23209:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"23207:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23183:42:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":77176,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23252:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23254:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"23252:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":77178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"23183:87:160","trueExpression":{"expression":{"id":77174,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23228:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23230:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"23228:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"23162:108:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77180,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77148,"src":"23284:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":77181,"name":"gracePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77168,"src":"23289:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23284:16:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77183,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"23304:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":77184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23309:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"23304:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":77185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23304:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23284:36:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77191,"nodeType":"IfStatement","src":"23280:94:160","trueBody":{"id":77190,"nodeType":"Block","src":"23322:52:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77187,"name":"IncorrectTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73770,"src":"23343:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23343:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77189,"nodeType":"RevertStatement","src":"23336:27:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validTimestamp","nameLocation":"22981:15:160","parameters":{"id":77149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77148,"mutability":"mutable","name":"ts","nameLocation":"23004:2:160","nodeType":"VariableDeclaration","scope":77193,"src":"22997:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":77147,"name":"uint48","nodeType":"ElementaryTypeName","src":"22997:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"22996:11:160"},"returnParameters":{"id":77150,"nodeType":"ParameterList","parameters":[],"src":"23022:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77206,"nodeType":"FunctionDefinition","src":"23386:201:160","nodes":[],"body":{"id":77205,"nodeType":"Block","src":"23456:131:160","nodes":[],"statements":[{"assignments":[77200],"declarations":[{"constant":false,"id":77200,"mutability":"mutable","name":"slot","nameLocation":"23474:4:160","nodeType":"VariableDeclaration","scope":77205,"src":"23466:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23466:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":77203,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":77201,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77218,"src":"23481:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":77202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23481:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23466:32:160"},{"AST":{"nativeSrc":"23534:47:160","nodeType":"YulBlock","src":"23534:47:160","statements":[{"nativeSrc":"23548:23:160","nodeType":"YulAssignment","src":"23548:23:160","value":{"name":"slot","nativeSrc":"23567:4:160","nodeType":"YulIdentifier","src":"23567:4:160"},"variableNames":[{"name":"middleware.slot","nativeSrc":"23548:15:160","nodeType":"YulIdentifier","src":"23548:15:160"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":77197,"isOffset":false,"isSlot":true,"src":"23548:15:160","suffix":"slot","valueSize":1},{"declaration":77200,"isOffset":false,"isSlot":false,"src":"23567:4:160","valueSize":1}],"flags":["memory-safe"],"id":77204,"nodeType":"InlineAssembly","src":"23509:72:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_storage","nameLocation":"23395:8:160","parameters":{"id":77194,"nodeType":"ParameterList","parameters":[],"src":"23403:2:160"},"returnParameters":{"id":77198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77197,"mutability":"mutable","name":"middleware","nameLocation":"23444:10:160","nodeType":"VariableDeclaration","scope":77206,"src":"23428:26:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":77196,"nodeType":"UserDefinedTypeName","pathNode":{"id":77195,"name":"Storage","nameLocations":["23428:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"23428:7:160"},"referencedDeclaration":73928,"src":"23428:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"src":"23427:28:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77218,"nodeType":"FunctionDefinition","src":"23593:128:160","nodes":[],"body":{"id":77217,"nodeType":"Block","src":"23651:70:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":77213,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75075,"src":"23695:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77211,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"23668:11:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":77212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23680:14:160","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"23668:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":77214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23668:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":77215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23709:5:160","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"23668:46:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77210,"id":77216,"nodeType":"Return","src":"23661:53:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"23602:15:160","parameters":{"id":77207,"nodeType":"ParameterList","parameters":[],"src":"23617:2:160"},"returnParameters":{"id":77210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":77218,"src":"23642:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23642:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23641:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77242,"nodeType":"FunctionDefinition","src":"23727:200:160","nodes":[],"body":{"id":77241,"nodeType":"Block","src":"23795:132:160","nodes":[],"statements":[{"assignments":[77226],"declarations":[{"constant":false,"id":77226,"mutability":"mutable","name":"slot","nameLocation":"23813:4:160","nodeType":"VariableDeclaration","scope":77241,"src":"23805:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23805:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":77231,"initialValue":{"arguments":[{"id":77229,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77220,"src":"23847:9:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":77227,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"23820:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":77228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23835:11:160","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"23820:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":77230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23820:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23805:52:160"},{"expression":{"id":77239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":77235,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75075,"src":"23894:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77232,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"23867:11:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":77234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23879:14:160","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"23867:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":77236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23867:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":77237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23908:5:160","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"23867:46:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77238,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77226,"src":"23916:4:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23867:53:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":77240,"nodeType":"ExpressionStatement","src":"23867:53:160"}]},"implemented":true,"kind":"function","modifiers":[{"id":77223,"kind":"modifierInvocation","modifierName":{"id":77222,"name":"onlyOwner","nameLocations":["23785:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"23785:9:160"},"nodeType":"ModifierInvocation","src":"23785:9:160"}],"name":"_setStorageSlot","nameLocation":"23736:15:160","parameters":{"id":77221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77220,"mutability":"mutable","name":"namespace","nameLocation":"23766:9:160","nodeType":"VariableDeclaration","scope":77242,"src":"23752:23:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":77219,"name":"string","nodeType":"ElementaryTypeName","src":"23752:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23751:25:160"},"returnParameters":{"id":77224,"nodeType":"ParameterList","parameters":[],"src":"23795:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":77252,"nodeType":"ModifierDefinition","src":"23933:81:160","nodes":[],"body":{"id":77251,"nodeType":"Block","src":"23968:46:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":77247,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77244,"src":"23990:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77246,"name":"_vaultOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77272,"src":"23978:11:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":77248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23978:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77249,"nodeType":"ExpressionStatement","src":"23978:18:160"},{"id":77250,"nodeType":"PlaceholderStatement","src":"24006:1:160"}]},"name":"vaultOwner","nameLocation":"23942:10:160","parameters":{"id":77245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77244,"mutability":"mutable","name":"vault","nameLocation":"23961:5:160","nodeType":"VariableDeclaration","scope":77252,"src":"23953:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77243,"name":"address","nodeType":"ElementaryTypeName","src":"23953:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23952:15:160"},"virtual":false,"visibility":"internal"},{"id":77272,"nodeType":"FunctionDefinition","src":"24020:181:160","nodes":[],"body":{"id":77271,"nodeType":"Block","src":"24070:131:160","nodes":[],"statements":[{"condition":{"id":77265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"24084:62:160","subExpression":{"arguments":[{"id":77261,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75078,"src":"24115:18:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77262,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24135:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24139:6:160","memberName":"sender","nodeType":"MemberAccess","src":"24135:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":77258,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77254,"src":"24100:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77257,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44539,"src":"24085:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$44539_$","typeString":"type(contract IAccessControl)"}},"id":77259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24085:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControl_$44539","typeString":"contract IAccessControl"}},"id":77260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24107:7:160","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":44506,"src":"24085:29:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":77264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24085:61:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77270,"nodeType":"IfStatement","src":"24080:115:160","trueBody":{"id":77269,"nodeType":"Block","src":"24148:47:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77266,"name":"NotVaultOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73767,"src":"24169:13:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24169:15:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77268,"nodeType":"RevertStatement","src":"24162:22:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_vaultOwner","nameLocation":"24029:11:160","parameters":{"id":77255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77254,"mutability":"mutable","name":"vault","nameLocation":"24049:5:160","nodeType":"VariableDeclaration","scope":77272,"src":"24041:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77253,"name":"address","nodeType":"ElementaryTypeName","src":"24041:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24040:15:160"},"returnParameters":{"id":77256,"nodeType":"ParameterList","parameters":[],"src":"24070:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":75050,"name":"IMiddleware","nameLocations":["2399:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":74131,"src":"2399:11:160"},"id":75051,"nodeType":"InheritanceSpecifier","src":"2399:11:160"},{"baseName":{"id":75052,"name":"OwnableUpgradeable","nameLocations":["2412:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"2412:18:160"},"id":75053,"nodeType":"InheritanceSpecifier","src":"2412:18:160"},{"baseName":{"id":75054,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["2432:35:160"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"2432:35:160"},"id":75055,"nodeType":"InheritanceSpecifier","src":"2432:35:160"},{"baseName":{"id":75056,"name":"UUPSUpgradeable","nameLocations":["2469:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"2469:15:160"},"id":75057,"nodeType":"InheritanceSpecifier","src":"2469:15:160"}],"canonicalName":"Middleware","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[77273,46243,44833,43943,42322,43484,42590,74131],"name":"Middleware","nameLocation":"2385:10:160","scope":77274,"usedErrors":[42158,42163,42339,42342,43875,45427,45440,46100,46105,47372,48774,53880,55791,73752,73755,73758,73761,73764,73767,73770,73773,73776,73779,73782,73785,73788,73791,73794,73797,73800,73803,73806,73809,73812,73815,73818,73821,73824,73827,73830,73833,73836,73839,73842,73845,73848,73851,73854,73857,73860,84071,84074,84077],"usedEvents":[42169,42347,44781]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":160} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowedVaultImplVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"changeSlashExecutor","inputs":[{"name":"newRole","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"changeSlashRequester","inputs":[{"name":"newRole","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"disableOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disableVault","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"distributeOperatorRewards","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"distributeStakerRewards","inputs":[{"name":"_commitment","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"timestamp","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"enableOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableVault","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"eraDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashes","type":"tuple[]","internalType":"struct IMiddleware.SlashIdentifier[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getActiveOperatorsStakeAt","inputs":[{"name":"ts","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"activeOperators","type":"address[]","internalType":"address[]"},{"name":"stakes","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorStakeAt","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_params","type":"tuple","internalType":"struct IMiddleware.InitParams","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"eraDuration","type":"uint48","internalType":"uint48"},{"name":"minVaultEpochDuration","type":"uint48","internalType":"uint48"},{"name":"operatorGracePeriod","type":"uint48","internalType":"uint48"},{"name":"vaultGracePeriod","type":"uint48","internalType":"uint48"},{"name":"minVetoDuration","type":"uint48","internalType":"uint48"},{"name":"minSlashExecutionDelay","type":"uint48","internalType":"uint48"},{"name":"allowedVaultImplVersion","type":"uint64","internalType":"uint64"},{"name":"vetoSlasherImplType","type":"uint64","internalType":"uint64"},{"name":"maxResolverSetEpochsDelay","type":"uint256","internalType":"uint256"},{"name":"maxAdminFee","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"address","internalType":"address"},{"name":"router","type":"address","internalType":"address"},{"name":"symbiotic","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makeElectionAt","inputs":[{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"maxValidators","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"maxAdminFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxResolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minSlashExecutionDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"minVaultEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"minVetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"operatorGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerVault","inputs":[{"name":"_vault","type":"address","internalType":"address"},{"name":"_rewards","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestSlash","inputs":[{"name":"data","type":"tuple[]","internalType":"struct IMiddleware.SlashData[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"vaults","type":"tuple[]","internalType":"struct IMiddleware.VaultSlashData[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"subnetwork","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"symbioticContracts","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterVault","inputs":[{"name":"vault","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaultGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"vetoSlasherImplType","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyAdded","inputs":[]},{"type":"error","name":"AlreadyEnabled","inputs":[]},{"type":"error","name":"BurnerHookNotSupported","inputs":[]},{"type":"error","name":"DelegatorNotInitialized","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnumerableMapNonexistentKey","inputs":[{"name":"key","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"EraDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"IncompatibleSlasherType","inputs":[]},{"type":"error","name":"IncompatibleStakerRewardsVersion","inputs":[]},{"type":"error","name":"IncompatibleVaultVersion","inputs":[]},{"type":"error","name":"IncorrectTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidStakerRewardsVault","inputs":[]},{"type":"error","name":"MaxValidatorsMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinVaultEpochDurationLessThanTwoEras","inputs":[]},{"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch","inputs":[]},{"type":"error","name":"MinVetoDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"NonFactoryStakerRewards","inputs":[]},{"type":"error","name":"NonFactoryVault","inputs":[]},{"type":"error","name":"NotEnabled","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegisteredOperator","inputs":[]},{"type":"error","name":"NotRegisteredVault","inputs":[]},{"type":"error","name":"NotRouter","inputs":[]},{"type":"error","name":"NotSlashExecutor","inputs":[]},{"type":"error","name":"NotSlashRequester","inputs":[]},{"type":"error","name":"NotVaultOwner","inputs":[]},{"type":"error","name":"OperatorDoesNotExist","inputs":[]},{"type":"error","name":"OperatorDoesNotOptIn","inputs":[]},{"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"OperatorGracePeriodNotPassed","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"ResolverMismatch","inputs":[]},{"type":"error","name":"ResolverSetDelayMustBeAtLeastThree","inputs":[]},{"type":"error","name":"ResolverSetDelayTooLong","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SlasherNotInitialized","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownCollateral","inputs":[]},{"type":"error","name":"UnsupportedBurner","inputs":[]},{"type":"error","name":"UnsupportedDelegatorHook","inputs":[]},{"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"VaultGracePeriodNotPassed","inputs":[]},{"type":"error","name":"VaultWrongEpochDuration","inputs":[]},{"type":"error","name":"VetoDurationTooLong","inputs":[]},{"type":"error","name":"VetoDurationTooShort","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f516020613d365f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b604051613c6f90816100c78239608051818181611c690152611d380152f35b6001600160401b0319166001600160401b039081175f516020613d365f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c806305c4fdf9146124bf5780630a71094c146122175780632633b70f146121635780632acde0981461200b578063373bba1f14611fd55780633ccce78914611f985780633d15e74e14611f6b5780634455a38f14611f38578063461e7a8e14611f025780634f1ef28614611cbd57806352d1902d14611c565780636c2eb350146118195780636d1064eb146117ac5780636e5c79321461176f578063709d06ae14611739578063715018a6146116d0578063729e2f36146115b257806379a8b2451461157c5780637fbe95b5146111b957806386c241a11461115b5780638da5cb5b14611126578063936f4330146110e9578063945cf2dd146110b357806396115bc214610fe75780639e03231114610fb9578063ab12275314610849578063ad3cb1cc146107fc578063af962995146105e9578063b5e5ad1214610570578063bcf33934146103a0578063c639e2d614610372578063c9b0b1e91461033b578063ceebb69a1461030d578063d55a5bdf146102d3578063d8dfeb451461029a578063d99ddfc71461025c578063d99fcd661461022f578063f2fde38b146102025763f887ea40146101c7575f80fd5b346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600701546040516001600160a01b039091168152602090f35b80fd5b50346101ff5760203660031901126101ff5761022c61021f612e55565b6102276136a7565b613480565b80f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f52540133906135a1565b50346101ff5760403660031901126101ff57602061029261027b612e55565b610283612f00565b9061028d8261372b565b61343d565b604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015460401c16604051908152f35b50346101ff57806003193601126101ff57602060045f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff57602060055f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff576101206040516103c081612e7f565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015201526101405f516020613c2f5f395f51905f525460405161041481612e7f565b60018060a01b036008830154169182825260018060a01b036009820154166020830190815260018060a01b03600a830154166040840190815260018060a01b03600b840154166060850190815260018060a01b03600c850154166080860190815260018060a01b03600d860154169160a0870192835260018060a01b03600e870154169360c0880194855260018060a01b03600f880154169560e0890196875261012060018060a01b0360108a015416986101008b01998a52601160018060a01b03910154169901988952604051998a5260018060a01b0390511660208a015260018060a01b03905116604089015260018060a01b03905116606088015260018060a01b03905116608087015260018060a01b0390511660a086015260018060a01b0390511660c085015260018060a01b0390511660e084015260018060a01b0390511661010083015260018060a01b03905116610120820152f35b50346101ff5760203660031901126101ff576105ac90610596610591612eeb565b61331c565b9091604051938493604085526040850190612f15565b8381036020850152602080845192838152019301915b8181106105d0575050500390f35b82518452859450602093840193909201916001016105c2565b50346101ff5760203660031901126101ff576004356001600160401b0381116107f857366023820112156107f85780600401356001600160401b0381116107f4576024820191602436918360061b0101116107f4575f516020613c2f5f395f51905f5254601001546001600160a01b031633036107e5576020905f90845b818110610672578580f35b61067d818387613003565b5f516020613c2f5f395f51905f52549091906106bc906015016001600160a01b036106a785612fba565b16906001915f520160205260405f2054151590565b156107d6576004856001600160a01b036106d585612fba565b166040519283809263b134427160e01b82525afa9283156107cb576107439387928a9161079e575b50828a6040519361070e8386612eaf565b81855289368487013760405197889586948593635ca61c3760e11b855201356004840152604060248401526044830190612f68565b03926001600160a01b03165af191821561079357600192610766575b5001610667565b61078590863d881161078c575b61077d8183612eaf565b810190613046565b505f61075f565b503d610773565b6040513d89823e3d90fd5b6107be9150833d85116107c4575b6107b68183612eaf565b810190613027565b5f6106fd565b503d6107ac565b6040513d8a823e3d90fd5b633b2fc1c360e21b8752600487fd5b632249f71f60e21b8352600483fd5b8280fd5b5080fd5b50346101ff57806003193601126101ff575061084560405161081f604082612eaf565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612f68565b0390f35b50346101ff576102e03660031901126101ff575f516020613c4f5f395f51905f52546001600160401b0360ff8260401c1615911680159081610fb1575b6001149081610fa7575b159081610f9e575b50610f8f578060016001600160401b03195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f5255610f5f575b6004356001600160a01b03811681036107f4576108f5906108ed6139d1565b6102276139d1565b6108fd6139d1565b604090815161090c8382612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563100815261093f6136a7565b905190205f190183526020832060ff19165f516020613c2f5f395f51905f5281905560243565ffffffffffff81168103610f5b57815465ffffffffffff191665ffffffffffff9182161782556044359081168103610f5b5781546bffffffffffff000000000000191660309190911b65ffffffffffff60301b1617815560643565ffffffffffff81168103610f5b57815465ffffffffffff60601b191660609190911b65ffffffffffff60601b1617815560843565ffffffffffff81168103610f5b57815465ffffffffffff60901b191660909190911b65ffffffffffff60901b1617815560a43565ffffffffffff81168103610f5b57815465ffffffffffff60c01b191660c09190911b65ffffffffffff60c01b1617815560c43565ffffffffffff81168103610f5b5765ffffffffffff60018301911665ffffffffffff19825416178155600282019161012435835560e4356001600160401b0381168103610f53576001600160401b036003830191166001600160401b0319825416178155610104356001600160401b0381168103610f575781546fffffffffffffffff0000000000000000191660409190911b67ffffffffffffffff60401b16179055610164356001600160a01b0381168103610f53576006820180546001600160a01b0319166001600160a01b039283161790553060601b6004830155610144356005830155610184359081168103610f53576007820180546001600160a01b0319166001600160a01b039283161790556101a4359081168103610f53576008820180546001600160a01b0319166001600160a01b039283161790556101c4359081168103610f53576009820180546001600160a01b0319166001600160a01b03909216919091179055610bcf612f8c565b600a820180546001600160a01b0319166001600160a01b03909216919091179055610bf8612fa3565b600b820180546001600160a01b0319166001600160a01b03928316179055610224359081168103610f5357600c820180546001600160a01b0319166001600160a01b03928316179055610244359081168103610f5357600d820180546001600160a01b0319166001600160a01b03928316179055610264359081168103610f5357600e820180546001600160a01b0319166001600160a01b03928316179055610284359081168103610f5357600f820180546001600160a01b0319166001600160a01b039283161790556102a4359081168103610f53576010820180546001600160a01b0319166001600160a01b039283161790556102c4359081168103610f53576011820180546001600160a01b0319166001600160a01b039283161790558690610d22612f8c565b16803b156107f85781809160048951809481936387140b5b60e01b83525af18015610f3457610f3e575b506001600160a01b03610d5d612fa3565b16803b156107f857818091602489518094819363b7d8e1a960e01b83523060048401525af18015610f3457610f1b575b5050549065ffffffffffff821615610f0c5765ffffffffffff8260301c16918060011b6601fffffffffffe65fffffffffffe821691168103610ef8578310610ee9578265ffffffffffff8260601c1610610eda578265ffffffffffff8260901c1610610ecb5760c01c65ffffffffffff16908115610ebc575465ffffffffffff16908115610ead5765ffffffffffff91610e2691613055565b1611610e9e576003905410610e8f57610e3d575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52555160018152a180f35b634bd1214b60e11b8352600483fd5b63681d91d760e01b8452600484fd5b634c57479b60e11b8752600487fd5b63a46498b960e01b8752600487fd5b630ff9ae5960e11b8752600487fd5b630314153160e21b8752600487fd5b63395b39b960e21b8752600487fd5b634e487b7160e01b88526011600452602488fd5b6330e28a3960e11b8652600486fd5b81610f2591612eaf565b610f3057855f610d8d565b8580fd5b87513d84823e3d90fd5b81610f4891612eaf565b610f3057855f610d4c565b8680fd5b8780fd5b8480fd5b600160401b60ff60401b195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f52556108ce565b63f92ee8a960e01b8252600482fd5b9050155f610898565b303b159150610890565b829150610886565b50346101ff57806003193601126101ff57602060025f516020613c2f5f395f51905f52540154604051908152f35b50346101ff5760203660031901126101ff57611001612e55565b5f516020613c2f5f395f51905f52546001600160a01b0390911690601281019061104b61102e84846139fc565b65ffffffffffff81169165ffffffffffff8260301c169160601c90565b5065ffffffffffff8116159291508215611083575b50506110745790611070916139b7565b5080f35b63f1c9810160e01b8352600483fd5b65ffffffffffff9192506110a882918261109c42613988565b955460601c1690613055565b169116105f80611060565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460301c16604051908152f35b50346101ff5760203660031901126101ff5761022c611106612e55565b61110f816134f1565b60155f516020613c2f5f395f51905f52540161362b565b50346101ff57806003193601126101ff575f516020613bef5f395f51905f52546040516001600160a01b039091168152602090f35b50346101ff5760203660031901126101ff57611175612e55565b5f516020613c2f5f395f51905f525460100180549091906001600160a01b031633036107e55781546001600160a01b0319166001600160a01b039190911617905580f35b50346101ff5760403660031901126101ff576004356001600160401b0381116107f857606060031982360301126107f857604051606081018181106001600160401b038211176115685760405281600401356001600160401b0381116115645782013660238201121561156457600481013561123481612f51565b916112426040519384612eaf565b818352602060048185019360061b8301010190368211610f5357602401915b818310611506575050508152611284604460208301936024810135855201612e6b565b9060408101918252611294612f00565b935f516020613c2f5f395f51905f525490600782019460018060a01b0386541633036114f757845160068401546001600160a01b039182169116036114e857819594939550606093829565ffffffffffff60056015870196019916926020965b895180518a10156114a157896113099161309f565b5180516001600160a01b03165f908152600189016020526040902054156107d657908b91866113c28b6113b48b6113a26113518f61102e9060018060a01b038a5116906139fc565b9a546040516001600160a01b03909c169b925090506113708683612eaf565b838252604051936113818786612eaf565b845260405197889687015260408601526080606086015260a0850190612f68565b838103601f1901608085015290612f68565b03601f198101835282612eaf565b85548751838d0180519096909290916001600160a01b039081169116823b1561149d57908c809493926114226040519788968795869463239723ed60e01b8652600486015260248501526044840152608060648401526084830190612f68565b03925af180156114925790899161147d575b50509161147591600193519151604051926bffffffffffffffffffffffff199060601b168c840152603483015260348252611470605483612eaf565b6132dc565b9801976112f4565b8161148791612eaf565b610f5757875f611434565b6040513d8b823e3d90fd5b8c80fd5b886114da86848651915160405192858401526bffffffffffffffffffffffff199060601b16604083015260348252611470605483612eaf565b818151910120604051908152f35b63039a1fd760e21b8252600482fd5b639165520160e01b8252600482fd5b604083360312610f5357604051604081018181106001600160401b038211176115505791602091604093845261153b86612e6b565b81528286013583820152815201920191611261565b634e487b7160e01b89526041600452602489fd5b8380fd5b634e487b7160e01b84526041600452602484fd5b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460901c16604051908152f35b50346101ff5760603660031901126101ff576115cc612e55565b5f516020613c2f5f395f51905f5254600781015460243592604435926001600160a01b0390921691338390036116c15760068101546001600160a01b03928316921682036116b257600e01546001600160a01b031691859190833b156107f4576084908360405195869485936348a78da760e01b8552600485015260248401528860448401528760648401525af180156116a757611692575b6020838360405190838201928352604082015260408152611687606082612eaf565b519020604051908152f35b61169d848092612eaf565b6107f45782611665565b6040513d86823e3d90fd5b63039a1fd760e21b8652600486fd5b639165520160e01b8652600486fd5b50346101ff57806003193601126101ff576116e96136a7565b5f516020613bef5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460601c16604051908152f35b50346101ff5760403660031901126101ff5761084561179861178f612eeb565b602435906130c0565b604051918291602083526020830190612f15565b50346101ff5760203660031901126101ff576117c6612e55565b5f516020613c2f5f395f51905f5254600f0180549091906001600160a01b0316330361180a5781546001600160a01b0319166001600160a01b039190911617905580f35b633fdc220360e01b8352600483fd5b50346101ff57806003193601126101ff576118326136a7565b5f516020613c4f5f395f51905f525460ff8160401c16908115611c41575b50611c32575f516020613c4f5f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f516020613bef5f395f51905f52546118a2906001600160a01b03166108ed6139d1565b5f516020613c2f5f395f51905f5254906040516118c0604082612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c657761726556320081526118f36136a7565b905190205f190181526020812060ff19165f516020613c2f5f395f51905f528190558254815465ffffffffffff90911665ffffffffffff19821681178355845465ffffffffffff60301b166001600160601b031990921617178155918054835465ffffffffffff60601b191665ffffffffffff60601b9091161783558054835465ffffffffffff60901b191665ffffffffffff60901b9091161783558054835465ffffffffffff60c01b191665ffffffffffff60c01b90911617835565ffffffffffff60018201541665ffffffffffff60018501911665ffffffffffff1982541617905560028101546002840155611a30600382016001600160401b0380825416918160038801931682198454161783555460401c1667ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b60068181015490840180546001600160a01b039283166001600160a01b031991821617909155600480840154908601556005808401549086015560078084015490860180549190931691161790556008808401908201828503611b4a575b50506012808401939290820191815b8354811015611ac45780611abd611ab6600193876136da565b9089613709565b5001611a9d565b506015808501929101815b8154811015611af65780611aef611ae8600193856136da565b9087613709565b5001611acf565b8260ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a180f35b5481546001600160a01b03199081166001600160a01b039283161790925560098381015490860180548416918316919091179055600a8084015490860180548416918316919091179055600b8084015490860180548416918316919091179055600c8084015490860180548416918316919091179055600d8084015490860180548416918316919091179055600e8084015490860180548416918316919091179055600f808401549086018054841691831691909117905560108084015490860180548416918316919091179055601180840154908601805490931691161790555f80611a8e565b63f92ee8a960e01b8152600490fd5b600291506001600160401b031610155f611850565b50346101ff57806003193601126101ff577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611cae5760206040515f516020613c0f5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126101ff57611cd2612e55565b602435906001600160401b0382116107f457366023830112156107f45781600401359083611cff83612ed0565b93611d0d6040519586612eaf565b838552602085019336602482840101116107f457806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611ee0575b50611ed157611d706136a7565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181611e9d575b50611db357634c9c8ce360e01b86526004859052602486fd5b93845f516020613c0f5f395f51905f52879603611e8b5750823b15611e79575f516020613c0f5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115611e5e576110709382915190845af43d15611e56573d91611e3a83612ed0565b92611e486040519485612eaf565b83523d85602085013e613b43565b606091613b43565b5050505034611e6a5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011611ec9575b81611eb960209383612eaf565b81010312610f535751905f611d9a565b3d9150611eac565b63703e46dd60e11b8452600484fd5b5f516020613c0f5f395f51905f52546001600160a01b0316141590505f611d63565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460c01c16604051908152f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545416604051908152f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f525401339061362b565b50346101ff5760203660031901126101ff5761022c611fb5612e55565b611fbe816134f1565b60155f516020613c2f5f395f51905f5254016135a1565b50346101ff57806003193601126101ff57602065ffffffffffff60015f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f525460098101546040516302910f8b60e31b815233600482015290602090829060249082906001600160a01b03165afa90811561212a578391612144575b501561213557600c8101546040516308834cb560e21b815233600482015230602482015290602090829060449082906001600160a01b03165afa90811561212a5783916120fb575b50156120ec576120d59065ffffffffffff6120c942613988565b16906012339101613709565b156120dd5780f35b63f411c32760e01b8152600490fd5b6396cc2bc360e01b8252600482fd5b61211d915060203d602011612123575b6121158183612eaf565b810190613087565b5f6120af565b503d61210b565b6040513d85823e3d90fd5b6325878fa360e21b8252600482fd5b61215d915060203d602011612123576121158183612eaf565b5f612067565b50346101ff5760203660031901126101ff5761217d612e55565b612186816134f1565b5f516020613c2f5f395f51905f52546001600160a01b039091169060158101906121b361102e84846139fc565b5065ffffffffffff81161592915082156121e7575b50506121d85790611070916139b7565b6347a11ef760e11b8352600483fd5b65ffffffffffff91925061220c82918261220042613988565b955460901c1690613055565b169116105f806121c8565b50346101ff5760203660031901126101ff576001600160401b03600435116101ff573660236004350112156101ff576001600160401b0360043560040135116101ff573660246004356004013560051b6004350101116101ff575f516020613c2f5f395f51905f5254600f8101546001600160a01b031633036124b05781906020905b600435600401358310156124ac5760248360051b600435010135608219600435360301811215610f5b5760043501906122f66001600160a01b036122e060248501612fba565b165f908152601383016020526040902054151590565b1561249d57845b61230d6064840160248501612fce565b9050811015612490576123308161232a6064860160248701612fce565b90613003565b61235a6001600160a01b0361234483612fba565b165f908152601685016020526040902054151590565b156107d657869190600490866001600160a01b0361237783612fba565b166040519384809263b134427160e01b82525afa9182156116a7578492612471575b506004850154916123ac60248801612fba565b604488013565ffffffffffff81169003610f3057889586946124316040516123d48882612eaf565b838152601f1988013689830137604051998a978896879563545ce38960e01b8752600487015260018060a01b031660248601520135604484015265ffffffffffff60448d013516606484015260a0608484015260a4830190612f68565b03926001600160a01b03165af191821561079357600192612454575b50016122fd565b61246a90863d881161078c5761077d8183612eaf565b505f61244d565b612489919250873d89116107c4576107b68183612eaf565b905f612399565b509260019150019161229a565b6303fa1eaf60e41b8552600485fd5b8380f35b633fdc220360e01b8252600482fd5b5034612b81576040366003190112612b81576124d9612e55565b6024356001600160a01b038116929190839003612b81576124f9816134f1565b5f516020613c2f5f395f51905f525460088101546040516302910f8b60e31b81526001600160a01b038085166004830181905294939260209183916024918391165afa908115612d13575f91612e36575b5015612e275760405163054fd4d560e41b8152602081600481875afa908115612d13575f91612e08575b5060038201906001600160401b0380835416911603612df95760405163d8dfeb4560e01b8152602081600481885afa908115612d13575f91612dda575b5060068301546001600160a01b03908116911603612dcb576040516327f843b560e11b8152602081600481885afa908115612d13575f91612dac575b5065ffffffffffff80845460301c169116908110612d9d5760405163142186b760e21b8152602081600481895afa908115612d13575f91612d7e575b5015612d6f57604051630ce9b79360e41b8152602081600481895afa908115612d13575f91612d50575b50600484810180546040516368adba0760e11b81529283015292916001600160a01b031690602081602481855afa908115612d13575f91612d1e575b5019612cc1575b602060049160405192838092637f5a7c7b60e01b82525afa9081156107cb578891612ca2575b506001600160a01b0316612c9057604051630dd83c7f60e31b81526020816004818a5afa9081156107cb578891612c71575b5015612c625760405163b134427160e01b81526020816004818a5afa9081156107cb578891612c43575b50604051635d927f4560e11b81526001600160a01b039190911693602082600481885afa918215611492578992612c17575b506001600160401b0380915460401c16911603612c0857604051631a684c7560e11b8152602081600481875afa9081156107cb578891612be9575b50612bda5760405163e054e08b60e01b8152602081600481875afa9081156107cb578891612bab575b5065ffffffffffff855460c01c1665ffffffffffff821610612b9c576127e265ffffffffffff918260018801541690613055565b1611612b8d5760405163bc6eac5b60e01b8152602081600481865afa908115610793578791612b57575b50600284015410612b485754906020926128648460405161282d8282612eaf565b898152601f19820195863684840137604051938492839263cd05b8a160e01b84526004840152604060248401526044830190612f68565b0381865afa9081156107cb578891612b2b575b506001600160a01b031680612b04575060110154604051926001600160a01b03909116906128a58585612eaf565b8784523685850137813b15610f53579186916128eb93836040518096819582946348b47ce960e11b84528460048501526024840152606060448401526064830190612f68565b03925af18015612a5557908591612aef575b50505b6040516313c085b760e11b81528181600481875afa908115612a55578591612ad2575b506001600160a01b031615612ac3575f516020613c2f5f395f51905f52549260248260018060a01b03600d87015416604051928380926302910f8b60e31b82528b60048301525afa908115612a8c578691612aa6575b5015612a975760405163411557d160e01b815282816004818a5afa908115612a8c578691612a6f575b506001600160a01b031603612a605760405163054fd4d560e41b81528181600481895afa918215612a5557916001600160401b03916002938792612a28575b50501603612a195760156120d5939465ffffffffffff612a0042613988565b1660609190911b6001600160601b031916179201613709565b63ded51c0b60e01b8352600483fd5b612a479250803d10612a4e575b612a3f8183612eaf565b810190613564565b5f806129e1565b503d612a35565b6040513d87823e3d90fd5b630a724f6160e01b8452600484fd5b612a869150833d85116107c4576107b68183612eaf565b5f6129a2565b6040513d88823e3d90fd5b6346e01c4360e11b8552600485fd5b612abd9150833d8511612123576121158183612eaf565b5f612979565b630c6b5ff760e31b8452600484fd5b612ae99150823d84116107c4576107b68183612eaf565b5f612923565b81612af991612eaf565b61156457835f6128fd565b6011909101546001600160a01b0316149150612900905057633cc6586560e21b8452600484fd5b612b429150853d87116107c4576107b68183612eaf565b5f612877565b633a2662c360e11b8652600486fd5b90506020813d602011612b85575b81612b7260209383612eaf565b81010312612b8157515f61280c565b5f80fd5b3d9150612b65565b6307cfe49360e51b8652600486fd5b633062eb1960e21b8852600488fd5b612bcd915060203d602011612bd3575b612bc58183612eaf565b810190613583565b5f6127ae565b503d612bbb565b63447984b360e11b8752600487fd5b612c02915060203d602011612123576121158183612eaf565b5f612785565b63f8c618c760e01b8752600487fd5b6001600160401b03919250612c3b829160203d602011612a4e57612a3f8183612eaf565b92915061274a565b612c5c915060203d6020116107c4576107b68183612eaf565b5f612718565b631501f36360e21b8752600487fd5b612c8a915060203d602011612123576121158183612eaf565b5f6126ee565b60016221bb1360e11b03198752600487fd5b612cbb915060203d6020116107c4576107b68183612eaf565b5f6126bc565b803b15612b81576040516323f752d560e01b81525f600482018190525f1960248301528160448183865af18015612d1357612cfd575b50612696565b612d0a9198505f90612eaf565b5f966020612cf7565b6040513d5f823e3d90fd5b90506020813d602011612d48575b81612d3960209383612eaf565b81010312612b8157515f61268f565b3d9150612d2c565b612d69915060203d6020116107c4576107b68183612eaf565b5f612653565b636e549c1760e11b5f5260045ffd5b612d97915060203d602011612123576121158183612eaf565b5f612629565b634934476760e01b5f5260045ffd5b612dc5915060203d602011612bd357612bc58183612eaf565b5f6125ed565b63039a1fd760e21b5f5260045ffd5b612df3915060203d6020116107c4576107b68183612eaf565b5f6125b1565b63bfcdc45f60e01b5f5260045ffd5b612e21915060203d602011612a4e57612a3f8183612eaf565b5f612574565b635b19e4bb60e01b5f5260045ffd5b612e4f915060203d602011612123576121158183612eaf565b5f61254a565b600435906001600160a01b0382168203612b8157565b35906001600160a01b0382168203612b8157565b61014081019081106001600160401b03821117612e9b57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117612e9b57604052565b6001600160401b038111612e9b57601f01601f191660200190565b6004359065ffffffffffff82168203612b8157565b6024359065ffffffffffff82168203612b8157565b90602080835192838152019201905f5b818110612f325750505090565b82516001600160a01b0316845260209384019390920191600101612f25565b6001600160401b038111612e9b5760051b60200190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6101e4356001600160a01b0381168103612b815790565b610204356001600160a01b0381168103612b815790565b356001600160a01b0381168103612b815790565b903590601e1981360301821215612b8157018035906001600160401b038211612b8157602001918160061b36038313612b8157565b91908110156130135760061b0190565b634e487b7160e01b5f52603260045260245ffd5b90816020910312612b8157516001600160a01b0381168103612b815790565b90816020910312612b81575190565b9065ffffffffffff8091169116019065ffffffffffff821161307357565b634e487b7160e01b5f52601160045260245ffd5b90816020910312612b8157518015158103612b815790565b80518210156130135760209160051b010190565b9190820180921161307357565b9181156132cd576130d08361331c565b928151818111156132c4575f5f198201828111925b8083106131eb57505050506001945f1982019082821161307357613109828761309f565b5183975b85518910156131dd57816131218a8a61309f565b510361313d57600181018091116130735760019098019761310d565b9395975050909294505b60018211613158575b505050815290565b604051602081019165ffffffffffff60d01b9060d01b16825260068152613180602682612eaf565b5190209080156131c9576131959106836130b3565b5f198101908111613073576131c0906001600160a01b03906131b7908661309f565b5116918461309f565b525f8080613150565b634e487b7160e01b5f52601260045260245ffd5b939597505090929450613147565b9296958792959891945f935b613073578685035f1901868111613073578410156132b157613219848961309f565b51600185019485811161307357858c826001946132378f9a8f61309f565b5111613248575b50505001936131f7565b6132a8918d6132788361325b878461309f565b5192613267828261309f565b51613272898361309f565b5261309f565b52858060a01b03613289858361309f565b511693613272878060a01b0361329f858561309f565b5116918361309f565b525f8c8261323e565b94919895600191979894935001916130e5565b50509150915090565b6314f867c760e21b5f5260045ffd5b61331a906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283612eaf565b565b906133268261372b565b60125f516020613c2f5f395f51905f52540180549261334484612f51565b916133526040519384612eaf565b848352601f1961336186612f51565b0136602085013761337185612f51565b9461337f6040519687612eaf565b808652601f1961338e82612f51565b013660208801375f925f925b8284106133ae575050505080825283529190565b909192936133e36133ea846133c388866136da565b93909365ffffffffffff81169165ffffffffffff8260301c169160601c90565b50906137b5565b15613433578361340f916133fe848a61309f565b6001600160a01b038216905261380e565b613419828a61309f565b526001810180911161307357600190945b0192919061339a565b509360019061342a565b90613469816133e361102e60125f516020613c2f5f395f51905f52540160018060a01b038716906139fc565b1561347a576134779161380e565b90565b50505f90565b6001600160a01b031680156134de575f516020613bef5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b604051632474521560e21b81525f600482015233602482015290602090829060449082906001600160a01b03165afa908115612d13575f91613545575b501561353657565b630e7fea9d60e01b5f5260045ffd5b61355e915060203d602011612123576121158183612eaf565b5f61352e565b90816020910312612b8157516001600160401b0381168103612b815790565b90816020910312612b81575165ffffffffffff81168103612b815790565b65ffffffffffff916135bf61102e6001600160a01b038316846139fc565b9194909416938415908115613619575b5061360a576136079365ffffffffffff60301b6135eb42613988565b60301b161760609190911b6001600160601b0319161791613709565b50565b633f54562b60e11b5f5260045ffd5b65ffffffffffff91501615155f6135cf565b65ffffffffffff9161364961102e6001600160a01b038316846139fc565b9490911615159081613696575b50613687576136079265ffffffffffff61366f42613988565b1660609190911b6001600160601b0319161791613709565b637952fbad60e11b5f5260045ffd5b65ffffffffffff915016155f613656565b5f516020613bef5f395f51905f52546001600160a01b031633036136c757565b63118cdaa760e01b5f523360045260245ffd5b91906136e860029184613a53565b90549060031b1c92835f520160205260405f20549160018060a01b03169190565b613477929160018060a01b031691825f526002820160205260405f2055613ba1565b5f516020613c2f5f395f51905f52549065ffffffffffff61374b42613988565b1665ffffffffffff8216101561379e57613782915465ffffffffffff808260601c169160901c168082105f146137ad575090613055565b65ffffffffffff8061379342613988565b169116111561379e57565b63686c69fd60e01b5f5260045ffd5b905090613055565b65ffffffffffff16801515929190836137fb575b50826137d457505090565b65ffffffffffff16801592509082156137ec57505090565b65ffffffffffff161115905090565b65ffffffffffff8316101592505f6137c9565b5f516020613c2f5f395f51905f52546015810180546004909201545f95948694602093869391905b868810613847575050505050505050565b90919293949596986133e3613860866133c38d866136da565b1561397e57604051630ce9b79360e41b8152908890829060049082906001600160a01b03165afa908115612d13576138fc9189915f91613961575b50604051906138aa8383612eaf565b5f825289368484013760405163e02f693760e01b8152600481018990526001600160a01b038816602482015265ffffffffffff8a16604482015260806064820152938492839182916084830190612f68565b03916001600160a01b03165afa908115612d13575f91613933575b50613924906001926130b3565b995b0196959493929190613836565b90508781813d831161395a575b61394a8183612eaf565b81010312612b8157516001613917565b503d613940565b6139789150823d84116107c4576107b68183612eaf565b5f61389b565b5098600190613926565b65ffffffffffff81116139a05765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b9061347791815f52600281016020525f6040812055613a68565b60ff5f516020613c4f5f395f51905f525460401c16156139ed57565b631afcd79f60e31b5f5260045ffd5b90805f526002820160205260405f2054918183159182613a33575b5050613a21575090565b63015ab34360e11b5f5260045260245ffd5b613a4b92506001915f520160205260405f2054151590565b15815f613a17565b8054821015613013575f5260205f2001905f90565b906001820191815f528260205260405f20548015155f14613b3b575f1981018181116130735782545f1981019190821161307357818103613af0575b50505080548015613adc575f190190613abd8282613a53565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b613b26613b00613b109386613a53565b90549060031b1c92839286613a53565b819391549060031b91821b915f19901b19161790565b90555f528360205260405f20555f8080613aa4565b505050505f90565b90613b675750805115613b5857602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613b98575b613b78575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613b70565b5f82815260018201602052604090205461347a57805490600160401b821015612e9b5782613bd9613b10846001809601855584613a53565b90558054925f520160205260405f205560019056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"2376:21827:160:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;7983:34:30;7979:146;;-1:-1:-1;2376:21827:160;;;;;;;;1052:13:60;2376:21827:160;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;8085:29:30;;2376:21827:160;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;2376:21827:160;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f5f3560e01c806305c4fdf9146124bf5780630a71094c146122175780632633b70f146121635780632acde0981461200b578063373bba1f14611fd55780633ccce78914611f985780633d15e74e14611f6b5780634455a38f14611f38578063461e7a8e14611f025780634f1ef28614611cbd57806352d1902d14611c565780636c2eb350146118195780636d1064eb146117ac5780636e5c79321461176f578063709d06ae14611739578063715018a6146116d0578063729e2f36146115b257806379a8b2451461157c5780637fbe95b5146111b957806386c241a11461115b5780638da5cb5b14611126578063936f4330146110e9578063945cf2dd146110b357806396115bc214610fe75780639e03231114610fb9578063ab12275314610849578063ad3cb1cc146107fc578063af962995146105e9578063b5e5ad1214610570578063bcf33934146103a0578063c639e2d614610372578063c9b0b1e91461033b578063ceebb69a1461030d578063d55a5bdf146102d3578063d8dfeb451461029a578063d99ddfc71461025c578063d99fcd661461022f578063f2fde38b146102025763f887ea40146101c7575f80fd5b346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600701546040516001600160a01b039091168152602090f35b80fd5b50346101ff5760203660031901126101ff5761022c61021f612e55565b6102276136a7565b613480565b80f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f52540133906135a1565b50346101ff5760403660031901126101ff57602061029261027b612e55565b610283612f00565b9061028d8261372b565b61343d565b604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015460401c16604051908152f35b50346101ff57806003193601126101ff57602060045f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff5760206001600160401b0360035f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff57602060055f516020613c2f5f395f51905f52540154604051908152f35b50346101ff57806003193601126101ff576101206040516103c081612e7f565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015201526101405f516020613c2f5f395f51905f525460405161041481612e7f565b60018060a01b036008830154169182825260018060a01b036009820154166020830190815260018060a01b03600a830154166040840190815260018060a01b03600b840154166060850190815260018060a01b03600c850154166080860190815260018060a01b03600d860154169160a0870192835260018060a01b03600e870154169360c0880194855260018060a01b03600f880154169560e0890196875261012060018060a01b0360108a015416986101008b01998a52601160018060a01b03910154169901988952604051998a5260018060a01b0390511660208a015260018060a01b03905116604089015260018060a01b03905116606088015260018060a01b03905116608087015260018060a01b0390511660a086015260018060a01b0390511660c085015260018060a01b0390511660e084015260018060a01b0390511661010083015260018060a01b03905116610120820152f35b50346101ff5760203660031901126101ff576105ac90610596610591612eeb565b61331c565b9091604051938493604085526040850190612f15565b8381036020850152602080845192838152019301915b8181106105d0575050500390f35b82518452859450602093840193909201916001016105c2565b50346101ff5760203660031901126101ff576004356001600160401b0381116107f857366023820112156107f85780600401356001600160401b0381116107f4576024820191602436918360061b0101116107f4575f516020613c2f5f395f51905f5254601001546001600160a01b031633036107e5576020905f90845b818110610672578580f35b61067d818387613003565b5f516020613c2f5f395f51905f52549091906106bc906015016001600160a01b036106a785612fba565b16906001915f520160205260405f2054151590565b156107d6576004856001600160a01b036106d585612fba565b166040519283809263b134427160e01b82525afa9283156107cb576107439387928a9161079e575b50828a6040519361070e8386612eaf565b81855289368487013760405197889586948593635ca61c3760e11b855201356004840152604060248401526044830190612f68565b03926001600160a01b03165af191821561079357600192610766575b5001610667565b61078590863d881161078c575b61077d8183612eaf565b810190613046565b505f61075f565b503d610773565b6040513d89823e3d90fd5b6107be9150833d85116107c4575b6107b68183612eaf565b810190613027565b5f6106fd565b503d6107ac565b6040513d8a823e3d90fd5b633b2fc1c360e21b8752600487fd5b632249f71f60e21b8352600483fd5b8280fd5b5080fd5b50346101ff57806003193601126101ff575061084560405161081f604082612eaf565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612f68565b0390f35b50346101ff576102e03660031901126101ff575f516020613c4f5f395f51905f52546001600160401b0360ff8260401c1615911680159081610fb1575b6001149081610fa7575b159081610f9e575b50610f8f578060016001600160401b03195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f5255610f5f575b6004356001600160a01b03811681036107f4576108f5906108ed6139d1565b6102276139d1565b6108fd6139d1565b604090815161090c8382612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563100815261093f6136a7565b905190205f190183526020832060ff19165f516020613c2f5f395f51905f5281905560243565ffffffffffff81168103610f5b57815465ffffffffffff191665ffffffffffff9182161782556044359081168103610f5b5781546bffffffffffff000000000000191660309190911b65ffffffffffff60301b1617815560643565ffffffffffff81168103610f5b57815465ffffffffffff60601b191660609190911b65ffffffffffff60601b1617815560843565ffffffffffff81168103610f5b57815465ffffffffffff60901b191660909190911b65ffffffffffff60901b1617815560a43565ffffffffffff81168103610f5b57815465ffffffffffff60c01b191660c09190911b65ffffffffffff60c01b1617815560c43565ffffffffffff81168103610f5b5765ffffffffffff60018301911665ffffffffffff19825416178155600282019161012435835560e4356001600160401b0381168103610f53576001600160401b036003830191166001600160401b0319825416178155610104356001600160401b0381168103610f575781546fffffffffffffffff0000000000000000191660409190911b67ffffffffffffffff60401b16179055610164356001600160a01b0381168103610f53576006820180546001600160a01b0319166001600160a01b039283161790553060601b6004830155610144356005830155610184359081168103610f53576007820180546001600160a01b0319166001600160a01b039283161790556101a4359081168103610f53576008820180546001600160a01b0319166001600160a01b039283161790556101c4359081168103610f53576009820180546001600160a01b0319166001600160a01b03909216919091179055610bcf612f8c565b600a820180546001600160a01b0319166001600160a01b03909216919091179055610bf8612fa3565b600b820180546001600160a01b0319166001600160a01b03928316179055610224359081168103610f5357600c820180546001600160a01b0319166001600160a01b03928316179055610244359081168103610f5357600d820180546001600160a01b0319166001600160a01b03928316179055610264359081168103610f5357600e820180546001600160a01b0319166001600160a01b03928316179055610284359081168103610f5357600f820180546001600160a01b0319166001600160a01b039283161790556102a4359081168103610f53576010820180546001600160a01b0319166001600160a01b039283161790556102c4359081168103610f53576011820180546001600160a01b0319166001600160a01b039283161790558690610d22612f8c565b16803b156107f85781809160048951809481936387140b5b60e01b83525af18015610f3457610f3e575b506001600160a01b03610d5d612fa3565b16803b156107f857818091602489518094819363b7d8e1a960e01b83523060048401525af18015610f3457610f1b575b5050549065ffffffffffff821615610f0c5765ffffffffffff8260301c16918060011b6601fffffffffffe65fffffffffffe821691168103610ef8578310610ee9578265ffffffffffff8260601c1610610eda578265ffffffffffff8260901c1610610ecb5760c01c65ffffffffffff16908115610ebc575465ffffffffffff16908115610ead5765ffffffffffff91610e2691613055565b1611610e9e576003905410610e8f57610e3d575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52555160018152a180f35b634bd1214b60e11b8352600483fd5b63681d91d760e01b8452600484fd5b634c57479b60e11b8752600487fd5b63a46498b960e01b8752600487fd5b630ff9ae5960e11b8752600487fd5b630314153160e21b8752600487fd5b63395b39b960e21b8752600487fd5b634e487b7160e01b88526011600452602488fd5b6330e28a3960e11b8652600486fd5b81610f2591612eaf565b610f3057855f610d8d565b8580fd5b87513d84823e3d90fd5b81610f4891612eaf565b610f3057855f610d4c565b8680fd5b8780fd5b8480fd5b600160401b60ff60401b195f516020613c4f5f395f51905f525416175f516020613c4f5f395f51905f52556108ce565b63f92ee8a960e01b8252600482fd5b9050155f610898565b303b159150610890565b829150610886565b50346101ff57806003193601126101ff57602060025f516020613c2f5f395f51905f52540154604051908152f35b50346101ff5760203660031901126101ff57611001612e55565b5f516020613c2f5f395f51905f52546001600160a01b0390911690601281019061104b61102e84846139fc565b65ffffffffffff81169165ffffffffffff8260301c169160601c90565b5065ffffffffffff8116159291508215611083575b50506110745790611070916139b7565b5080f35b63f1c9810160e01b8352600483fd5b65ffffffffffff9192506110a882918261109c42613988565b955460601c1690613055565b169116105f80611060565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460301c16604051908152f35b50346101ff5760203660031901126101ff5761022c611106612e55565b61110f816134f1565b60155f516020613c2f5f395f51905f52540161362b565b50346101ff57806003193601126101ff575f516020613bef5f395f51905f52546040516001600160a01b039091168152602090f35b50346101ff5760203660031901126101ff57611175612e55565b5f516020613c2f5f395f51905f525460100180549091906001600160a01b031633036107e55781546001600160a01b0319166001600160a01b039190911617905580f35b50346101ff5760403660031901126101ff576004356001600160401b0381116107f857606060031982360301126107f857604051606081018181106001600160401b038211176115685760405281600401356001600160401b0381116115645782013660238201121561156457600481013561123481612f51565b916112426040519384612eaf565b818352602060048185019360061b8301010190368211610f5357602401915b818310611506575050508152611284604460208301936024810135855201612e6b565b9060408101918252611294612f00565b935f516020613c2f5f395f51905f525490600782019460018060a01b0386541633036114f757845160068401546001600160a01b039182169116036114e857819594939550606093829565ffffffffffff60056015870196019916926020965b895180518a10156114a157896113099161309f565b5180516001600160a01b03165f908152600189016020526040902054156107d657908b91866113c28b6113b48b6113a26113518f61102e9060018060a01b038a5116906139fc565b9a546040516001600160a01b03909c169b925090506113708683612eaf565b838252604051936113818786612eaf565b845260405197889687015260408601526080606086015260a0850190612f68565b838103601f1901608085015290612f68565b03601f198101835282612eaf565b85548751838d0180519096909290916001600160a01b039081169116823b1561149d57908c809493926114226040519788968795869463239723ed60e01b8652600486015260248501526044840152608060648401526084830190612f68565b03925af180156114925790899161147d575b50509161147591600193519151604051926bffffffffffffffffffffffff199060601b168c840152603483015260348252611470605483612eaf565b6132dc565b9801976112f4565b8161148791612eaf565b610f5757875f611434565b6040513d8b823e3d90fd5b8c80fd5b886114da86848651915160405192858401526bffffffffffffffffffffffff199060601b16604083015260348252611470605483612eaf565b818151910120604051908152f35b63039a1fd760e21b8252600482fd5b639165520160e01b8252600482fd5b604083360312610f5357604051604081018181106001600160401b038211176115505791602091604093845261153b86612e6b565b81528286013583820152815201920191611261565b634e487b7160e01b89526041600452602489fd5b8380fd5b634e487b7160e01b84526041600452602484fd5b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460901c16604051908152f35b50346101ff5760603660031901126101ff576115cc612e55565b5f516020613c2f5f395f51905f5254600781015460243592604435926001600160a01b0390921691338390036116c15760068101546001600160a01b03928316921682036116b257600e01546001600160a01b031691859190833b156107f4576084908360405195869485936348a78da760e01b8552600485015260248401528860448401528760648401525af180156116a757611692575b6020838360405190838201928352604082015260408152611687606082612eaf565b519020604051908152f35b61169d848092612eaf565b6107f45782611665565b6040513d86823e3d90fd5b63039a1fd760e21b8652600486fd5b639165520160e01b8652600486fd5b50346101ff57806003193601126101ff576116e96136a7565b5f516020613bef5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460601c16604051908152f35b50346101ff5760403660031901126101ff5761084561179861178f612eeb565b602435906130c0565b604051918291602083526020830190612f15565b50346101ff5760203660031901126101ff576117c6612e55565b5f516020613c2f5f395f51905f5254600f0180549091906001600160a01b0316330361180a5781546001600160a01b0319166001600160a01b039190911617905580f35b633fdc220360e01b8352600483fd5b50346101ff57806003193601126101ff576118326136a7565b5f516020613c4f5f395f51905f525460ff8160401c16908115611c41575b50611c32575f516020613c4f5f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f516020613bef5f395f51905f52546118a2906001600160a01b03166108ed6139d1565b5f516020613c2f5f395f51905f5254906040516118c0604082612eaf565b601f8152602081017f6d6964646c65776172652e73746f726167652e4d6964646c657761726556320081526118f36136a7565b905190205f190181526020812060ff19165f516020613c2f5f395f51905f528190558254815465ffffffffffff90911665ffffffffffff19821681178355845465ffffffffffff60301b166001600160601b031990921617178155918054835465ffffffffffff60601b191665ffffffffffff60601b9091161783558054835465ffffffffffff60901b191665ffffffffffff60901b9091161783558054835465ffffffffffff60c01b191665ffffffffffff60c01b90911617835565ffffffffffff60018201541665ffffffffffff60018501911665ffffffffffff1982541617905560028101546002840155611a30600382016001600160401b0380825416918160038801931682198454161783555460401c1667ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b60068181015490840180546001600160a01b039283166001600160a01b031991821617909155600480840154908601556005808401549086015560078084015490860180549190931691161790556008808401908201828503611b4a575b50506012808401939290820191815b8354811015611ac45780611abd611ab6600193876136da565b9089613709565b5001611a9d565b506015808501929101815b8154811015611af65780611aef611ae8600193856136da565b9087613709565b5001611acf565b8260ff60401b195f516020613c4f5f395f51905f5254165f516020613c4f5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a180f35b5481546001600160a01b03199081166001600160a01b039283161790925560098381015490860180548416918316919091179055600a8084015490860180548416918316919091179055600b8084015490860180548416918316919091179055600c8084015490860180548416918316919091179055600d8084015490860180548416918316919091179055600e8084015490860180548416918316919091179055600f808401549086018054841691831691909117905560108084015490860180548416918316919091179055601180840154908601805490931691161790555f80611a8e565b63f92ee8a960e01b8152600490fd5b600291506001600160401b031610155f611850565b50346101ff57806003193601126101ff577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611cae5760206040515f516020613c0f5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b5060403660031901126101ff57611cd2612e55565b602435906001600160401b0382116107f457366023830112156107f45781600401359083611cff83612ed0565b93611d0d6040519586612eaf565b838552602085019336602482840101116107f457806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611ee0575b50611ed157611d706136a7565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa869181611e9d575b50611db357634c9c8ce360e01b86526004859052602486fd5b93845f516020613c0f5f395f51905f52879603611e8b5750823b15611e79575f516020613c0f5f395f51905f5280546001600160a01b031916821790558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115611e5e576110709382915190845af43d15611e56573d91611e3a83612ed0565b92611e486040519485612eaf565b83523d85602085013e613b43565b606091613b43565b5050505034611e6a5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8552600452602484fd5b632a87526960e21b8652600452602485fd5b9091506020813d602011611ec9575b81611eb960209383612eaf565b81010312610f535751905f611d9a565b3d9150611eac565b63703e46dd60e11b8452600484fd5b5f516020613c0f5f395f51905f52546001600160a01b0316141590505f611d63565b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545460c01c16604051908152f35b50346101ff57806003193601126101ff57602065ffffffffffff5f516020613c2f5f395f51905f52545416604051908152f35b50346101ff57806003193601126101ff5761022c60125f516020613c2f5f395f51905f525401339061362b565b50346101ff5760203660031901126101ff5761022c611fb5612e55565b611fbe816134f1565b60155f516020613c2f5f395f51905f5254016135a1565b50346101ff57806003193601126101ff57602065ffffffffffff60015f516020613c2f5f395f51905f5254015416604051908152f35b50346101ff57806003193601126101ff575f516020613c2f5f395f51905f525460098101546040516302910f8b60e31b815233600482015290602090829060249082906001600160a01b03165afa90811561212a578391612144575b501561213557600c8101546040516308834cb560e21b815233600482015230602482015290602090829060449082906001600160a01b03165afa90811561212a5783916120fb575b50156120ec576120d59065ffffffffffff6120c942613988565b16906012339101613709565b156120dd5780f35b63f411c32760e01b8152600490fd5b6396cc2bc360e01b8252600482fd5b61211d915060203d602011612123575b6121158183612eaf565b810190613087565b5f6120af565b503d61210b565b6040513d85823e3d90fd5b6325878fa360e21b8252600482fd5b61215d915060203d602011612123576121158183612eaf565b5f612067565b50346101ff5760203660031901126101ff5761217d612e55565b612186816134f1565b5f516020613c2f5f395f51905f52546001600160a01b039091169060158101906121b361102e84846139fc565b5065ffffffffffff81161592915082156121e7575b50506121d85790611070916139b7565b6347a11ef760e11b8352600483fd5b65ffffffffffff91925061220c82918261220042613988565b955460901c1690613055565b169116105f806121c8565b50346101ff5760203660031901126101ff576001600160401b03600435116101ff573660236004350112156101ff576001600160401b0360043560040135116101ff573660246004356004013560051b6004350101116101ff575f516020613c2f5f395f51905f5254600f8101546001600160a01b031633036124b05781906020905b600435600401358310156124ac5760248360051b600435010135608219600435360301811215610f5b5760043501906122f66001600160a01b036122e060248501612fba565b165f908152601383016020526040902054151590565b1561249d57845b61230d6064840160248501612fce565b9050811015612490576123308161232a6064860160248701612fce565b90613003565b61235a6001600160a01b0361234483612fba565b165f908152601685016020526040902054151590565b156107d657869190600490866001600160a01b0361237783612fba565b166040519384809263b134427160e01b82525afa9182156116a7578492612471575b506004850154916123ac60248801612fba565b604488013565ffffffffffff81169003610f3057889586946124316040516123d48882612eaf565b838152601f1988013689830137604051998a978896879563545ce38960e01b8752600487015260018060a01b031660248601520135604484015265ffffffffffff60448d013516606484015260a0608484015260a4830190612f68565b03926001600160a01b03165af191821561079357600192612454575b50016122fd565b61246a90863d881161078c5761077d8183612eaf565b505f61244d565b612489919250873d89116107c4576107b68183612eaf565b905f612399565b509260019150019161229a565b6303fa1eaf60e41b8552600485fd5b8380f35b633fdc220360e01b8252600482fd5b5034612b81576040366003190112612b81576124d9612e55565b6024356001600160a01b038116929190839003612b81576124f9816134f1565b5f516020613c2f5f395f51905f525460088101546040516302910f8b60e31b81526001600160a01b038085166004830181905294939260209183916024918391165afa908115612d13575f91612e36575b5015612e275760405163054fd4d560e41b8152602081600481875afa908115612d13575f91612e08575b5060038201906001600160401b0380835416911603612df95760405163d8dfeb4560e01b8152602081600481885afa908115612d13575f91612dda575b5060068301546001600160a01b03908116911603612dcb576040516327f843b560e11b8152602081600481885afa908115612d13575f91612dac575b5065ffffffffffff80845460301c169116908110612d9d5760405163142186b760e21b8152602081600481895afa908115612d13575f91612d7e575b5015612d6f57604051630ce9b79360e41b8152602081600481895afa908115612d13575f91612d50575b50600484810180546040516368adba0760e11b81529283015292916001600160a01b031690602081602481855afa908115612d13575f91612d1e575b5019612cc1575b602060049160405192838092637f5a7c7b60e01b82525afa9081156107cb578891612ca2575b506001600160a01b0316612c9057604051630dd83c7f60e31b81526020816004818a5afa9081156107cb578891612c71575b5015612c625760405163b134427160e01b81526020816004818a5afa9081156107cb578891612c43575b50604051635d927f4560e11b81526001600160a01b039190911693602082600481885afa918215611492578992612c17575b506001600160401b0380915460401c16911603612c0857604051631a684c7560e11b8152602081600481875afa9081156107cb578891612be9575b50612bda5760405163e054e08b60e01b8152602081600481875afa9081156107cb578891612bab575b5065ffffffffffff855460c01c1665ffffffffffff821610612b9c576127e265ffffffffffff918260018801541690613055565b1611612b8d5760405163bc6eac5b60e01b8152602081600481865afa908115610793578791612b57575b50600284015410612b485754906020926128648460405161282d8282612eaf565b898152601f19820195863684840137604051938492839263cd05b8a160e01b84526004840152604060248401526044830190612f68565b0381865afa9081156107cb578891612b2b575b506001600160a01b031680612b04575060110154604051926001600160a01b03909116906128a58585612eaf565b8784523685850137813b15610f53579186916128eb93836040518096819582946348b47ce960e11b84528460048501526024840152606060448401526064830190612f68565b03925af18015612a5557908591612aef575b50505b6040516313c085b760e11b81528181600481875afa908115612a55578591612ad2575b506001600160a01b031615612ac3575f516020613c2f5f395f51905f52549260248260018060a01b03600d87015416604051928380926302910f8b60e31b82528b60048301525afa908115612a8c578691612aa6575b5015612a975760405163411557d160e01b815282816004818a5afa908115612a8c578691612a6f575b506001600160a01b031603612a605760405163054fd4d560e41b81528181600481895afa918215612a5557916001600160401b03916002938792612a28575b50501603612a195760156120d5939465ffffffffffff612a0042613988565b1660609190911b6001600160601b031916179201613709565b63ded51c0b60e01b8352600483fd5b612a479250803d10612a4e575b612a3f8183612eaf565b810190613564565b5f806129e1565b503d612a35565b6040513d87823e3d90fd5b630a724f6160e01b8452600484fd5b612a869150833d85116107c4576107b68183612eaf565b5f6129a2565b6040513d88823e3d90fd5b6346e01c4360e11b8552600485fd5b612abd9150833d8511612123576121158183612eaf565b5f612979565b630c6b5ff760e31b8452600484fd5b612ae99150823d84116107c4576107b68183612eaf565b5f612923565b81612af991612eaf565b61156457835f6128fd565b6011909101546001600160a01b0316149150612900905057633cc6586560e21b8452600484fd5b612b429150853d87116107c4576107b68183612eaf565b5f612877565b633a2662c360e11b8652600486fd5b90506020813d602011612b85575b81612b7260209383612eaf565b81010312612b8157515f61280c565b5f80fd5b3d9150612b65565b6307cfe49360e51b8652600486fd5b633062eb1960e21b8852600488fd5b612bcd915060203d602011612bd3575b612bc58183612eaf565b810190613583565b5f6127ae565b503d612bbb565b63447984b360e11b8752600487fd5b612c02915060203d602011612123576121158183612eaf565b5f612785565b63f8c618c760e01b8752600487fd5b6001600160401b03919250612c3b829160203d602011612a4e57612a3f8183612eaf565b92915061274a565b612c5c915060203d6020116107c4576107b68183612eaf565b5f612718565b631501f36360e21b8752600487fd5b612c8a915060203d602011612123576121158183612eaf565b5f6126ee565b60016221bb1360e11b03198752600487fd5b612cbb915060203d6020116107c4576107b68183612eaf565b5f6126bc565b803b15612b81576040516323f752d560e01b81525f600482018190525f1960248301528160448183865af18015612d1357612cfd575b50612696565b612d0a9198505f90612eaf565b5f966020612cf7565b6040513d5f823e3d90fd5b90506020813d602011612d48575b81612d3960209383612eaf565b81010312612b8157515f61268f565b3d9150612d2c565b612d69915060203d6020116107c4576107b68183612eaf565b5f612653565b636e549c1760e11b5f5260045ffd5b612d97915060203d602011612123576121158183612eaf565b5f612629565b634934476760e01b5f5260045ffd5b612dc5915060203d602011612bd357612bc58183612eaf565b5f6125ed565b63039a1fd760e21b5f5260045ffd5b612df3915060203d6020116107c4576107b68183612eaf565b5f6125b1565b63bfcdc45f60e01b5f5260045ffd5b612e21915060203d602011612a4e57612a3f8183612eaf565b5f612574565b635b19e4bb60e01b5f5260045ffd5b612e4f915060203d602011612123576121158183612eaf565b5f61254a565b600435906001600160a01b0382168203612b8157565b35906001600160a01b0382168203612b8157565b61014081019081106001600160401b03821117612e9b57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b03821117612e9b57604052565b6001600160401b038111612e9b57601f01601f191660200190565b6004359065ffffffffffff82168203612b8157565b6024359065ffffffffffff82168203612b8157565b90602080835192838152019201905f5b818110612f325750505090565b82516001600160a01b0316845260209384019390920191600101612f25565b6001600160401b038111612e9b5760051b60200190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6101e4356001600160a01b0381168103612b815790565b610204356001600160a01b0381168103612b815790565b356001600160a01b0381168103612b815790565b903590601e1981360301821215612b8157018035906001600160401b038211612b8157602001918160061b36038313612b8157565b91908110156130135760061b0190565b634e487b7160e01b5f52603260045260245ffd5b90816020910312612b8157516001600160a01b0381168103612b815790565b90816020910312612b81575190565b9065ffffffffffff8091169116019065ffffffffffff821161307357565b634e487b7160e01b5f52601160045260245ffd5b90816020910312612b8157518015158103612b815790565b80518210156130135760209160051b010190565b9190820180921161307357565b9181156132cd576130d08361331c565b928151818111156132c4575f5f198201828111925b8083106131eb57505050506001945f1982019082821161307357613109828761309f565b5183975b85518910156131dd57816131218a8a61309f565b510361313d57600181018091116130735760019098019761310d565b9395975050909294505b60018211613158575b505050815290565b604051602081019165ffffffffffff60d01b9060d01b16825260068152613180602682612eaf565b5190209080156131c9576131959106836130b3565b5f198101908111613073576131c0906001600160a01b03906131b7908661309f565b5116918461309f565b525f8080613150565b634e487b7160e01b5f52601260045260245ffd5b939597505090929450613147565b9296958792959891945f935b613073578685035f1901868111613073578410156132b157613219848961309f565b51600185019485811161307357858c826001946132378f9a8f61309f565b5111613248575b50505001936131f7565b6132a8918d6132788361325b878461309f565b5192613267828261309f565b51613272898361309f565b5261309f565b52858060a01b03613289858361309f565b511693613272878060a01b0361329f858561309f565b5116918361309f565b525f8c8261323e565b94919895600191979894935001916130e5565b50509150915090565b6314f867c760e21b5f5260045ffd5b61331a906020808095946040519684889551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101845283612eaf565b565b906133268261372b565b60125f516020613c2f5f395f51905f52540180549261334484612f51565b916133526040519384612eaf565b848352601f1961336186612f51565b0136602085013761337185612f51565b9461337f6040519687612eaf565b808652601f1961338e82612f51565b013660208801375f925f925b8284106133ae575050505080825283529190565b909192936133e36133ea846133c388866136da565b93909365ffffffffffff81169165ffffffffffff8260301c169160601c90565b50906137b5565b15613433578361340f916133fe848a61309f565b6001600160a01b038216905261380e565b613419828a61309f565b526001810180911161307357600190945b0192919061339a565b509360019061342a565b90613469816133e361102e60125f516020613c2f5f395f51905f52540160018060a01b038716906139fc565b1561347a576134779161380e565b90565b50505f90565b6001600160a01b031680156134de575f516020613bef5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b604051632474521560e21b81525f600482015233602482015290602090829060449082906001600160a01b03165afa908115612d13575f91613545575b501561353657565b630e7fea9d60e01b5f5260045ffd5b61355e915060203d602011612123576121158183612eaf565b5f61352e565b90816020910312612b8157516001600160401b0381168103612b815790565b90816020910312612b81575165ffffffffffff81168103612b815790565b65ffffffffffff916135bf61102e6001600160a01b038316846139fc565b9194909416938415908115613619575b5061360a576136079365ffffffffffff60301b6135eb42613988565b60301b161760609190911b6001600160601b0319161791613709565b50565b633f54562b60e11b5f5260045ffd5b65ffffffffffff91501615155f6135cf565b65ffffffffffff9161364961102e6001600160a01b038316846139fc565b9490911615159081613696575b50613687576136079265ffffffffffff61366f42613988565b1660609190911b6001600160601b0319161791613709565b637952fbad60e11b5f5260045ffd5b65ffffffffffff915016155f613656565b5f516020613bef5f395f51905f52546001600160a01b031633036136c757565b63118cdaa760e01b5f523360045260245ffd5b91906136e860029184613a53565b90549060031b1c92835f520160205260405f20549160018060a01b03169190565b613477929160018060a01b031691825f526002820160205260405f2055613ba1565b5f516020613c2f5f395f51905f52549065ffffffffffff61374b42613988565b1665ffffffffffff8216101561379e57613782915465ffffffffffff808260601c169160901c168082105f146137ad575090613055565b65ffffffffffff8061379342613988565b169116111561379e57565b63686c69fd60e01b5f5260045ffd5b905090613055565b65ffffffffffff16801515929190836137fb575b50826137d457505090565b65ffffffffffff16801592509082156137ec57505090565b65ffffffffffff161115905090565b65ffffffffffff8316101592505f6137c9565b5f516020613c2f5f395f51905f52546015810180546004909201545f95948694602093869391905b868810613847575050505050505050565b90919293949596986133e3613860866133c38d866136da565b1561397e57604051630ce9b79360e41b8152908890829060049082906001600160a01b03165afa908115612d13576138fc9189915f91613961575b50604051906138aa8383612eaf565b5f825289368484013760405163e02f693760e01b8152600481018990526001600160a01b038816602482015265ffffffffffff8a16604482015260806064820152938492839182916084830190612f68565b03916001600160a01b03165afa908115612d13575f91613933575b50613924906001926130b3565b995b0196959493929190613836565b90508781813d831161395a575b61394a8183612eaf565b81010312612b8157516001613917565b503d613940565b6139789150823d84116107c4576107b68183612eaf565b5f61389b565b5098600190613926565b65ffffffffffff81116139a05765ffffffffffff1690565b6306dfcc6560e41b5f52603060045260245260445ffd5b9061347791815f52600281016020525f6040812055613a68565b60ff5f516020613c4f5f395f51905f525460401c16156139ed57565b631afcd79f60e31b5f5260045ffd5b90805f526002820160205260405f2054918183159182613a33575b5050613a21575090565b63015ab34360e11b5f5260045260245ffd5b613a4b92506001915f520160205260405f2054151590565b15815f613a17565b8054821015613013575f5260205f2001905f90565b906001820191815f528260205260405f20548015155f14613b3b575f1981018181116130735782545f1981019190821161307357818103613af0575b50505080548015613adc575f190190613abd8282613a53565b8154905f199060031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b613b26613b00613b109386613a53565b90549060031b1c92839286613a53565b819391549060031b91821b915f19901b19161790565b90555f528360205260405f20555f8080613aa4565b505050505f90565b90613b675750805115613b5857602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580613b98575b613b78575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b15613b70565b5f82815260018201602052604090205461347a57805490600160401b821015612e9b5782613bd9613b10846001809601855584613a53565b90558054925f520160205260405f205560019056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"2376:21827:160:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;7849:17;;2376:21827;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;2357:1:29;2376:21827:160;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;2376:21827:160;;;;;;;;;;;;;;;9103:10;9074:20;-1:-1:-1;;;;;;;;;;;2376:21827:160;9074:20;9103:10;;;:::i;2376:21827::-;;;;;;;-1:-1:-1;;2376:21827:160;;;;;13809:372;2376:21827;;:::i;:::-;;;:::i;:::-;22945:2;;;;:::i;:::-;13809:372;:::i;:::-;2376:21827;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;7536:21;;2376:21827;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7422:30:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;7422:30;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;7641:21;2376:21827;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7296:34:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;7296:34;2376:21827;;;;;;;;;;;;;;;;;;;;;;7747:22;-1:-1:-1;;;;;;;;;;;2376:21827:160;7747:22;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;:::i;:::-;;;;;;7981:20;;;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;16223:38;;2376:21827;-1:-1:-1;;;;;2376:21827:160;16209:10;:52;16205:108;;2376:21827;;;;16328:9;16339:18;;;;;;2376:21827;;;16359:3;16411:10;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;8806:28:86;;16441:17:160;;-1:-1:-1;;;;;16468:11:160;2376:21827;16468:11;:::i;:::-;2376:21827;8806:28:86;5197:14;5101:129;-1:-1:-1;2376:21827:160;5197:14:86;2376:21827:160;;;-1:-1:-1;2376:21827:160;;5197:26:86;;5101:129;;8806:28;16440:40:160;16436:106;;2376:21827;;-1:-1:-1;;;;;16576:11:160;;;:::i;:::-;2376:21827;;;;;;;;;;16569:29;;;;;;;;;2376:21827;16569:29;;;;;;;16359:3;2376:21827;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;16556:83;;16613:11;2376:21827;;16556:83;;2376:21827;;;;;;;;;;;:::i;:::-;16556:83;;-1:-1:-1;;;;;2376:21827:160;16556:83;;;;;;;2376:21827;16556:83;;;16359:3;;2376:21827;16328:9;;16556:83;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;2376:21827;;;;;;;;;16569:29;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2376:21827;;;;;;;;;16436:106;-1:-1:-1;;;16507:20:160;;2376:21827;15830:20;16507;16205:108;-1:-1:-1;;;16284:18:160;;2376:21827;8477:18;16284;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;4301:16:30;2376:21827:160;;4724:16:30;;:34;;;;2376:21827:160;4803:1:30;4788:16;:50;;;;2376:21827:160;4853:13:30;:30;;;;2376:21827:160;4849:91:30;;;2376:21827:160;4803:1:30;-1:-1:-1;;;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;4977:67:30;;2376:21827:160;;;-1:-1:-1;;;;;2376:21827:160;;;;;;6959:1:30;;6891:76;;:::i;:::-;;;:::i;6959:1::-;6891:76;;:::i;:::-;2376:21827:160;;;;;;;;:::i;:::-;;;;;;;;;;2303:62:29;;:::i;:::-;1800:178:73;;;;-1:-1:-1;;1800:178:73;;;2376:21827:160;1800:178:73;;-1:-1:-1;;1800:178:73;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;3446:19;2376:21827;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;3501:29;2376:21827;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3564:27;2376:21827;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3622:24;2376:21827;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3676:23;2376:21827;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;3736:30;2376:21827;;;;;;;;;4803:1:30;3709:24:160;;2376:21827;;;;;;;;;;3776:27;;;2376:21827;3806:33;2376:21827;;;3877:31;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;-1:-1:-1;;;;;3849:25:160;;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;;;;;;;3942:27;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;4017:18;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;4002:12;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;4068:4;3564:27;2376:21827;;4045:12;;2376:21827;4130:19;2376:21827;4114:13;;;2376:21827;4171:14;2376:21827;;;;;;;;4160:8;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;4210:17;2376:21827;;;;;;;;4196:11;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;3033:1;;:::i;:::-;;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;3033:1;;:::i;:::-;;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;3033:1;2376:21827;;;;;;;;3033:1;;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;4255:33;;:::i;:::-;2376:21827;4238:69;;;;;2376:21827;;;;;;;;;;;;;4238:69;;;;;;;;;;2376:21827;-1:-1:-1;;;;;;4343:35:160;;:::i;:::-;2376:21827;4317:91;;;;;2376:21827;;;3446:19;2376:21827;;;;;;;;;4317:91;;4068:4;2376:21827;4317:91;;2376:21827;4317:91;;;;;;;;2376:21827;;;;;;;;17713:17;2376:21827;;;;;;;;;4803:1:30;2376:21827:160;;;;;;;;;;;18102:44;;2376:21827;;;;;3564:27;2376:21827;;18377:48;2376:21827;;;;;;;;18665:45;2376:21827;;3736:30;2376:21827;;;;18840:21;;2376:21827;;;;;;19112:28;;2376:21827;;;19219:44;;;;:::i;:::-;2376:21827;19219:71;2376:21827;;3849:25;2376:21827;;19561:32;2376:21827;;5064:101:30;;2376:21827:160;;;5064:101:30;2376:21827:160;5140:14:30;2376:21827:160;-1:-1:-1;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;4803:1:30;2376:21827:160;;5140:14:30;2376:21827:160;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;-1:-1:-1;;;2376:21827:160;;3033:1;2376:21827;;3446:19;2376:21827;;;-1:-1:-1;;;2376:21827:160;;;;;4317:91;;;;;:::i;:::-;2376:21827;;4317:91;;;;2376:21827;;;;4317:91;2376:21827;;;;;;;;;4238:69;;;;;:::i;:::-;2376:21827;;4238:69;;;;2376:21827;;;;;;;;;;;;4977:67:30;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;4977:67:30;;4849:91;-1:-1:-1;;;4906:23:30;;2376:21827:160;6496:23:30;4906;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;2376:21827:160;;;;;;;;;;;;;;7164:36;-1:-1:-1;;;;;;;;;;;2376:21827:160;7164:36;2376:21827;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;9356:11;;;;3505:23:172;23973:47:85;2376:21827:160;9356:11;23973:47:85;:::i;:::-;2376:21827:160;;;;;;1227:2:172;2376:21827:160;;;1249:2:172;2376:21827:160;941:319:172;;3505:23;-1:-1:-1;2376:21827:160;;;9401:17;;2376:21827;-1:-1:-1;9401:76:160;;;;2376:21827;9397:144;;;;21805:50:85;;;;:::i;:::-;;2376:21827:160;;9397:144;-1:-1:-1;;;9500:30:160;;2376:21827;9500:30;;9401:76;2376:21827;837:15:87;;;9441:36:160;837:15:87;;;819:34;837:15;819:34;:::i;:::-;2376:21827:160;;;;;9441:36;;:::i;:::-;2376:21827;;;9422:55;9401:76;;;;2376:21827;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;11781:5;2376:21827;;:::i;:::-;23990:5;;;:::i;:::-;11756:17;-1:-1:-1;;;;;;;;;;;2376:21827:160;11756:17;11781:5;:::i;2376:21827::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;8425:29;;2376:21827;;8425:29;;2376:21827;-1:-1:-1;;;;;2376:21827:160;8411:10;:43;8407:99;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;2376:21827:160;10308:8;;;;2376:21827;;;;;;;;;10294:10;:22;10290:71;;2376:21827;;;10396:12;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;10375:33;10371:90;;10471:30;;;;;;2376:21827;10516:13;;10670:8;2376:21827;10906:13;10670:8;;;10906:13;;2376:21827;;;;10511:677;10568:3;10535:24;;2376:21827;;10531:35;;;;;10623:27;;;;:::i;:::-;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;-1:-1:-1;2376:21827:160;;;;5197:14:86;;2376:21827:160;;;;;;5197:26:86;10665:99:160;;2376:21827;;;;10884:58;2376:21827;;;;3710:23:172;2376:21827:160;23973:47:85;2376:21827:160;;;;;;;;;23973:47:85;;:::i;3710:23:172:-;2376:21827:160;;;;-1:-1:-1;;;;;2376:21827:160;;;;;-1:-1:-1;2376:21827:160;-1:-1:-1;2376:21827:160;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;10884:58;;;;;2376:21827;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;;;;;:::i;:::-;10884:58;2376:21827;;10884:58;;;;;;:::i;:::-;2376:21827;;;;11041:14;;;2376:21827;;11041:14;;2376:21827;;11041:14;;-1:-1:-1;;;;;2376:21827:160;;;;;10956:106;;;;;2376:21827;;;;;;;;;;;;;;;;;;;10956:106;;2376:21827;10956:106;;2376:21827;;;;;;;;;;;;;;;;;;;:::i;:::-;10956:106;;;;;;;;;;;;;10568:3;2376:21827;;;11097:80;2376:21827;;;;;;;;;;;;;;;11129:47;;;2376:21827;;;;;;11129:47;;;;;;:::i;:::-;11097:80;:::i;:::-;10568:3;2376:21827;10516:13;;;10956:106;;;;;:::i;:::-;2376:21827;;10956:106;;;;;2376:21827;;;;;;;;;10956:106;2376:21827;;;10531:35;;11215:93;10531:35;;;2376:21827;;;;;11247:60;;;;2376:21827;;;;;;;;;;;;11247:60;;;11129:47;11247:60;;:::i;11215:93::-;2376:21827;;;;;11205:104;2376:21827;;;;;;10371:90;-1:-1:-1;;;10431:19:160;;2376:21827;20113:19;10431;10290:71;-1:-1:-1;;;10339:11:160;;2376:21827;9799:11;10339;2376:21827;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;9768:8;;;2376:21827;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;9754:10;:22;;;9750:71;;9844:12;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;9835:21;;9831:78;;9943:27;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;9919:101;;;;;;2376:21827;;;;;;;;;;;;9919:101;;2376:21827;9919:101;;2376:21827;;;;;;;;;;;;;;;9919:101;;;;;;;;2376:21827;;;;;;10048:30;;;;2376:21827;;;;;;;;10048:30;;;2376:21827;10048:30;;:::i;:::-;2376:21827;10038:41;;2376:21827;;;;;;9919:101;;;;;;:::i;:::-;2376:21827;;9919:101;;;;2376:21827;;;;;;;;;9831:78;-1:-1:-1;;;9879:19:160;;2376:21827;20113:19;9879;9750:71;-1:-1:-1;;;9799:11:160;;2376:21827;9799:11;;2376:21827;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;-1:-1:-1;;;;;2376:21827:160;3975:40:29;2376:21827:160;;3975:40:29;2376:21827:160;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;8157:30;;2376:21827;;8157:30;;2376:21827;-1:-1:-1;;;;;2376:21827:160;8143:10;:44;8139:101;;2376:21827;;-1:-1:-1;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;8139:101;-1:-1:-1;;;8210:19:160;;2376:21827;15350:19;8210;2376:21827;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;6429:44:30;;;;;2376:21827:160;6425:105:30;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;2376:21827:160;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;6959:1:30;;-1:-1:-1;;;;;2376:21827:160;6891:76:30;;:::i;6959:1::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;:::i;:::-;;;;;;;;;;2303:62:29;;:::i;:::-;1800:178:73;;;;-1:-1:-1;;1800:178:73;;;2376:21827:160;1800:178:73;;-1:-1:-1;;1800:178:73;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;;;-1:-1:-1;;;2376:21827:160;-1:-1:-1;;;;;;2376:21827:160;;;;;;;1800:178:73;2376:21827:160;;;;-1:-1:-1;;;;2376:21827:160;-1:-1:-1;;;2376:21827:160;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;-1:-1:-1;;;2376:21827:160;;;;;;;;;;-1:-1:-1;;;;2376:21827:160;-1:-1:-1;;;2376:21827:160;;;;;;;6591:4:30;5155:33:160;;2376:21827;;;6591:4:30;5119:33:160;;2376:21827;;;;;;;;;;4573:1;5237:36;;2376:21827;4573:1;5198:36;;2376:21827;5364:63;5320:34;;;-1:-1:-1;;;;;2376:21827:160;;;;5283:34;;5320;5283;;2376:21827;;;;;;;;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;;-1:-1:-1;;;2376:21827:160;;;;;;5364:63;5461:21;;;;2376:21827;5437:21;;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;;5516:21;;;2376:21827;5492:21;;;2376:21827;5572:22;;;;2376:21827;5547:22;;;2376:21827;5624:17;;;;2376:21827;5604:17;;;2376:21827;;;;;;;;;;;5674:20;5651;;;;5674;;2376:21827;;;;;;-1:-1:-1;;5729:20:160;5850;;;;5710:13;5729:20;;;;5710:13;5760:3;2376:21827;;5725:33;;;;;5810:26;5850:36;5810:26;6591:4:30;5810:26:160;;;:::i;:::-;5850:36;;;:::i;:::-;;2376:21827;5710:13;;5725:33;-1:-1:-1;5931:17:160;6046;;;;5725:33;5931:17;5725:33;5959:3;2376:21827;;5927:30;;;;;6009:23;6046:33;6009:23;6591:4:30;6009:23:160;;;:::i;:::-;6046:33;;;:::i;:::-;;2376:21827;5912:13;;5927:30;;-1:-1:-1;;;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;;;;;;2376:21827:160;6654:20:30;2376:21827:160;;;4573:1;2376:21827;;6654:20:30;2376:21827:160;;;;;;-1:-1:-1;;;;;;2376:21827:160;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2376:21827:160;;6425:105:30;-1:-1:-1;;;6496:23:30;;2376:21827:160;;6496:23:30;6429:44;4573:1:160;2376:21827;;-1:-1:-1;;;;;2376:21827:160;6448:25:30;;6429:44;;;2376:21827:160;;;;;;;;;;;;;4824:6:60;-1:-1:-1;;;;;2376:21827:160;4815:4:60;4807:23;4803:145;;2376:21827:160;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;4803:145:60;-1:-1:-1;;;4908:29:60;;2376:21827:160;;4908:29:60;2376:21827:160;-1:-1:-1;2376:21827:160;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4401:6:60;2376:21827:160;4392:4:60;4384:23;;;:120;;;;2376:21827:160;4367:251:60;;;2303:62:29;;:::i;:::-;2376:21827:160;;-1:-1:-1;;;5865:52:60;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;5865:52:60;;;;;;;2376:21827:160;-1:-1:-1;5861:437:60;;-1:-1:-1;;;6227:60:60;;2376:21827:160;;;;;1805:47:53;6227:60:60;5861:437;5959:40;;-1:-1:-1;;;;;;;;;;;5959:40:60;;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;;2407:36:53;2376:21827:160;;2407:36:53;2376:21827:160;;2458:15:53;:11;;4107:55:66;4065:25;;;;;;;;2376:21827:160;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;2376:21827:160:-;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;;6159:70;;2376:21827:160;;6159:70:53;-1:-1:-1;;;6199:19:53;;2376:21827:160;;6199:19:53;1744:119;-1:-1:-1;;;1805:47:53;;2376:21827:160;;;1805:47:53;;5955:120:60;-1:-1:-1;;;6026:34:60;;2376:21827:160;;;6026:34:60;;5865:52;;;;2376:21827:160;5865:52:60;;2376:21827:160;5865:52:60;;;;;;2376:21827:160;5865:52:60;;;:::i;:::-;;;2376:21827:160;;;;;5865:52:60;;;;;;;-1:-1:-1;5865:52:60;;4367:251;-1:-1:-1;;;4578:29:60;;2376:21827:160;4578:29:60;;4384:120;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;4462:42:60;;;-1:-1:-1;4384:120:60;;;2376:21827:160;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;9200:10;9172:20;-1:-1:-1;;;;;;;;;;;2376:21827:160;9172:20;9200:10;;;:::i;2376:21827::-;;;;;;;-1:-1:-1;;2376:21827:160;;;;11664:5;2376:21827;;:::i;:::-;23990:5;;;:::i;:::-;11638:17;-1:-1:-1;;;;;;;;;;;2376:21827:160;11638:17;11664:5;:::i;2376:21827::-;;;;;;;;;;;;;;;7032:33;-1:-1:-1;;;;;;;;;;;2376:21827:160;7032:33;2376:21827;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;8720:28;;;2376:21827;;;-1:-1:-1;;;8710:60:160;;8759:10;2376:21827;8710:60;;2376:21827;;;;;;8710:60;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;8710:60;;;;;;;;;;;2376:21827;8709:61;;8705:121;;8854:24;;;2376:21827;;;-1:-1:-1;;;8840:76:160;;8759:10;2376:21827;8840:76;;2376:21827;8910:4;8710:60;2376:21827;;;;;;;;8840:76;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;8840:76;;;;;;;;;;;2376:21827;8839:77;;8835:137;;2166:50:172;837:15:87;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;8759:10;8982:11;8759:10;8982:11;;2166:50:172;:::i;:::-;2165:51;2161:103;;2376:21827:160;;2161:103:172;-1:-1:-1;;;2239:14:172;;2376:21827:160;;2239:14:172;8835:137:160;-1:-1:-1;;;8939:22:160;;2376:21827;8939:22;;8840:76;;;;2376:21827;8840:76;2376:21827;8840:76;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2376:21827;;;;;;;;;8705:121;-1:-1:-1;;;8793:22:160;;2376:21827;8793:22;;8710:60;;;;2376:21827;8710:60;2376:21827;8710:60;;;;;;;:::i;:::-;;;;2376:21827;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;23990:5;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;;;;11943:8;;;;3505:23:172;23973:47:85;2376:21827:160;11943:8;23973:47:85;:::i;3505:23:172:-;-1:-1:-1;2376:21827:160;;;11982:17;;2376:21827;-1:-1:-1;11982:73:160;;;;2376:21827;11978:138;;;;21805:50:85;;;;:::i;11978:138:160:-;-1:-1:-1;;;12078:27:160;;2376:21827;12078:27;;11982:73;2376:21827;837:15:87;;;12022:33:160;837:15:87;;;819:34;837:15;819:34;:::i;:::-;2376:21827:160;;;;;12022:33;;:::i;:::-;2376:21827;;;12003:52;11982:73;;;;2376:21827;;;;;;;-1:-1:-1;;2376:21827:160;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2376:21827:160;15297:30;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;15283:10;:44;15279:101;;15395:9;2376:21827;;15390:726;15423:3;2376:21827;;;;;15406:15;;;;;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;8806:28:86;-1:-1:-1;;;;;15520:18:160;2376:21827;;;15520:18;:::i;:::-;2376:21827;-1:-1:-1;2376:21827:160;;;5197:14:86;;;2376:21827:160;;;;;;5197:26:86;;;5101:129;8806:28;15498:41:160;15494:110;;15623:9;15663:3;15638:16;;;;2376:21827;;;15638:16;:::i;:::-;15634:27;;;;;;;15722:19;15638:16;15722;15638;;;2376:21827;;;15722:16;:::i;:::-;:19;;:::i;:::-;8806:28:86;-1:-1:-1;;;;;15783:15:160;;;:::i;:::-;2376:21827;-1:-1:-1;2376:21827:160;;;5197:14:86;;;2376:21827:160;;;;;;5197:26:86;;;5101:129;8806:28;15764:35:160;15760:109;;2376:21827;;;;;;-1:-1:-1;;;;;15912:15:160;2376:21827;15912:15;:::i;:::-;2376:21827;;;;;;;;;;15905:33;;;;;;;;;;;;;15663:3;16012:12;2376:21827;16012:12;;2376:21827;;16026:18;2376:21827;;;16026:18;:::i;:::-;16064:12;;;2376:21827;;;;;;;;16064:12;;;;2376:21827;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;;;;;;;;;;;;;;;;;15956:135;;2376:21827;15956:135;;2376:21827;;;;;;;;;;;16046:16;2376:21827;;;;;;16064:12;;;2376:21827;;;;;;;;;;;;;;;;:::i;:::-;15956:135;;-1:-1:-1;;;;;2376:21827:160;15956:135;;;;;;;2376:21827;15956:135;;;15663:3;;2376:21827;15623:9;;15956:135;;;;;;;;;;;;;:::i;:::-;;;;;15905:33;;;;;;;;;;;;;;;:::i;:::-;;;;;15634:27;;;2376:21827;15634:27;;2376:21827;15395:9;;;15494:110;-1:-1:-1;;;15566:23:160;;2376:21827;15566:23;;15406:15;;2376:21827;;15279:101;-1:-1:-1;;;15350:19:160;;2376:21827;15350:19;;2376:21827;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;23990:5;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;2376:21827:160;19801:11;;;2376:21827;;;-1:-1:-1;;;19791:53:160;;-1:-1:-1;;;;;2376:21827:160;;;;19791:53;;2376:21827;;;;;;;;;;;;;;;19791:53;;;;;;;2376:21827;19791:53;;;2376:21827;19790:54;;19786:109;;2376:21827;;-1:-1:-1;;;19909:35:160;;2376:21827;;;;19909:35;;;;;;;;2376:21827;19909:35;;;2376:21827;19948:25;;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;19909:64;19905:128;;2376:21827;;-1:-1:-1;;;20047:27:160;;2376:21827;;;;20047:27;;;;;;;;2376:21827;20047:27;;;2376:21827;-1:-1:-1;20078:12:160;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;20047:43;20043:100;;2376:21827;;-1:-1:-1;;;20209:30:160;;2376:21827;;;;20209:30;;;;;;;;2376:21827;20209:30;;;2376:21827;;;;;;;;;;;20253:44;;;20249:107;;2376:21827;;-1:-1:-1;;;20404:39:160;;2376:21827;;;;20404:39;;;;;;;;2376:21827;20404:39;;;2376:21827;20403:40;;20399:103;;2376:21827;;-1:-1:-1;;;20554:26:160;;2376:21827;;;;20554:26;;;;;;;;2376:21827;20554:26;;;2376:21827;-1:-1:-1;2376:21827:160;20621:12;;;2376:21827;;;;-1:-1:-1;;;20595:39:160;;;;;2376:21827;20621:12;;-1:-1:-1;;;;;2376:21827:160;;;;;;;20595:39;;;;;;;2376:21827;20595:39;;;2376:21827;-1:-1:-1;20595:60:160;20591:158;;2376:21827;;;;;;;;;;;;;20778:32;;;;;;;;;;;;;2376:21827;-1:-1:-1;;;;;;2376:21827:160;17543:82;;2376:21827;;-1:-1:-1;;;20858:37:160;;2376:21827;;;;20858:37;;;;;;;;;;;;2376:21827;20857:38;;20853:99;;2376:21827;;-1:-1:-1;;;20980:24:160;;2376:21827;;;;20980:24;;;;;;;;;;;;2376:21827;-1:-1:-1;2376:21827:160;;-1:-1:-1;;;21018:23:160;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;21018:23;;;;;;;;;;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;21018:48;21014:111;;2376:21827;;-1:-1:-1;;;21139:36:160;;2376:21827;;;;21139:36;;;;;;;;;;;;2376:21827;21135:98;;;2376:21827;;-1:-1:-1;;;21265:36:160;;2376:21827;;;;21265:36;;;;;;;;;;;;2376:21827;;;;;;;;;;;21315:32;21311:92;;21417:39;2376:21827;21432:24;;;;;2376:21827;;21417:39;;:::i;:::-;2376:21827;21417:60;21413:119;;2376:21827;;-1:-1:-1;;;21546:46:160;;2376:21827;;;;21546:46;;;;;;;;;;;;2376:21827;21595:27;;;;2376:21827;-1:-1:-1;21542:139:160;;2376:21827;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;;;;;;;;;;;;;;;;;21710:58;;2376:21827;21710:58;;2376:21827;;;;;;;;;;;:::i;:::-;21710:58;;;;;;;;;;;;;;2376:21827;-1:-1:-1;;;;;;2376:21827:160;21782:22;;;-1:-1:-1;21874:24:160;;2376:21827;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;:::i;:::-;;;;;;;;;21820:93;;;;;2376:21827;;;;;;;;;;;;;;;;;21820:93;;;2376:21827;21820:93;;2376:21827;;;;;;;;;;;;;;;:::i;:::-;21820:93;;;;;;;;;;;;;21778:299;;;;2376:21827;;-1:-1:-1;;;22163:23:160;;;2376:21827;;;22163:23;;;;;;;;;;;;21778:299;-1:-1:-1;;;;;;2376:21827:160;22163:37;22159:94;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;;;;;;22369:41;;;2376:21827;;;;;;;;;;;22359:71;;;2376:21827;22359:71;;2376:21827;22359:71;;;;;;;;;;;21778:299;22358:72;;22354:135;;2376:21827;;-1:-1:-1;;;22503:39:160;;;2376:21827;;;22503:39;;;;;;;;;;;;21778:299;-1:-1:-1;;;;;;2376:21827:160;22503:49;22499:114;;2376:21827;;-1:-1:-1;;;22627:41:160;;;2376:21827;;;22627:41;;;;;;;;;-1:-1:-1;;;;;22627:41:160;21595:27;22627:41;;;;;21778:299;2376:21827;;;22627:46;22623:118;;11500:17;2166:50:172;837:15:87;;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;1740:2:172;2376:21827:160;;;;-1:-1:-1;;;;;;2376:21827:160;1667:76:172;;11500:17:160;2166:50:172;:::i;22623:118:160:-;-1:-1:-1;;;22696:34:160;;2376:21827;22696:34;;22627:41;;;;;;-1:-1:-1;22627:41:160;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;2376:21827;;;;;;;;;22499:114;-1:-1:-1;;;22575:27:160;;2376:21827;22575:27;;22503:39;;;;;;;;;;;;;;:::i;:::-;;;;;2376:21827;;;;;;;;;22354:135;-1:-1:-1;;;22453:25:160;;2376:21827;22453:25;;22359:71;;;;;;;;;;;;;;:::i;:::-;;;;22159:94;-1:-1:-1;;;22223:19:160;;2376:21827;22223:19;;22163:23;;;;;;;;;;;;;;:::i;:::-;;;;21820:93;;;;;:::i;:::-;2376:21827;;21820:93;;;;21778:299;21946:24;;;;2376:21827;-1:-1:-1;;;;;2376:21827:160;21934:36;;-1:-1:-1;21778:299:160;;-1:-1:-1;21930:147:160;-1:-1:-1;;;22048:18:160;;2376:21827;22048:18;;21710:58;;;;;;;;;;;;;;:::i;:::-;;;;21542:139;-1:-1:-1;;;21645:25:160;;2376:21827;21645:25;;21546:46;;;2376:21827;21546:46;;2376:21827;21546:46;;;;;;2376:21827;21546:46;;;:::i;:::-;;;2376:21827;;;;;21546:46;;;2376:21827;-1:-1:-1;2376:21827:160;;21546:46;;;-1:-1:-1;21546:46:160;;21413:119;-1:-1:-1;;;21500:21:160;;2376:21827;21500:21;;21311:92;-1:-1:-1;;;21370:22:160;;2376:21827;21370:22;;21265:36;;;;2376:21827;21265:36;2376:21827;21265:36;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;21135:98;-1:-1:-1;;;21198:24:160;;2376:21827;21198:24;;21139:36;;;;2376:21827;21139:36;2376:21827;21139:36;;;;;;;:::i;:::-;;;;21014:111;-1:-1:-1;;;21089:25:160;;2376:21827;21089:25;;21018:23;-1:-1:-1;;;;;21018:23:160;;;;;;2376:21827;21018:23;2376:21827;21018:23;;;;;;;:::i;:::-;;;;;;20980:24;;;;2376:21827;20980:24;2376:21827;20980:24;;;;;;;:::i;:::-;;;;20853:99;-1:-1:-1;;;20918:23:160;;2376:21827;20918:23;;20858:37;;;;2376:21827;20858:37;2376:21827;20858:37;;;;;;;:::i;:::-;;;;17543:82;-1:-1:-1;;;;;;17588:26:160;;2376:21827;17588:26;;20778:32;;;;2376:21827;20778:32;2376:21827;20778:32;;;;;;;:::i;:::-;;;;20591:158;20671:67;;;;;2376:21827;;-1:-1:-1;;;20671:67:160;;2376:21827;;20671:67;;2376:21827;;;-1:-1:-1;;2376:21827:160;;;;;20671:67;2376:21827;;20671:67;;;;;;;;;20591:158;;;;20671:67;;;;;2376:21827;20671:67;;:::i;:::-;2376:21827;;;20671:67;;;2376:21827;;;;;;;;;20595:39;;;2376:21827;20595:39;;2376:21827;20595:39;;;;;;2376:21827;20595:39;;;:::i;:::-;;;2376:21827;;;;;20595:39;;;;;;-1:-1:-1;20595:39:160;;20554:26;;;;2376:21827;20554:26;2376:21827;20554:26;;;;;;;:::i;:::-;;;;20399:103;20466:25;;;2376:21827;20466:25;2376:21827;;20466:25;20404:39;;;;2376:21827;20404:39;2376:21827;20404:39;;;;;;;:::i;:::-;;;;20249:107;20320:25;;;2376:21827;20320:25;2376:21827;;20320:25;20209:30;;;;2376:21827;20209:30;2376:21827;20209:30;;;;;;;:::i;:::-;;;;20043:100;20113:19;;;2376:21827;20113:19;2376:21827;;20113:19;20047:27;;;;2376:21827;20047:27;2376:21827;20047:27;;;;;;;:::i;:::-;;;;19905:128;19996:26;;;2376:21827;19996:26;2376:21827;;19996:26;19909:35;;;;2376:21827;19909:35;2376:21827;19909:35;;;;;;;:::i;:::-;;;;19786:109;19867:17;;;2376:21827;19867:17;2376:21827;;19867:17;19791:53;;;;2376:21827;19791:53;2376:21827;19791:53;;;;;;;:::i;:::-;;;;2376:21827;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2376:21827:160;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;-1:-1:-1;2376:21827:160;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;-1:-1:-1;;;;;2376:21827:160;;;;;;-1:-1:-1;;2376:21827:160;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;-1:-1:-1;;2376:21827:160;;;;:::o;:::-;3033:1;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;3033:1;2376:21827;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;12161:1642::-;;12278:17;;2376:21827;;12407:29;;;:::i;:::-;2376:21827;;;12451:39;;;;12447:92;;12294:1;20638:17;;2376:21827;;;;;12627:368;12647:5;;;;;;13062:26;;;;12701:1;20638:17;;;2376:21827;;;;;;;;13118:25;;;;:::i;:::-;2376:21827;13158:25;13153:188;13213:3;2376:21827;;13185:26;;;;;13236:9;;;;;:::i;:::-;2376:21827;13236:22;13232:66;;12701:1;2376:21827;;;;;;;12701:1;13311:19;13213:3;2376:21827;13158:25;;;13232:66;13278:5;;;;;;;;;13153:188;12701:1;13355:18;;13351:316;;13153:188;13677:87;;;;;12161:1642;:::o;13351:316::-;2376:21827;;13518:20;;;2376:21827;;;;;;;;;;13518:20;;;;;;;:::i;:::-;2376:21827;13508:31;;2376:21827;;;;;13624:27;2376:21827;;13624:27;;:::i;:::-;-1:-1:-1;;2376:21827:160;;;;;;;13571:85;;-1:-1:-1;;;;;2376:21827:160;13608:48;;;;:::i;:::-;2376:21827;;;13571:85;;:::i;:::-;2376:21827;13351:316;;;;;2376:21827;;;;12294:1;2376:21827;;;;;12294:1;2376:21827;13185:26;;;;;;;;;;;;12654:3;12678:13;;;;;;;;;12294:1;12673:312;12708:3;2376:21827;;;;;-1:-1:-1;;2376:21827:160;;;;;;12693:13;;;;;12735:9;;;;:::i;:::-;2376:21827;12701:1;2376:21827;;;;;;;;12747:13;;;12701:1;12747:13;;;;;;:::i;:::-;2376:21827;-1:-1:-1;12731:240:160;;12708:3;;;;2376:21827;12678:13;;;12731:240;12861:91;2376:21827;12814:13;12784:55;12814:13;;;;;:::i;:::-;2376:21827;12829:9;;;;;:::i;:::-;2376:21827;12784:55;;;;:::i;:::-;2376:21827;12784:55;:::i;:::-;2376:21827;;;;;;12909:22;;;;:::i;:::-;2376:21827;;;12861:91;2376:21827;;;;;12933:18;;;;:::i;:::-;2376:21827;;;12861:91;;:::i;:::-;2376:21827;12731:240;;;;;12693:13;;;;;12701:1;12693:13;;;;;;2376:21827;12632:13;;;12447:92;12506:22;;;;;;;:::o;2376:21827::-;;;;12294:1;2376:21827;;12294:1;2376:21827;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;;-1:-1:-1;2376:21827:160;;;;;;;;;;;:::i;:::-;:::o;14224:940::-;;22945:2;;;:::i;:::-;14487:11;-1:-1:-1;;;;;;;;;;;2376:21827:160;14487:11;2376:21827;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2376:21827:160;;;:::i;:::-;;;;;;;-1:-1:-1;14612:9:160;-1:-1:-1;14607:416:160;14623:24;;;;;;15033:125;;;;;;;;;14376:23;14224:940;:::o;14649:3::-;3215:12:172;;;;3268:14;14768:35:160;3215:12:172;;;;;:::i;:::-;3268:14;;;2376:21827:160;;;;;;1227:2:172;2376:21827:160;;;1249:2:172;2376:21827:160;941:319:172;;3268:14;14768:35:160;;;:::i;:::-;14767:36;14763:83;;14860:39;14935:47;14860:39;;;;;:::i;:::-;-1:-1:-1;;;;;2376:21827:160;;;;14935:47;:::i;:::-;14913:69;;;;:::i;:::-;2376:21827;15011:1;2376:21827;;;;;;;15011:1;14996:16;14649:3;14612:9;2376:21827;14612:9;;;;;14763:83;14823:8;;15011:1;14823:8;;;13809:372;;14031:43;2376:21827;3505:23:172;23973:47:85;13977:20:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;13977:20;2376:21827;;;;;;;23973:47:85;;:::i;14031:43:160:-;14030:44;14026:83;;14127:47;;;:::i;:::-;13809:372;:::o;14026:83::-;14090:8;;-1:-1:-1;14090:8:160;:::o;3405:215:29:-;-1:-1:-1;;;;;2376:21827:160;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;2376:21827:160;;-1:-1:-1;;;;;;2376:21827:160;;;;;;;-1:-1:-1;;;;;2376:21827:160;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;2376:21827:160;;3509:1:29;3534:31;24020:181:160;2376:21827;;-1:-1:-1;;;24085:61:160;;2979:4;24085:61;;;2376:21827;24135:10;2979:4;;;2376:21827;;2979:4;;2376:21827;;24085:61;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;24085:61;;;;;;;2979:4;24085:61;;;24020:181;24084:62;;24080:115;;24020:181::o;24080:115::-;24169:15;;;2979:4;24169:15;24085:61;2979:4;24169:15;24085:61;;;;2979:4;24085:61;2979:4;24085:61;;;;;;;:::i;:::-;;;;2376:21827;;;;;;;;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;2626:351:172:-;2376:21827:160;;2779:23:172;23973:47:85;-1:-1:-1;;;;;2376:21827:160;;23973:47:85;;:::i;2779:23:172:-;2376:21827:160;;;;;2817:16:172;;;:37;;;;;2626:351;2813:87;;;2910:60;837:15:87;-1:-1:-1;;;819:34:87;837:15;819:34;:::i;:::-;1716:2:172;2376:21827:160;;1667:52:172;1740:2;2376:21827:160;;;;-1:-1:-1;;;;;;2376:21827:160;1667:76:172;;2910:60;:::i;:::-;;2626:351::o;2813:87::-;2877:12;;;-1:-1:-1;2877:12:172;;-1:-1:-1;2877:12:172;2817:37;2376:21827:160;;;;2837:17:172;;2817:37;;;2276:344;2376:21827:160;;2428:23:172;23973:47:85;-1:-1:-1;;;;;2376:21827:160;;23973:47:85;;:::i;2428:23:172:-;2376:21827:160;;;;2466:16:172;;:37;;;;2276:344;2462:91;;;2563:50;837:15:87;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;1740:2:172;2376:21827:160;;;;-1:-1:-1;;;;;;2376:21827:160;1667:76:172;;2563:50;:::i;2462:91::-;2526:16;;;-1:-1:-1;2526:16:172;;-1:-1:-1;2526:16:172;2466:37;2376:21827:160;;;;2486:17:172;2466:37;;;2658:162:29;-1:-1:-1;;;;;;;;;;;2376:21827:160;-1:-1:-1;;;;;2376:21827:160;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;2376:21827:160;;-1:-1:-1;2763:40:29;23080:242:85;;;5853:18:86;5004:11:85;23080:242;5853:18:86;;:::i;:::-;2376:21827:160;;;;;;;;-1:-1:-1;2376:21827:160;5004:11:85;2376:21827:160;;;-1:-1:-1;2376:21827:160;;;;;;;;;23260:55:85;23080:242;:::o;21364:182::-;7898:23:86;21364:182:85;;2376:21827:160;;;;;;;;-1:-1:-1;2376:21827:160;3096:11:85;;;2376:21827:160;;;-1:-1:-1;2376:21827:160;;7898:23:86;:::i;22972:408:160:-;-1:-1:-1;;;;;;;;;;;2376:21827:160;837:15:87;2376:21827:160;819:34:87;837:15;819:34;:::i;:::-;2376:21827:160;;;;23076:22;;23072:80;;23284:16;2376:21827;;;;;;;;;;;;23183:42;;;:87;:42;;;:87;;23284:16;:::i;:::-;2376:21827;837:15:87;819:34;837:15;819:34;:::i;:::-;2376:21827:160;;;23284:36;;23280:94;;22972:408::o;23280:94::-;23121:20;;;-1:-1:-1;23343:20:160;;-1:-1:-1;23343:20:160;23183:87;;;;23284:16;:::i;17224:208::-;2376:21827;;17343:16;;;;17224:208;;17343:16;:37;;17224:208;17343:82;;;;17336:89;;17224:208;:::o;17343:82::-;2376:21827;;17385:17;;;-1:-1:-1;2376:21827:160;17385:39;;;;17343:82;;17224:208;:::o;17385:39::-;2376:21827;;-1:-1:-1;17406:18:160;;-1:-1:-1;17224:208:160;:::o;17343:37::-;2376:21827;;;-1:-1:-1;17363:17:160;;-1:-1:-1;17343:37:160;;;16662:556;-1:-1:-1;;;;;;;;;;;2376:21827:160;16841:8;;;2376:21827;;17125:25;17160:12;;;2376:21827;;;16662:556;2376:21827;;;;;;;16662:556;16837:21;;;;;;16662:556;;;;;;;;:::o;16860:3::-;3215:12:172;;;;;;;;3268:14;16991:53:160;3215:12:172;;;;;:::i;16991:53:160:-;16990:54;16986:101;;2376:21827;;-1:-1:-1;;;17125:25:160;;2376:21827;;;;;17125:25;;2376:21827;;-1:-1:-1;;;;;2376:21827:160;17125:25;;;;;;;2376:21827;17125:25;;;2376:21827;17125:25;;;16860:3;2376:21827;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;17110:91:160;;17125:25;17110:91;;2376:21827;;;-1:-1:-1;;;;;2376:21827:160;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17110:91;;-1:-1:-1;;;;;2376:21827:160;17110:91;;;;;;;2376:21827;17110:91;;;16860:3;17101:100;;;2376:21827;17101:100;;:::i;:::-;16860:3;16826:9;2376:21827;16826:9;;;;;;;;;17110:91;;;;;;;;;;;;;;;;:::i;:::-;;;2376:21827;;;;;;17110:91;;;;;;;17125:25;;;;;;;;;;;;;;:::i;:::-;;;;16986:101;17064:8;;2376:21827;17064:8;;;14296:213:83;2376:21827:160;14374:24:83;;14370:103;;2376:21827:160;;14296:213:83;:::o;14370:103::-;14421:41;;;;;14452:2;14421:41;2376:21827:160;;;;14421:41:83;;3330:164:85;;8192:26:86;3330:164:85;2376:21827:160;-1:-1:-1;2376:21827:160;3433:11:85;;;2376:21827:160;;-1:-1:-1;2376:21827:160;;;;8192:26:86;:::i;7082:141:30:-;2376:21827:160;-1:-1:-1;;;;;;;;;;;2376:21827:160;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;5626:274:85;;2376:21827:160;-1:-1:-1;2376:21827:160;5743:11:85;;;2376:21827:160;;;-1:-1:-1;2376:21827:160;;5773:10:85;;;;:33;;;;5626:274;5769:103;;;;5881:12;5626:274;:::o;5769:103::-;5829:32;;;-1:-1:-1;5829:32:85;;2376:21827:160;;-1:-1:-1;5829:32:85;5773:33;8806:28:86;;;5197:14;5101:129;-1:-1:-1;2376:21827:160;5197:14:86;2376:21827:160;;;-1:-1:-1;2376:21827:160;;5197:26:86;;5101:129;;8806:28;5787:19:85;5773:33;;;;2376:21827:160;;;;;;;;-1:-1:-1;2376:21827:160;;-1:-1:-1;2376:21827:160;;;-1:-1:-1;2376:21827:160;:::o;3071:1368:86:-;;3266:14;;;2376:21827:160;;;;;;;;;;;3302:13:86;;;3298:1135;3302:13;;;-1:-1:-1;;2376:21827:160;;;;;;;;;-1:-1:-1;;2376:21827:160;;;20638:17;2376:21827;;;;3777:23:86;;;3773:378;;3298:1135;2376:21827:160;;;;;;;;;-1:-1:-1;;2376:21827:160;;;;;;:::i;:::-;;;;20638:17;;2376:21827;;;;;;;;;;;;;;;;;;3266:14:86;4368:11;:::o;2376:21827:160:-;;;;;;;;;;;;3773:378:86;2376:21827:160;3840:22:86;3961:23;3840:22;;;:::i;:::-;2376:21827:160;;;;;;3961:23:86;;;;;:::i;:::-;2376:21827:160;;;;;;;;;;20638:17;;;2376:21827;;;;;;;;;;;;;;;;;;;3773:378:86;;;;;3298:1135;4410:12;;;;2376:21827:160;4410:12:86;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;2376:21827:160;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;2376:21827:160;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;2376:21827:160;;;;4933:24:66;2376:21827:160;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;;2497:406:86;-1:-1:-1;2376:21827:160;;;5197:14:86;;;2376:21827:160;;;;;;2581:21:86;;2376:21827:160;;;-1:-1:-1;;;2376:21827:160;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2776:14:86;2376:21827:160;;;;;;;2832:11:86;:::o","linkReferences":{},"immutableReferences":{"46093":[{"start":7273,"length":32},{"start":7480,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowedVaultImplVersion()":"c9b0b1e9","changeSlashExecutor(address)":"86c241a1","changeSlashRequester(address)":"6d1064eb","collateral()":"d8dfeb45","disableOperator()":"d99fcd66","disableVault(address)":"3ccce789","distributeOperatorRewards(address,uint256,bytes32)":"729e2f36","distributeStakerRewards(((address,uint256)[],uint256,address),uint48)":"7fbe95b5","enableOperator()":"3d15e74e","enableVault(address)":"936f4330","eraDuration()":"4455a38f","executeSlash((address,uint256)[])":"af962995","getActiveOperatorsStakeAt(uint48)":"b5e5ad12","getOperatorStakeAt(address,uint48)":"d99ddfc7","initialize((address,uint48,uint48,uint48,uint48,uint48,uint48,uint64,uint64,uint256,uint256,address,address,(address,address,address,address,address,address,address,address,address,address)))":"ab122753","makeElectionAt(uint48,uint256)":"6e5c7932","maxAdminFee()":"c639e2d6","maxResolverSetEpochsDelay()":"9e032311","minSlashExecutionDelay()":"373bba1f","minVaultEpochDuration()":"945cf2dd","minVetoDuration()":"461e7a8e","operatorGracePeriod()":"709d06ae","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registerOperator()":"2acde098","registerVault(address,address)":"05c4fdf9","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestSlash((address,uint48,(address,uint256)[])[])":"0a71094c","router()":"f887ea40","subnetwork()":"ceebb69a","symbioticContracts()":"bcf33934","transferOwnership(address)":"f2fde38b","unregisterOperator(address)":"96115bc2","unregisterVault(address)":"2633b70f","upgradeToAndCall(address,bytes)":"4f1ef286","vaultGracePeriod()":"79a8b245","vetoSlasherImplType()":"d55a5bdf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyAdded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BurnerHookNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"EnumerableMapNonexistentKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleSlasherType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleStakerRewardsVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleVaultVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStakerRewardsVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValidatorsMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSlashExecutionDelayMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVaultEpochDurationLessThanTwoEras\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoAndSlashDelayTooLongForVaultEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryStakerRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashExecutor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashRequester\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotOptIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayMustBeAtLeastThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayTooLong\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedDelegatorHook\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultWrongEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooShort\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowedVaultImplVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRole\",\"type\":\"address\"}],\"name\":\"changeSlashExecutor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRole\",\"type\":\"address\"}],\"name\":\"changeSlashRequester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"disableVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"distributeOperatorRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"_commitment\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"name\":\"distributeStakerRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"enableVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eraDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.SlashIdentifier[]\",\"name\":\"slashes\",\"type\":\"tuple[]\"}],\"name\":\"executeSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"}],\"name\":\"getActiveOperatorsStakeAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"activeOperators\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"stakes\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"}],\"name\":\"getOperatorStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"eraDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVaultEpochDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"operatorGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vaultGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVetoDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minSlashExecutionDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint64\",\"name\":\"allowedVaultImplVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"vetoSlasherImplType\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"maxResolverSetEpochsDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAdminFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"symbiotic\",\"type\":\"tuple\"}],\"internalType\":\"struct IMiddleware.InitParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"maxValidators\",\"type\":\"uint256\"}],\"name\":\"makeElectionAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxResolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minSlashExecutionDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVaultEpochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_rewards\",\"type\":\"address\"}],\"name\":\"registerVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.VaultSlashData[]\",\"name\":\"vaults\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IMiddleware.SlashData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"name\":\"requestSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subnetwork\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbioticContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"unregisterVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoSlasherImplType\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AlreadyAdded()\":[{\"details\":\"Thrown when an address is already added to the map.\"}],\"AlreadyEnabled()\":[{\"details\":\"Thrown when an address is already enabled.\"}],\"BurnerHookNotSupported()\":[{\"details\":\"Emitted when vault's slasher has a burner hook.\"}],\"DelegatorNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's delegator is not initialized.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnumerableMapNonexistentKey(bytes32)\":[{\"details\":\"Query for a nonexistent map key.\"}],\"EraDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `eraDuration` is equal to zero.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncompatibleSlasherType()\":[{\"details\":\"Emitted in `registerVault` when the vaults' slasher type is not supported.\"}],\"IncompatibleStakerRewardsVersion()\":[{\"details\":\"Emitted when rewards contract has incompatible version.\"}],\"IncompatibleVaultVersion()\":[{\"details\":\"Emitted when the vault has incompatible version.\"}],\"IncorrectTimestamp()\":[{\"details\":\"Emitted when requested timestamp is in the future.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidStakerRewardsVault()\":[{\"details\":\"Emitted in `registerVault` when the vault in rewards contract is not the same as in the function parameter.\"}],\"MaxValidatorsMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `maxValidators` is equal to zero.\"}],\"MinSlashExecutionDelayMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minSlashExecutionDelay` is equal to zero.\"}],\"MinVaultEpochDurationLessThanTwoEras()\":[{\"details\":\"Emitted when `minVaultEpochDuration` is less than `2 * eraDuration`.\"}],\"MinVetoAndSlashDelayTooLongForVaultEpoch()\":[{\"details\":\"Emitted when `minVetoDuration + minSlashExecutionDelay` is greater than `minVaultEpochDuration`.\"}],\"MinVetoDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minVetoDuration` is equal to zero.\"}],\"NonFactoryStakerRewards()\":[{\"details\":\"Emitted when rewards contract was not created by the StakerRewardsFactory.\"}],\"NonFactoryVault()\":[{\"details\":\"Emitted when trying to register the vault from unknown factory.\"}],\"NotEnabled()\":[{\"details\":\"Thrown when an address is not enabled.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"NotRegisteredOperator()\":[{\"details\":\"Emitted when `SlashData` contains the operator that is not registered in the Middleware.\"}],\"NotRegisteredVault()\":[{\"details\":\"Emitted when the vault is not registered in the Middleware.\"}],\"NotRouter()\":[{\"details\":\"Emitted when the `msg.sender` is not the Router contract.\"}],\"NotSlashExecutor()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash executor.\"}],\"NotSlashRequester()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash requester.\"}],\"NotVaultOwner()\":[{\"details\":\"Emitted when `msg.sender` is no the owner.\"}],\"OperatorDoesNotExist()\":[{\"details\":\"Emitted when the operator is not registered in the OperatorRegistry.\"}],\"OperatorDoesNotOptIn()\":[{\"details\":\"Emitted when the operator is not opted-in to the Middleware.\"}],\"OperatorGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `operatorGracePeriod` is less than `minVaultEpochDuration`.\"}],\"OperatorGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the operator earlier then `operatorGracePeriod`.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"ResolverMismatch()\":[{\"details\":\"Emitted when slasher's veto resolver is not the same as in the Middleware.\"}],\"ResolverSetDelayMustBeAtLeastThree()\":[{\"details\":\"Emitted when `maxResolverSetEpochsDelay` is less than `3`.\"}],\"ResolverSetDelayTooLong()\":[{\"details\":\"Emitted when the slasher's delay to update the resolver is greater than the one in the Middleware.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SlasherNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's slasher is not initialized.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"UnknownCollateral()\":[{\"details\":\"Emitted when trying to distribute rewards with collateral that is not equal to the one in the Middleware.\"}],\"UnsupportedBurner()\":[{\"details\":\"Emitted when vault's burner is equal to `address(0)`.\"}],\"UnsupportedDelegatorHook()\":[{\"details\":\"Emitted when the delegator's hook is not equal to `address(0)`.\"}],\"VaultGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `vaultGracePeriod` is less than `minVaultEpochDuration`.\"}],\"VaultGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the vault earlier then `vaultGracePeriod`.\"}],\"VaultWrongEpochDuration()\":[{\"details\":\"Emitted when trying to register the vault with `epochDuration` less than `minVaultEpochDuration`.\"}],\"VetoDurationTooLong()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` + `minShashExecutionDelay` is greater than vaultEpochDuration.\"}],\"VetoDurationTooShort()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` less than `minVetoDuration`.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"getOperatorStakeAt(address,uint48)\":{\"returns\":{\"stake\":\"The total stake of the operator in all vaults that was active at the given timestamp.\"}},\"makeElectionAt(uint48,uint256)\":{\"details\":\"This function returns the list of validators that are will be responsible for block production in the next era.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerOperator()\":{\"details\":\"Operator must be registered in operator registry.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"IncompatibleStakerRewardsVersion()\":[{\"notice\":\"The version of the rewards contract is a index of the whitelisted versions in StakerRewardsFactory.\"}],\"IncompatibleVaultVersion()\":[{\"notice\":\"The version of the vault is a index of the whitelisted versions in VaultFactory.\"}]},\"kind\":\"user\",\"methods\":{\"disableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"disableVault(address)\":{\"notice\":\"This function can be called only by the vault owner.\"},\"distributeOperatorRewards(address,uint256,bytes32)\":{\"notice\":\"The function can be called only by the Router contract.\"},\"enableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"enableVault(address)\":{\"notice\":\"This function can be called only by the vault owner.\"},\"registerOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"unregisterOperator(address)\":{\"notice\":\"This function can be called only be operator themselves.\"},\"unregisterVault(address)\":{\"notice\":\"This function can be called only by the vault owner.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Middleware.sol\":\"Middleware\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol\":{\"keccak256\":\"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56\",\"dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32\"]},\"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol\":{\"keccak256\":\"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f\",\"dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy\"]},\"lib/symbiotic-core/src/interfaces/common/IEntity.sol\":{\"keccak256\":\"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b\",\"dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv\"]},\"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol\":{\"keccak256\":\"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c\",\"dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds\"]},\"lib/symbiotic-core/src/interfaces/common/IRegistry.sol\":{\"keccak256\":\"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014\",\"dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK\"]},\"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol\":{\"keccak256\":\"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2\",\"dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8\"]},\"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol\":{\"keccak256\":\"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c\",\"dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA\"]},\"lib/symbiotic-core/src/interfaces/service/IOptInService.sol\":{\"keccak256\":\"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337\",\"dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24\"]},\"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol\":{\"keccak256\":\"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf\",\"dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx\"]},\"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol\":{\"keccak256\":\"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508\",\"dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg\"]},\"lib/symbiotic-core/src/interfaces/vault/IVault.sol\":{\"keccak256\":\"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9\",\"dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R\"]},\"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol\":{\"keccak256\":\"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e\",\"dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6\"]},\"lib/symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol\":{\"keccak256\":\"0xb0ba8270d29fa1af4a8024f20072d13bb2eefd3aa10a77dc4650829e738ddb28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6db9eca4620c65a96bc68d3b32d1b92f90558a354be72ac525e689162fda4b06\",\"dweb:/ipfs/QmV5TQpb7b9RMUrMNPw9n1rJX1TRyb573tUoG7rye2W1m4\"]},\"lib/symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol\":{\"keccak256\":\"0xc7ee0e2ffe9f592a6a295d216ab221cbacfcbeccbb06be6098e2b1e46863f6fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6c09ad742a4836d07a4ec910f582a58991503f0244290c4a6c23fe641749e1a\",\"dweb:/ipfs/QmVR4k1D3ZNQVdJ1vkWpeZ1MAotsH4WTwCuu6Z2X1UJEb7\"]},\"lib/symbiotic-rewards/src/interfaces/stakerRewards/IStakerRewards.sol\":{\"keccak256\":\"0x7516733d48956a5d54243c843b977b402a3b53998b81dc0e9ec89afeabc2a60e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53571bf204dc1ccedc4a5f8154d4ad014c20e66f6196b062e260e14a7d0b6f4a\",\"dweb:/ipfs/QmT6JRgPjvQ5DEiFUMyrGxv6qxU1ZvyKMstdigtEKVpF41\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/Middleware.sol\":{\"keccak256\":\"0x85c1b40fd1b55a7cf9e3f9c4f3d7979313dd41c783e5ec1817ce6c91ce7081d8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://dcc4ff6fec91d20d7d8979608df6af8d35cbdbb3280d1666501ed307653872e1\",\"dweb:/ipfs/QmU2x4wMMj2abBL5rUyDzNevw8tDnYDZqCNu89oZ8eHE55\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48\",\"dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AlreadyAdded"},{"inputs":[],"type":"error","name":"AlreadyEnabled"},{"inputs":[],"type":"error","name":"BurnerHookNotSupported"},{"inputs":[],"type":"error","name":"DelegatorNotInitialized"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[{"internalType":"bytes32","name":"key","type":"bytes32"}],"type":"error","name":"EnumerableMapNonexistentKey"},{"inputs":[],"type":"error","name":"EraDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"IncompatibleSlasherType"},{"inputs":[],"type":"error","name":"IncompatibleStakerRewardsVersion"},{"inputs":[],"type":"error","name":"IncompatibleVaultVersion"},{"inputs":[],"type":"error","name":"IncorrectTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidStakerRewardsVault"},{"inputs":[],"type":"error","name":"MaxValidatorsMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinVaultEpochDurationLessThanTwoEras"},{"inputs":[],"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch"},{"inputs":[],"type":"error","name":"MinVetoDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"NonFactoryStakerRewards"},{"inputs":[],"type":"error","name":"NonFactoryVault"},{"inputs":[],"type":"error","name":"NotEnabled"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotRegisteredOperator"},{"inputs":[],"type":"error","name":"NotRegisteredVault"},{"inputs":[],"type":"error","name":"NotRouter"},{"inputs":[],"type":"error","name":"NotSlashExecutor"},{"inputs":[],"type":"error","name":"NotSlashRequester"},{"inputs":[],"type":"error","name":"NotVaultOwner"},{"inputs":[],"type":"error","name":"OperatorDoesNotExist"},{"inputs":[],"type":"error","name":"OperatorDoesNotOptIn"},{"inputs":[],"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"OperatorGracePeriodNotPassed"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"ResolverMismatch"},{"inputs":[],"type":"error","name":"ResolverSetDelayMustBeAtLeastThree"},{"inputs":[],"type":"error","name":"ResolverSetDelayTooLong"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SlasherNotInitialized"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownCollateral"},{"inputs":[],"type":"error","name":"UnsupportedBurner"},{"inputs":[],"type":"error","name":"UnsupportedDelegatorHook"},{"inputs":[],"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"VaultGracePeriodNotPassed"},{"inputs":[],"type":"error","name":"VaultWrongEpochDuration"},{"inputs":[],"type":"error","name":"VetoDurationTooLong"},{"inputs":[],"type":"error","name":"VetoDurationTooShort"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allowedVaultImplVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"newRole","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeSlashExecutor"},{"inputs":[{"internalType":"address","name":"newRole","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"changeSlashRequester"},{"inputs":[],"stateMutability":"view","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"disableOperator"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableVault"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"distributeOperatorRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct Gear.StakerRewardsCommitment","name":"_commitment","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"timestamp","type":"uint48"}],"stateMutability":"nonpayable","type":"function","name":"distributeStakerRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"enableOperator"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"enableVault"},{"inputs":[],"stateMutability":"view","type":"function","name":"eraDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"struct IMiddleware.SlashIdentifier[]","name":"slashes","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"executeSlash"},{"inputs":[{"internalType":"uint48","name":"ts","type":"uint48"}],"stateMutability":"view","type":"function","name":"getActiveOperatorsStakeAt","outputs":[{"internalType":"address[]","name":"activeOperators","type":"address[]"},{"internalType":"uint256[]","name":"stakes","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"}],"stateMutability":"view","type":"function","name":"getOperatorStakeAt","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"struct IMiddleware.InitParams","name":"_params","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint48","name":"eraDuration","type":"uint48"},{"internalType":"uint48","name":"minVaultEpochDuration","type":"uint48"},{"internalType":"uint48","name":"operatorGracePeriod","type":"uint48"},{"internalType":"uint48","name":"vaultGracePeriod","type":"uint48"},{"internalType":"uint48","name":"minVetoDuration","type":"uint48"},{"internalType":"uint48","name":"minSlashExecutionDelay","type":"uint48"},{"internalType":"uint64","name":"allowedVaultImplVersion","type":"uint64"},{"internalType":"uint64","name":"vetoSlasherImplType","type":"uint64"},{"internalType":"uint256","name":"maxResolverSetEpochsDelay","type":"uint256"},{"internalType":"uint256","name":"maxAdminFee","type":"uint256"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"router","type":"address"},{"internalType":"struct Gear.SymbioticContracts","name":"symbiotic","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"uint256","name":"maxValidators","type":"uint256"}],"stateMutability":"view","type":"function","name":"makeElectionAt","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maxResolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minSlashExecutionDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minVaultEpochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minVetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_rewards","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerVault"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"struct IMiddleware.SlashData[]","name":"data","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"struct IMiddleware.VaultSlashData[]","name":"vaults","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]}],"stateMutability":"nonpayable","type":"function","name":"requestSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"subnetwork","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbioticContracts","outputs":[{"internalType":"struct Gear.SymbioticContracts","name":"","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"unregisterVault"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"vetoSlasherImplType","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"getOperatorStakeAt(address,uint48)":{"returns":{"stake":"The total stake of the operator in all vaults that was active at the given timestamp."}},"makeElectionAt(uint48,uint256)":{"details":"This function returns the list of validators that are will be responsible for block production in the next era."},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"registerOperator()":{"details":"Operator must be registered in operator registry."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":""},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"disableOperator()":{"notice":"This function can be called only be operator themselves."},"disableVault(address)":{"notice":"This function can be called only by the vault owner."},"distributeOperatorRewards(address,uint256,bytes32)":{"notice":"The function can be called only by the Router contract."},"enableOperator()":{"notice":"This function can be called only be operator themselves."},"enableVault(address)":{"notice":"This function can be called only by the vault owner."},"registerOperator()":{"notice":"This function can be called only be operator themselves."},"unregisterOperator(address)":{"notice":"This function can be called only be operator themselves."},"unregisterVault(address)":{"notice":"This function can be called only by the vault owner."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Middleware.sol":"Middleware"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c","urls":["bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d","dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol":{"keccak256":"0xf5ef5506fd66082b3c2e7f3df37529f5a8efad32ac62e7c8914bd63219190bfe","urls":["bzz-raw://ba031a54ee0d0e9a270c2b9e18437f5668cfeb659cfd5fe0677459d7fcac2a56","dweb:/ipfs/QmReP3H7qQ78tAfgLnJKsNEQNCQfF1X1Get38Ffd4kzq32"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol":{"keccak256":"0x60dcd8ad04980a471f42b6ed57f6b96fbc4091db97b6314cb198914975327938","urls":["bzz-raw://fc207782fcb74a144ecb0c7dc1f427ee6de38710e0966c3cd43040493e11379f","dweb:/ipfs/QmSa8LVejhmRr5T3pWYvUTrDr4fCfohfqyJfRyW2fV4zYy"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IEntity.sol":{"keccak256":"0x8ef4b63d6da63489778ccd5f8d13ebdd527dd4b62730b2c616df5af7474d2d21","urls":["bzz-raw://5a8d69576a9219d85c50816a18ad53a4d53cfcb27ed38b8cccc808dc2734b71b","dweb:/ipfs/QmYVN3P4Q4REvBWJ97TbAcaxm3uyB2anV6NSGa6ZtSwcEv"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol":{"keccak256":"0x8f5f2809f3afbe8ebfbb365dd7b57b4dd3b6f9943a6187eaf648d45895b8e3c4","urls":["bzz-raw://0ffe640537d539e7a4fde70d30d3e4c57f4ba9c2c25c450cea713aae38e8fd5c","dweb:/ipfs/QmSUTGzvdcn1R1KB7tLThMRtESsfPbeXDhhhKWGtntzBds"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/common/IRegistry.sol":{"keccak256":"0x474c981518bb6ac974ba2a1274c49fd918d3b5acf1f3710e59786c5e3c8fc8bb","urls":["bzz-raw://db439e8880386dd308f8c67e612e9b15067fdffb29d6d0fd89c4edf820f30014","dweb:/ipfs/QmQJuzgU17EZyPMoJNwknPkveK1Nwx1ByhZCBJzgRgcpvK"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol":{"keccak256":"0x96bb312f032e17accce3f8f80936d99468029d6b37c9ca74acdb4b026a0148ee","urls":["bzz-raw://2a66dcb5b7d1a6ef6a363431ea98ebd78bc4fdd3d7a134d9b542dc66e7d025c2","dweb:/ipfs/QmRhTPLd2ZAyRHmJUFUcWKs9b3if49QY17LYZuRqWmghw8"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol":{"keccak256":"0x347afc7fcf1fbcdb96d66162070ef6c78aed27b3af2c1d5dfb4e511840631783","urls":["bzz-raw://2d90b8ceb495159e8e4e95d76447719dd166443f67dfabdd942846162071595c","dweb:/ipfs/QmVVuiAWYx92T6vBvNMKZfTvraCf1fa16BsUKkdNs3hdHA"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/service/IOptInService.sol":{"keccak256":"0x76fb5460a6d87a5705433d4fbeff7253cd75b8bbd0c888b2088f16e86ace146a","urls":["bzz-raw://990322019b3d11465f7024bae77ccbf7e2fe5d6fa3c754584778f37d04fa1337","dweb:/ipfs/QmaSNHzcqxTkUCG9a4nqVfLECHLdjdrwAnDi3yDC7tDL24"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IBaseSlasher.sol":{"keccak256":"0x7c82528b445659c313ab77335c407b0b6efe5e79027187bb287f7bc74202b404","urls":["bzz-raw://0274c90aa5df1aa6bb470a6aab53992fb14fd7e5472c9430416505b29647d9cf","dweb:/ipfs/QmckbmJLDetPemVzCnnGcKYWAZV2BRFXGDsjiaec8jkHxx"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol":{"keccak256":"0xdf7edd04a4f36e9aec3a15241dcb6b6315b2e64927b12710c2c410d571fc55e9","urls":["bzz-raw://c4be6ac339c2ebf230fed65363f036784224095d0cd0f3f2d01d64d6e0da9508","dweb:/ipfs/QmRSMbpfaHExqrzUA8vYZMYZWh6eQW1KX9JKJSLdgronfg"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVault.sol":{"keccak256":"0xffee01d383cd4e1a5530c614bf4360c1ef070c288abec9da1eb531b51bc07235","urls":["bzz-raw://04f0046cac285d8ec44ebbb1f79dc94fab4495767190cad8364fbc1fafaadfb9","dweb:/ipfs/QmUawAunwzXfCyShWfhKeThAgKtqe51hmrxvrXvM772M2R"],"license":"MIT"},"lib/symbiotic-core/src/interfaces/vault/IVaultStorage.sol":{"keccak256":"0x592626f13754194f83047135de19229c49390bd59e34659b1bb38be71d973a22","urls":["bzz-raw://06a6a9dfddd05e580b32bebe2cff4f63ba26a653180676d58225dd30d9c89d3e","dweb:/ipfs/QmdgzBeY6Sxo8mGtyBxtv1tM1c2kU6J6zjeRd7vuXm4DU6"],"license":"MIT"},"lib/symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol":{"keccak256":"0xb0ba8270d29fa1af4a8024f20072d13bb2eefd3aa10a77dc4650829e738ddb28","urls":["bzz-raw://6db9eca4620c65a96bc68d3b32d1b92f90558a354be72ac525e689162fda4b06","dweb:/ipfs/QmV5TQpb7b9RMUrMNPw9n1rJX1TRyb573tUoG7rye2W1m4"],"license":"MIT"},"lib/symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol":{"keccak256":"0xc7ee0e2ffe9f592a6a295d216ab221cbacfcbeccbb06be6098e2b1e46863f6fc","urls":["bzz-raw://e6c09ad742a4836d07a4ec910f582a58991503f0244290c4a6c23fe641749e1a","dweb:/ipfs/QmVR4k1D3ZNQVdJ1vkWpeZ1MAotsH4WTwCuu6Z2X1UJEb7"],"license":"MIT"},"lib/symbiotic-rewards/src/interfaces/stakerRewards/IStakerRewards.sol":{"keccak256":"0x7516733d48956a5d54243c843b977b402a3b53998b81dc0e9ec89afeabc2a60e","urls":["bzz-raw://53571bf204dc1ccedc4a5f8154d4ad014c20e66f6196b062e260e14a7d0b6f4a","dweb:/ipfs/QmT6JRgPjvQ5DEiFUMyrGxv6qxU1ZvyKMstdigtEKVpF41"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/Middleware.sol":{"keccak256":"0x85c1b40fd1b55a7cf9e3f9c4f3d7979313dd41c783e5ec1817ce6c91ce7081d8","urls":["bzz-raw://dcc4ff6fec91d20d7d8979608df6af8d35cbdbb3280d1666501ed307653872e1","dweb:/ipfs/QmU2x4wMMj2abBL5rUyDzNevw8tDnYDZqCNu89oZ8eHE55"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e","urls":["bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48","dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Middleware.sol","id":77274,"exportedSymbols":{"EnumerableMap":[58543],"Gear":[88588],"IAccessControl":[44539],"IBaseDelegator":[65506],"IDefaultOperatorRewards":[71798],"IDefaultStakerRewards":[71992],"IEntity":[65100],"IMiddleware":[74131],"IMigratableEntity":[65208],"INetworkMiddlewareService":[65994],"INetworkRegistry":[64998],"IOptInService":[66120],"IRegistry":[65332],"IVault":[66856],"IVetoSlasher":[66518],"MapWithTimeData":[88876],"Middleware":[77273],"OwnableUpgradeable":[42322],"ReentrancyGuardTransientUpgradeable":[43943],"SlotDerivation":[48965],"StorageSlot":[49089],"Subnetwork":[64978],"Time":[60343],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:24130:160","nodes":[{"id":75003,"nodeType":"PragmaDirective","src":"74:24:160","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":75005,"nodeType":"ImportDirective","src":"100:101:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":75004,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75007,"nodeType":"ImportDirective","src":"202:140:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":75006,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"215:35:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75009,"nodeType":"ImportDirective","src":"343:81:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":44540,"symbolAliases":[{"foreign":{"id":75008,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44539,"src":"351:14:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75011,"nodeType":"ImportDirective","src":"425:88:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":75010,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"433:15:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75013,"nodeType":"ImportDirective","src":"514:80:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":75012,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"522:14:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75015,"nodeType":"ImportDirective","src":"595:74:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":75014,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"603:11:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75017,"nodeType":"ImportDirective","src":"670:86:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol","file":"@openzeppelin/contracts/utils/structs/EnumerableMap.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":58544,"symbolAliases":[{"foreign":{"id":75016,"name":"EnumerableMap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58543,"src":"678:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75019,"nodeType":"ImportDirective","src":"757:66:160","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/types/Time.sol","file":"@openzeppelin/contracts/utils/types/Time.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":60344,"symbolAliases":[{"foreign":{"id":75018,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"765:4:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75021,"nodeType":"ImportDirective","src":"824:48:160","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":75020,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"832:11:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75023,"nodeType":"ImportDirective","src":"873:44:160","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":88589,"symbolAliases":[{"foreign":{"id":75022,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"881:4:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75025,"nodeType":"ImportDirective","src":"918:66:160","nodes":[],"absolutePath":"src/libraries/MapWithTimeData.sol","file":"src/libraries/MapWithTimeData.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":88877,"symbolAliases":[{"foreign":{"id":75024,"name":"MapWithTimeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88876,"src":"926:15:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75027,"nodeType":"ImportDirective","src":"985:81:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/contracts/libraries/Subnetwork.sol","file":"symbiotic-core/src/contracts/libraries/Subnetwork.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":64979,"symbolAliases":[{"foreign":{"id":75026,"name":"Subnetwork","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64978,"src":"993:10:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75029,"nodeType":"ImportDirective","src":"1067:84:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/INetworkRegistry.sol","file":"symbiotic-core/src/interfaces/INetworkRegistry.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":64999,"symbolAliases":[{"foreign":{"id":75028,"name":"INetworkRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64998,"src":"1075:16:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75031,"nodeType":"ImportDirective","src":"1152:73:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/common/IEntity.sol","file":"symbiotic-core/src/interfaces/common/IEntity.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65101,"symbolAliases":[{"foreign":{"id":75030,"name":"IEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65100,"src":"1160:7:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75033,"nodeType":"ImportDirective","src":"1226:93:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/common/IMigratableEntity.sol","file":"symbiotic-core/src/interfaces/common/IMigratableEntity.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65209,"symbolAliases":[{"foreign":{"id":75032,"name":"IMigratableEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65208,"src":"1234:17:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75035,"nodeType":"ImportDirective","src":"1320:77:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/common/IRegistry.sol","file":"symbiotic-core/src/interfaces/common/IRegistry.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65333,"symbolAliases":[{"foreign":{"id":75034,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"1328:9:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75037,"nodeType":"ImportDirective","src":"1398:90:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol","file":"symbiotic-core/src/interfaces/delegator/IBaseDelegator.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65507,"symbolAliases":[{"foreign":{"id":75036,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"1406:14:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75039,"nodeType":"ImportDirective","src":"1489:110:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol","file":"symbiotic-core/src/interfaces/service/INetworkMiddlewareService.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":65995,"symbolAliases":[{"foreign":{"id":75038,"name":"INetworkMiddlewareService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65994,"src":"1497:25:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75041,"nodeType":"ImportDirective","src":"1600:86:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/service/IOptInService.sol","file":"symbiotic-core/src/interfaces/service/IOptInService.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":66121,"symbolAliases":[{"foreign":{"id":75040,"name":"IOptInService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66120,"src":"1608:13:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75043,"nodeType":"ImportDirective","src":"1687:84:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol","file":"symbiotic-core/src/interfaces/slasher/IVetoSlasher.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":66519,"symbolAliases":[{"foreign":{"id":75042,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"1695:12:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75045,"nodeType":"ImportDirective","src":"1772:70:160","nodes":[],"absolutePath":"lib/symbiotic-core/src/interfaces/vault/IVault.sol","file":"symbiotic-core/src/interfaces/vault/IVault.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":66857,"symbolAliases":[{"foreign":{"id":75044,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"1780:6:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75047,"nodeType":"ImportDirective","src":"1843:130:160","nodes":[],"absolutePath":"lib/symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol","file":"symbiotic-rewards/src/interfaces/defaultOperatorRewards/IDefaultOperatorRewards.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":71799,"symbolAliases":[{"foreign":{"id":75046,"name":"IDefaultOperatorRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71798,"src":"1856:23:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":75049,"nodeType":"ImportDirective","src":"1974:118:160","nodes":[],"absolutePath":"lib/symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol","file":"symbiotic-rewards/src/interfaces/defaultStakerRewards/IDefaultStakerRewards.sol","nameLocation":"-1:-1:-1","scope":77274,"sourceUnit":71993,"symbolAliases":[{"foreign":{"id":75048,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"1982:21:160","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77273,"nodeType":"ContractDefinition","src":"2376:21827:160","nodes":[{"id":75061,"nodeType":"UsingForDirective","src":"2491:55:160","nodes":[],"global":false,"libraryName":{"id":75058,"name":"EnumerableMap","nameLocations":["2497:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":58543,"src":"2497:13:160"},"typeName":{"id":75060,"nodeType":"UserDefinedTypeName","pathNode":{"id":75059,"name":"EnumerableMap.AddressToUintMap","nameLocations":["2515:13:160","2529:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":56867,"src":"2515:30:160"},"referencedDeclaration":56867,"src":"2515:30:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage_ptr","typeString":"struct EnumerableMap.AddressToUintMap"}}},{"id":75065,"nodeType":"UsingForDirective","src":"2551:57:160","nodes":[],"global":false,"libraryName":{"id":75062,"name":"MapWithTimeData","nameLocations":["2557:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":88876,"src":"2557:15:160"},"typeName":{"id":75064,"nodeType":"UserDefinedTypeName","pathNode":{"id":75063,"name":"EnumerableMap.AddressToUintMap","nameLocations":["2577:13:160","2591:16:160"],"nodeType":"IdentifierPath","referencedDeclaration":56867,"src":"2577:30:160"},"referencedDeclaration":56867,"src":"2577:30:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage_ptr","typeString":"struct EnumerableMap.AddressToUintMap"}}},{"id":75069,"nodeType":"UsingForDirective","src":"2614:58:160","nodes":[],"global":false,"libraryName":{"id":75066,"name":"EnumerableMap","nameLocations":["2620:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":58543,"src":"2620:13:160"},"typeName":{"id":75068,"nodeType":"UserDefinedTypeName","pathNode":{"id":75067,"name":"EnumerableMap.AddressToAddressMap","nameLocations":["2638:13:160","2652:19:160"],"nodeType":"IdentifierPath","referencedDeclaration":57162,"src":"2638:33:160"},"referencedDeclaration":57162,"src":"2638:33:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToAddressMap_$57162_storage_ptr","typeString":"struct EnumerableMap.AddressToAddressMap"}}},{"id":75072,"nodeType":"UsingForDirective","src":"2678:29:160","nodes":[],"global":false,"libraryName":{"id":75070,"name":"Subnetwork","nameLocations":["2684:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":64978,"src":"2684:10:160"},"typeName":{"id":75071,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":75075,"nodeType":"VariableDeclaration","src":"2820:106:160","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"2845:12:160","scope":77273,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75073,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2820:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830623863353661663663633961643430316164323235626665393664663737663330343962613137656164616331636239356565383964663165363964313030","id":75074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2860:66:160","typeDescriptions":{"typeIdentifier":"t_rational_5223398203118087324979291777783578297303922957705888423515209926851254931712_by_1","typeString":"int_const 5223...(68 digits omitted)...1712"},"value":"0x0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100"},"visibility":"private"},{"id":75078,"nodeType":"VariableDeclaration","src":"2933:50:160","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2958:18:160","scope":77273,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75076,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2933:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":75077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2979:4:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"private"},{"id":75081,"nodeType":"VariableDeclaration","src":"2989:45:160","nodes":[],"constant":true,"mutability":"constant","name":"NETWORK_IDENTIFIER","nameLocation":"3012:18:160","scope":77273,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":75079,"name":"uint8","nodeType":"ElementaryTypeName","src":"2989:5:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30","id":75080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3033:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"id":75089,"nodeType":"FunctionDefinition","src":"3109:53:160","nodes":[],"body":{"id":75088,"nodeType":"Block","src":"3123:39:160","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75085,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"3133:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3133:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75087,"nodeType":"ExpressionStatement","src":"3133:22:160"}]},"documentation":{"id":75082,"nodeType":"StructuredDocumentation","src":"3041:63:160","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":75083,"nodeType":"ParameterList","parameters":[],"src":"3120:2:160"},"returnParameters":{"id":75084,"nodeType":"ParameterList","parameters":[],"src":"3123:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75243,"nodeType":"FunctionDefinition","src":"3168:1277:160","nodes":[],"body":{"id":75242,"nodeType":"Block","src":"3236:1209:160","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75098,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3261:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3269:5:160","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":73862,"src":"3261:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75097,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"3246:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3246:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75101,"nodeType":"ExpressionStatement","src":"3246:29:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75102,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"3285:31:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":75103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75104,"nodeType":"ExpressionStatement","src":"3285:33:160"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655631","id":75106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3345:33:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""},"value":"middleware.storage.MiddlewareV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""}],"id":75105,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77242,"src":"3329:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3329:50:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75108,"nodeType":"ExpressionStatement","src":"3329:50:160"},{"assignments":[75111],"declarations":[{"constant":false,"id":75111,"mutability":"mutable","name":"$","nameLocation":"3405:1:160","nodeType":"VariableDeclaration","scope":75242,"src":"3389:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75110,"nodeType":"UserDefinedTypeName","pathNode":{"id":75109,"name":"Storage","nameLocations":["3389:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"3389:7:160"},"referencedDeclaration":73928,"src":"3389:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75114,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75112,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"3409:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3409:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3389:30:160"},{"expression":{"id":75120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75115,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3430:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3432:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"3430:13:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75118,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3446:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3454:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73864,"src":"3446:19:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3430:35:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75121,"nodeType":"ExpressionStatement","src":"3430:35:160"},{"expression":{"id":75127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75122,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3475:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75124,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3477:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"3475:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75125,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3501:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3509:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73866,"src":"3501:29:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3475:55:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75128,"nodeType":"ExpressionStatement","src":"3475:55:160"},{"expression":{"id":75134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75129,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3540:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3542:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"3540:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75132,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3564:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3572:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73868,"src":"3564:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3540:51:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75135,"nodeType":"ExpressionStatement","src":"3540:51:160"},{"expression":{"id":75141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75136,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3601:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3603:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"3601:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75139,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3622:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3630:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73870,"src":"3622:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3601:45:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75142,"nodeType":"ExpressionStatement","src":"3601:45:160"},{"expression":{"id":75148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75143,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3656:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3658:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"3656:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75146,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3676:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3684:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73872,"src":"3676:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3656:43:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75149,"nodeType":"ExpressionStatement","src":"3656:43:160"},{"expression":{"id":75155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75150,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3709:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3711:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"3709:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75153,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3736:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3744:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73874,"src":"3736:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3709:57:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75156,"nodeType":"ExpressionStatement","src":"3709:57:160"},{"expression":{"id":75162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75157,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3776:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3778:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"3776:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75160,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3806:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3814:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73880,"src":"3806:33:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3776:63:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75163,"nodeType":"ExpressionStatement","src":"3776:63:160"},{"expression":{"id":75169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75164,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3849:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3851:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"3849:25:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75167,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3877:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3885:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73876,"src":"3877:31:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3849:59:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75170,"nodeType":"ExpressionStatement","src":"3849:59:160"},{"expression":{"id":75176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75171,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"3918:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3920:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"3918:21:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75174,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"3942:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3950:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73878,"src":"3942:27:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3918:51:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75177,"nodeType":"ExpressionStatement","src":"3918:51:160"},{"expression":{"id":75183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75178,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4002:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4004:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"4002:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75181,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4017:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4025:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73884,"src":"4017:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4002:33:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75184,"nodeType":"ExpressionStatement","src":"4002:33:160"},{"expression":{"id":75195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75185,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4045:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4047:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"4045:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75193,"name":"NETWORK_IDENTIFIER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"4085:18:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"arguments":[{"id":75190,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4068:4:160","typeDescriptions":{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}],"id":75189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4060:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75188,"name":"address","nodeType":"ElementaryTypeName","src":"4060:7:160","typeDescriptions":{}}},"id":75191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4074:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":64940,"src":"4060:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint96_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,uint96) pure returns (bytes32)"}},"id":75194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:44:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4045:59:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75196,"nodeType":"ExpressionStatement","src":"4045:59:160"},{"expression":{"id":75202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75197,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4114:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4116:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"4114:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75200,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4130:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4138:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73882,"src":"4130:19:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4114:35:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75203,"nodeType":"ExpressionStatement","src":"4114:35:160"},{"expression":{"id":75209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75204,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4160:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4162:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"4160:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75207,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4171:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4179:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73886,"src":"4171:14:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4160:25:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75210,"nodeType":"ExpressionStatement","src":"4160:25:160"},{"expression":{"id":75216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75211,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4196:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75213,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4198:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"4196:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75214,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4210:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4218:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73889,"src":"4210:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_calldata_ptr","typeString":"struct Gear.SymbioticContracts calldata"}},"src":"4196:31:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75217,"nodeType":"ExpressionStatement","src":"4196:31:160"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"expression":{"id":75219,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4255:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4263:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73889,"src":"4255:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_calldata_ptr","typeString":"struct Gear.SymbioticContracts calldata"}},"id":75221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4273:15:160","memberName":"networkRegistry","nodeType":"MemberAccess","referencedDeclaration":87710,"src":"4255:33:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75218,"name":"INetworkRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64998,"src":"4238:16:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INetworkRegistry_$64998_$","typeString":"type(contract INetworkRegistry)"}},"id":75222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:51:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INetworkRegistry_$64998","typeString":"contract INetworkRegistry"}},"id":75223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4290:15:160","memberName":"registerNetwork","nodeType":"MemberAccess","referencedDeclaration":64997,"src":"4238:67:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":75224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:69:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75225,"nodeType":"ExpressionStatement","src":"4238:69:160"},{"expression":{"arguments":[{"arguments":[{"id":75234,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4402:4:160","typeDescriptions":{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}],"id":75233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4394:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75232,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:160","typeDescriptions":{}}},"id":75235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":75227,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"4343:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":75228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4351:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73889,"src":"4343:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_calldata_ptr","typeString":"struct Gear.SymbioticContracts calldata"}},"id":75229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4361:17:160","memberName":"middlewareService","nodeType":"MemberAccess","referencedDeclaration":87712,"src":"4343:35:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75226,"name":"INetworkMiddlewareService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65994,"src":"4317:25:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_INetworkMiddlewareService_$65994_$","typeString":"type(contract INetworkMiddlewareService)"}},"id":75230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4317:62:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_INetworkMiddlewareService_$65994","typeString":"contract INetworkMiddlewareService"}},"id":75231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4380:13:160","memberName":"setMiddleware","nodeType":"MemberAccess","referencedDeclaration":65993,"src":"4317:76:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":75236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4317:91:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75237,"nodeType":"ExpressionStatement","src":"4317:91:160"},{"expression":{"arguments":[{"id":75239,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75111,"src":"4436:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}],"id":75238,"name":"_validateStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76822,"src":"4419:16:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$73928_storage_ptr_$returns$__$","typeString":"function (struct IMiddleware.Storage storage pointer) view"}},"id":75240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4419:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75241,"nodeType":"ExpressionStatement","src":"4419:19:160"}]},"functionSelector":"ab122753","implemented":true,"kind":"function","modifiers":[{"id":75095,"kind":"modifierInvocation","modifierName":{"id":75094,"name":"initializer","nameLocations":["3224:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"3224:11:160"},"nodeType":"ModifierInvocation","src":"3224:11:160"}],"name":"initialize","nameLocation":"3177:10:160","parameters":{"id":75093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75092,"mutability":"mutable","name":"_params","nameLocation":"3208:7:160","nodeType":"VariableDeclaration","scope":75243,"src":"3188:27:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams"},"typeName":{"id":75091,"nodeType":"UserDefinedTypeName","pathNode":{"id":75090,"name":"InitParams","nameLocations":["3188:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":73890,"src":"3188:10:160"},"referencedDeclaration":73890,"src":"3188:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_storage_ptr","typeString":"struct IMiddleware.InitParams"}},"visibility":"internal"}],"src":"3187:29:160"},"returnParameters":{"id":75096,"nodeType":"ParameterList","parameters":[],"src":"3236:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75440,"nodeType":"FunctionDefinition","src":"4518:1578:160","nodes":[],"body":{"id":75439,"nodeType":"Block","src":"4576:1520:160","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":75253,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"4601:5:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":75254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4601:7:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75252,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"4586:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4586:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75256,"nodeType":"ExpressionStatement","src":"4586:23:160"},{"assignments":[75259],"declarations":[{"constant":false,"id":75259,"mutability":"mutable","name":"oldStorage","nameLocation":"4636:10:160","nodeType":"VariableDeclaration","scope":75439,"src":"4620:26:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75258,"nodeType":"UserDefinedTypeName","pathNode":{"id":75257,"name":"Storage","nameLocations":["4620:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"4620:7:160"},"referencedDeclaration":73928,"src":"4620:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75262,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75260,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"4649:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4649:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4620:39:160"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655632","id":75264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4686:33:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""},"value":"middleware.storage.MiddlewareV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""}],"id":75263,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77242,"src":"4670:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":75265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4670:50:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75266,"nodeType":"ExpressionStatement","src":"4670:50:160"},{"assignments":[75269],"declarations":[{"constant":false,"id":75269,"mutability":"mutable","name":"newStorage","nameLocation":"4746:10:160","nodeType":"VariableDeclaration","scope":75439,"src":"4730:26:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75268,"nodeType":"UserDefinedTypeName","pathNode":{"id":75267,"name":"Storage","nameLocations":["4730:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"4730:7:160"},"referencedDeclaration":73928,"src":"4730:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75272,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75270,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"4759:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4759:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4730:39:160"},{"expression":{"id":75278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75273,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4780:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75275,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4791:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"4780:22:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75276,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"4805:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4816:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"4805:22:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4780:47:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75279,"nodeType":"ExpressionStatement","src":"4780:47:160"},{"expression":{"id":75285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75280,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4837:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4848:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"4837:32:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75283,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"4872:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4883:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"4872:32:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4837:67:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75286,"nodeType":"ExpressionStatement","src":"4837:67:160"},{"expression":{"id":75292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75287,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4914:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4925:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"4914:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75290,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"4947:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4958:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"4947:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4914:63:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75293,"nodeType":"ExpressionStatement","src":"4914:63:160"},{"expression":{"id":75299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75294,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"4987:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4998:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"4987:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75297,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5017:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5028:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"5017:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4987:57:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75300,"nodeType":"ExpressionStatement","src":"4987:57:160"},{"expression":{"id":75306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75301,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5054:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5065:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"5054:26:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75304,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5083:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5094:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"5083:26:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5054:55:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75307,"nodeType":"ExpressionStatement","src":"5054:55:160"},{"expression":{"id":75313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75308,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5119:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5130:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"5119:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75311,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5155:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5166:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"5155:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"5119:69:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":75314,"nodeType":"ExpressionStatement","src":"5119:69:160"},{"expression":{"id":75320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75315,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5198:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5209:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"5198:36:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75318,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5237:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5248:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"5237:36:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5198:75:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75321,"nodeType":"ExpressionStatement","src":"5198:75:160"},{"expression":{"id":75327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75322,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5283:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5294:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"5283:34:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75325,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5320:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5331:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"5320:34:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5283:71:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75328,"nodeType":"ExpressionStatement","src":"5283:71:160"},{"expression":{"id":75334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75329,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5364:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5375:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"5364:30:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75332,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5397:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5408:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"5397:30:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5364:63:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":75335,"nodeType":"ExpressionStatement","src":"5364:63:160"},{"expression":{"id":75341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75336,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5437:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5448:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"5437:21:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75339,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5461:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5472:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"5461:21:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5437:45:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75342,"nodeType":"ExpressionStatement","src":"5437:45:160"},{"expression":{"id":75348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75343,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5492:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5503:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"5492:21:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75346,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5516:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5527:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"5516:21:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5492:45:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":75349,"nodeType":"ExpressionStatement","src":"5492:45:160"},{"expression":{"id":75355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75350,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5547:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5558:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"5547:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75353,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5572:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5583:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"5572:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5547:47:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75356,"nodeType":"ExpressionStatement","src":"5547:47:160"},{"expression":{"id":75362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75357,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5604:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5615:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"5604:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75360,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5624:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5635:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"5624:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5604:37:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75363,"nodeType":"ExpressionStatement","src":"5604:37:160"},{"expression":{"id":75369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75364,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5651:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5662:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"5651:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75367,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5674:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5685:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"5674:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"src":"5651:43:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75370,"nodeType":"ExpressionStatement","src":"5651:43:160"},{"body":{"id":75403,"nodeType":"Block","src":"5765:132:160","statements":[{"assignments":[75385,75387],"declarations":[{"constant":false,"id":75385,"mutability":"mutable","name":"key","nameLocation":"5788:3:160","nodeType":"VariableDeclaration","scope":75403,"src":"5780:11:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75384,"name":"address","nodeType":"ElementaryTypeName","src":"5780:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75387,"mutability":"mutable","name":"value","nameLocation":"5801:5:160","nodeType":"VariableDeclaration","scope":75403,"src":"5793:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75386,"name":"uint256","nodeType":"ElementaryTypeName","src":"5793:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75393,"initialValue":{"arguments":[{"id":75391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75372,"src":"5834:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75388,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5810:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5821:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"5810:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5831:2:160","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":57022,"src":"5810:23:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint256)"}},"id":75392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5810:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5779:57:160"},{"expression":{"arguments":[{"id":75399,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75385,"src":"5875:3:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75387,"src":"5880:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75394,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"5850:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75397,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5861:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"5850:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5871:3:160","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":56900,"src":"5850:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint256) returns (bool)"}},"id":75401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5850:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75402,"nodeType":"ExpressionStatement","src":"5850:36:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75372,"src":"5725:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":75376,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5729:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5740:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"5729:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5750:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"5729:27:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":75379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5729:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:33:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75404,"initializationExpression":{"assignments":[75372],"declarations":[{"constant":false,"id":75372,"mutability":"mutable","name":"i","nameLocation":"5718:1:160","nodeType":"VariableDeclaration","scope":75404,"src":"5710:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75371,"name":"uint256","nodeType":"ElementaryTypeName","src":"5710:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75374,"initialValue":{"hexValue":"30","id":75373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5722:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5710:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5760:3:160","subExpression":{"id":75381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75372,"src":"5760:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75383,"nodeType":"ExpressionStatement","src":"5760:3:160"},"nodeType":"ForStatement","src":"5705:192:160"},{"body":{"id":75437,"nodeType":"Block","src":"5964:126:160","statements":[{"assignments":[75419,75421],"declarations":[{"constant":false,"id":75419,"mutability":"mutable","name":"key","nameLocation":"5987:3:160","nodeType":"VariableDeclaration","scope":75437,"src":"5979:11:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75418,"name":"address","nodeType":"ElementaryTypeName","src":"5979:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75421,"mutability":"mutable","name":"value","nameLocation":"6000:5:160","nodeType":"VariableDeclaration","scope":75437,"src":"5992:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5992:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75427,"initialValue":{"arguments":[{"id":75425,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75406,"src":"6030:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75422,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"6009:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6020:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"6009:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6027:2:160","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":57022,"src":"6009:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint256)"}},"id":75426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5978:54:160"},{"expression":{"arguments":[{"id":75433,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75419,"src":"6068:3:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75421,"src":"6073:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":75428,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75269,"src":"6046:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6057:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"6046:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6064:3:160","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":56900,"src":"6046:21:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint256_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint256) returns (bool)"}},"id":75435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6046:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75436,"nodeType":"ExpressionStatement","src":"6046:33:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75409,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75406,"src":"5927:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":75410,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75259,"src":"5931:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5942:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"5931:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5949:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"5931:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":75413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5931:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5927:30:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75438,"initializationExpression":{"assignments":[75406],"declarations":[{"constant":false,"id":75406,"mutability":"mutable","name":"i","nameLocation":"5920:1:160","nodeType":"VariableDeclaration","scope":75438,"src":"5912:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75405,"name":"uint256","nodeType":"ElementaryTypeName","src":"5912:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75408,"initialValue":{"hexValue":"30","id":75407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5924:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5912:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5959:3:160","subExpression":{"id":75415,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75406,"src":"5959:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75417,"nodeType":"ExpressionStatement","src":"5959:3:160"},"nodeType":"ForStatement","src":"5907:183:160"}]},"documentation":{"id":75244,"nodeType":"StructuredDocumentation","src":"4451:62:160","text":" @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":75247,"kind":"modifierInvocation","modifierName":{"id":75246,"name":"onlyOwner","nameLocations":["4549:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"4549:9:160"},"nodeType":"ModifierInvocation","src":"4549:9:160"},{"arguments":[{"hexValue":"32","id":75249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4573:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":75250,"kind":"modifierInvocation","modifierName":{"id":75248,"name":"reinitializer","nameLocations":["4559:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"4559:13:160"},"nodeType":"ModifierInvocation","src":"4559:16:160"}],"name":"reinitialize","nameLocation":"4527:12:160","parameters":{"id":75245,"nodeType":"ParameterList","parameters":[],"src":"4539:2:160"},"returnParameters":{"id":75251,"nodeType":"ParameterList","parameters":[],"src":"4576:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":75450,"nodeType":"FunctionDefinition","src":"6261:84:160","nodes":[],"body":{"id":75449,"nodeType":"Block","src":"6343:2:160","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":75441,"nodeType":"StructuredDocumentation","src":"6102:154:160","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":75447,"kind":"modifierInvocation","modifierName":{"id":75446,"name":"onlyOwner","nameLocations":["6333:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"6333:9:160"},"nodeType":"ModifierInvocation","src":"6333:9:160"}],"name":"_authorizeUpgrade","nameLocation":"6270:17:160","overrides":{"id":75445,"nodeType":"OverrideSpecifier","overrides":[],"src":"6324:8:160"},"parameters":{"id":75444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75443,"mutability":"mutable","name":"newImplementation","nameLocation":"6296:17:160","nodeType":"VariableDeclaration","scope":75450,"src":"6288:25:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75442,"name":"address","nodeType":"ElementaryTypeName","src":"6288:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6287:27:160"},"returnParameters":{"id":75448,"nodeType":"ParameterList","parameters":[],"src":"6343:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":75460,"nodeType":"FunctionDefinition","src":"6370:98:160","nodes":[],"body":{"id":75459,"nodeType":"Block","src":"6422:46:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75455,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6439:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"6439:22:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75454,"id":75458,"nodeType":"Return","src":"6432:29:160"}]},"baseFunctions":[73952],"functionSelector":"4455a38f","implemented":true,"kind":"function","modifiers":[],"name":"eraDuration","nameLocation":"6379:11:160","parameters":{"id":75451,"nodeType":"ParameterList","parameters":[],"src":"6390:2:160"},"returnParameters":{"id":75454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75460,"src":"6414:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75452,"name":"uint48","nodeType":"ElementaryTypeName","src":"6414:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6413:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75470,"nodeType":"FunctionDefinition","src":"6474:118:160","nodes":[],"body":{"id":75469,"nodeType":"Block","src":"6536:56:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75465,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6553:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6553:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6564:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"6553:32:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75464,"id":75468,"nodeType":"Return","src":"6546:39:160"}]},"baseFunctions":[73957],"functionSelector":"945cf2dd","implemented":true,"kind":"function","modifiers":[],"name":"minVaultEpochDuration","nameLocation":"6483:21:160","parameters":{"id":75461,"nodeType":"ParameterList","parameters":[],"src":"6504:2:160"},"returnParameters":{"id":75464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75470,"src":"6528:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75462,"name":"uint48","nodeType":"ElementaryTypeName","src":"6528:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6527:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":75480,"nodeType":"FunctionDefinition","src":"6598:116:160","nodes":[],"body":{"id":75479,"nodeType":"Block","src":"6660:54:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75475,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6677:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6677:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6688:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"6677:30:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75474,"id":75478,"nodeType":"Return","src":"6670:37:160"}]},"baseFunctions":[73962],"functionSelector":"709d06ae","implemented":true,"kind":"function","modifiers":[],"name":"operatorGracePeriod","nameLocation":"6607:19:160","parameters":{"id":75471,"nodeType":"ParameterList","parameters":[],"src":"6626:2:160"},"returnParameters":{"id":75474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75480,"src":"6652:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75472,"name":"uint48","nodeType":"ElementaryTypeName","src":"6652:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6651:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75490,"nodeType":"FunctionDefinition","src":"6720:110:160","nodes":[],"body":{"id":75489,"nodeType":"Block","src":"6779:51:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75485,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6796:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6807:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"6796:27:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75484,"id":75488,"nodeType":"Return","src":"6789:34:160"}]},"baseFunctions":[73967],"functionSelector":"79a8b245","implemented":true,"kind":"function","modifiers":[],"name":"vaultGracePeriod","nameLocation":"6729:16:160","parameters":{"id":75481,"nodeType":"ParameterList","parameters":[],"src":"6745:2:160"},"returnParameters":{"id":75484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75483,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75490,"src":"6771:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75482,"name":"uint48","nodeType":"ElementaryTypeName","src":"6771:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6770:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75500,"nodeType":"FunctionDefinition","src":"6836:108:160","nodes":[],"body":{"id":75499,"nodeType":"Block","src":"6894:50:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75495,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"6911:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6911:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6922:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"6911:26:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75494,"id":75498,"nodeType":"Return","src":"6904:33:160"}]},"baseFunctions":[73972],"functionSelector":"461e7a8e","implemented":true,"kind":"function","modifiers":[],"name":"minVetoDuration","nameLocation":"6845:15:160","parameters":{"id":75491,"nodeType":"ParameterList","parameters":[],"src":"6860:2:160"},"returnParameters":{"id":75494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75493,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75500,"src":"6886:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75492,"name":"uint48","nodeType":"ElementaryTypeName","src":"6886:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"6885:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75510,"nodeType":"FunctionDefinition","src":"6950:122:160","nodes":[],"body":{"id":75509,"nodeType":"Block","src":"7015:57:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75505,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7032:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7032:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7043:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"7032:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":75504,"id":75508,"nodeType":"Return","src":"7025:40:160"}]},"baseFunctions":[73977],"functionSelector":"373bba1f","implemented":true,"kind":"function","modifiers":[],"name":"minSlashExecutionDelay","nameLocation":"6959:22:160","parameters":{"id":75501,"nodeType":"ParameterList","parameters":[],"src":"6981:2:160"},"returnParameters":{"id":75504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75510,"src":"7007:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75502,"name":"uint48","nodeType":"ElementaryTypeName","src":"7007:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7006:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75520,"nodeType":"FunctionDefinition","src":"7078:129:160","nodes":[],"body":{"id":75519,"nodeType":"Block","src":"7147:60:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75515,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7164:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7164:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7175:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"7164:36:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75514,"id":75518,"nodeType":"Return","src":"7157:43:160"}]},"baseFunctions":[73982],"functionSelector":"9e032311","implemented":true,"kind":"function","modifiers":[],"name":"maxResolverSetEpochsDelay","nameLocation":"7087:25:160","parameters":{"id":75511,"nodeType":"ParameterList","parameters":[],"src":"7112:2:160"},"returnParameters":{"id":75514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75520,"src":"7138:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75512,"name":"uint256","nodeType":"ElementaryTypeName","src":"7138:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7137:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75530,"nodeType":"FunctionDefinition","src":"7213:124:160","nodes":[],"body":{"id":75529,"nodeType":"Block","src":"7279:58:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75525,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7296:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7296:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7307:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"7296:34:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":75524,"id":75528,"nodeType":"Return","src":"7289:41:160"}]},"baseFunctions":[73987],"functionSelector":"c9b0b1e9","implemented":true,"kind":"function","modifiers":[],"name":"allowedVaultImplVersion","nameLocation":"7222:23:160","parameters":{"id":75521,"nodeType":"ParameterList","parameters":[],"src":"7245:2:160"},"returnParameters":{"id":75524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75523,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75530,"src":"7271:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":75522,"name":"uint64","nodeType":"ElementaryTypeName","src":"7271:6:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7270:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75540,"nodeType":"FunctionDefinition","src":"7343:116:160","nodes":[],"body":{"id":75539,"nodeType":"Block","src":"7405:54:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75535,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7422:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7433:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"7422:30:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":75534,"id":75538,"nodeType":"Return","src":"7415:37:160"}]},"baseFunctions":[73992],"functionSelector":"d55a5bdf","implemented":true,"kind":"function","modifiers":[],"name":"vetoSlasherImplType","nameLocation":"7352:19:160","parameters":{"id":75531,"nodeType":"ParameterList","parameters":[],"src":"7371:2:160"},"returnParameters":{"id":75534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75540,"src":"7397:6:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":75532,"name":"uint64","nodeType":"ElementaryTypeName","src":"7397:6:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7396:8:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75550,"nodeType":"FunctionDefinition","src":"7465:99:160","nodes":[],"body":{"id":75549,"nodeType":"Block","src":"7519:45:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75545,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7536:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7547:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"7536:21:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75544,"id":75548,"nodeType":"Return","src":"7529:28:160"}]},"baseFunctions":[73997],"functionSelector":"d8dfeb45","implemented":true,"kind":"function","modifiers":[],"name":"collateral","nameLocation":"7474:10:160","parameters":{"id":75541,"nodeType":"ParameterList","parameters":[],"src":"7484:2:160"},"returnParameters":{"id":75544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75550,"src":"7510:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75542,"name":"address","nodeType":"ElementaryTypeName","src":"7510:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7509:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75560,"nodeType":"FunctionDefinition","src":"7570:99:160","nodes":[],"body":{"id":75559,"nodeType":"Block","src":"7624:45:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75555,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7641:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7641:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7652:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"7641:21:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75554,"id":75558,"nodeType":"Return","src":"7634:28:160"}]},"baseFunctions":[74002],"functionSelector":"ceebb69a","implemented":true,"kind":"function","modifiers":[],"name":"subnetwork","nameLocation":"7579:10:160","parameters":{"id":75551,"nodeType":"ParameterList","parameters":[],"src":"7589:2:160"},"returnParameters":{"id":75554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75560,"src":"7615:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7615:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7614:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75570,"nodeType":"FunctionDefinition","src":"7675:101:160","nodes":[],"body":{"id":75569,"nodeType":"Block","src":"7730:46:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75565,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7747:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7747:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7758:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"7747:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":75564,"id":75568,"nodeType":"Return","src":"7740:29:160"}]},"baseFunctions":[74007],"functionSelector":"c639e2d6","implemented":true,"kind":"function","modifiers":[],"name":"maxAdminFee","nameLocation":"7684:11:160","parameters":{"id":75561,"nodeType":"ParameterList","parameters":[],"src":"7695:2:160"},"returnParameters":{"id":75564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75570,"src":"7721:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7721:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7720:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75580,"nodeType":"FunctionDefinition","src":"7782:91:160","nodes":[],"body":{"id":75579,"nodeType":"Block","src":"7832:41:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75575,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7849:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7849:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7860:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"7849:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":75574,"id":75578,"nodeType":"Return","src":"7842:24:160"}]},"baseFunctions":[74012],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"7791:6:160","parameters":{"id":75571,"nodeType":"ParameterList","parameters":[],"src":"7797:2:160"},"returnParameters":{"id":75574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75580,"src":"7823:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75572,"name":"address","nodeType":"ElementaryTypeName","src":"7823:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7822:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75591,"nodeType":"FunctionDefinition","src":"7879:129:160","nodes":[],"body":{"id":75590,"nodeType":"Block","src":"7964:44:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75586,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"7981:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7981:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7992:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"7981:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"functionReturnParameters":75585,"id":75589,"nodeType":"Return","src":"7974:27:160"}]},"baseFunctions":[74018],"functionSelector":"bcf33934","implemented":true,"kind":"function","modifiers":[],"name":"symbioticContracts","nameLocation":"7888:18:160","parameters":{"id":75581,"nodeType":"ParameterList","parameters":[],"src":"7906:2:160"},"returnParameters":{"id":75585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75591,"src":"7932:30:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_memory_ptr","typeString":"struct Gear.SymbioticContracts"},"typeName":{"id":75583,"nodeType":"UserDefinedTypeName","pathNode":{"id":75582,"name":"Gear.SymbioticContracts","nameLocations":["7932:4:160","7937:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":87725,"src":"7932:23:160"},"referencedDeclaration":87725,"src":"7932:23:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage_ptr","typeString":"struct Gear.SymbioticContracts"}},"visibility":"internal"}],"src":"7931:32:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":75622,"nodeType":"FunctionDefinition","src":"8033:263:160","nodes":[],"body":{"id":75621,"nodeType":"Block","src":"8089:207:160","nodes":[],"statements":[{"assignments":[75598],"declarations":[{"constant":false,"id":75598,"mutability":"mutable","name":"$","nameLocation":"8115:1:160","nodeType":"VariableDeclaration","scope":75621,"src":"8099:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75597,"nodeType":"UserDefinedTypeName","pathNode":{"id":75596,"name":"Storage","nameLocations":["8099:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"8099:7:160"},"referencedDeclaration":73928,"src":"8099:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75601,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75599,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"8119:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8119:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8099:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75602,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8143:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8147:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8143:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":75604,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75598,"src":"8157:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75605,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8159:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8157:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8169:18:160","memberName":"roleSlashRequester","nodeType":"MemberAccess","referencedDeclaration":87720,"src":"8157:30:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8143:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75612,"nodeType":"IfStatement","src":"8139:101:160","trueBody":{"id":75611,"nodeType":"Block","src":"8189:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75608,"name":"NotSlashRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73824,"src":"8210:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8210:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75610,"nodeType":"RevertStatement","src":"8203:26:160"}]}},{"expression":{"id":75619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75613,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75598,"src":"8249:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8251:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8249:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75617,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8261:18:160","memberName":"roleSlashRequester","nodeType":"MemberAccess","referencedDeclaration":87720,"src":"8249:30:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75618,"name":"newRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75593,"src":"8282:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8249:40:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75620,"nodeType":"ExpressionStatement","src":"8249:40:160"}]},"baseFunctions":[74023],"functionSelector":"6d1064eb","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashRequester","nameLocation":"8042:20:160","parameters":{"id":75594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75593,"mutability":"mutable","name":"newRole","nameLocation":"8071:7:160","nodeType":"VariableDeclaration","scope":75622,"src":"8063:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75592,"name":"address","nodeType":"ElementaryTypeName","src":"8063:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8062:17:160"},"returnParameters":{"id":75595,"nodeType":"ParameterList","parameters":[],"src":"8089:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75653,"nodeType":"FunctionDefinition","src":"8302:259:160","nodes":[],"body":{"id":75652,"nodeType":"Block","src":"8357:204:160","nodes":[],"statements":[{"assignments":[75629],"declarations":[{"constant":false,"id":75629,"mutability":"mutable","name":"$","nameLocation":"8383:1:160","nodeType":"VariableDeclaration","scope":75652,"src":"8367:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75628,"nodeType":"UserDefinedTypeName","pathNode":{"id":75627,"name":"Storage","nameLocations":["8367:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"8367:7:160"},"referencedDeclaration":73928,"src":"8367:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75632,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75630,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"8387:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8367:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8411:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8415:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8411:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":75635,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75629,"src":"8425:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8427:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8425:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8437:17:160","memberName":"roleSlashExecutor","nodeType":"MemberAccess","referencedDeclaration":87722,"src":"8425:29:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8411:43:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75643,"nodeType":"IfStatement","src":"8407:99:160","trueBody":{"id":75642,"nodeType":"Block","src":"8456:50:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75639,"name":"NotSlashExecutor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73827,"src":"8477:16:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8477:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75641,"nodeType":"RevertStatement","src":"8470:25:160"}]}},{"expression":{"id":75650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":75644,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75629,"src":"8515:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8517:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8515:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8527:17:160","memberName":"roleSlashExecutor","nodeType":"MemberAccess","referencedDeclaration":87722,"src":"8515:29:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75649,"name":"newRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75624,"src":"8547:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8515:39:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":75651,"nodeType":"ExpressionStatement","src":"8515:39:160"}]},"baseFunctions":[74028],"functionSelector":"86c241a1","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashExecutor","nameLocation":"8311:19:160","parameters":{"id":75625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75624,"mutability":"mutable","name":"newRole","nameLocation":"8339:7:160","nodeType":"VariableDeclaration","scope":75653,"src":"8331:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75623,"name":"address","nodeType":"ElementaryTypeName","src":"8331:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8330:17:160"},"returnParameters":{"id":75626,"nodeType":"ParameterList","parameters":[],"src":"8357:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75707,"nodeType":"FunctionDefinition","src":"8617:405:160","nodes":[],"body":{"id":75706,"nodeType":"Block","src":"8654:368:160","nodes":[],"statements":[{"assignments":[75658],"declarations":[{"constant":false,"id":75658,"mutability":"mutable","name":"$","nameLocation":"8680:1:160","nodeType":"VariableDeclaration","scope":75706,"src":"8664:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75657,"nodeType":"UserDefinedTypeName","pathNode":{"id":75656,"name":"Storage","nameLocations":["8664:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"8664:7:160"},"referencedDeclaration":73928,"src":"8664:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75661,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75659,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"8684:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8684:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8664:30:160"},{"condition":{"id":75671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8709:61:160","subExpression":{"arguments":[{"expression":{"id":75668,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8759:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8763:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8759:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":75663,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75658,"src":"8720:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8722:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8720:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8732:16:160","memberName":"operatorRegistry","nodeType":"MemberAccess","referencedDeclaration":87708,"src":"8720:28:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75662,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"8710:9:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$65332_$","typeString":"type(contract IRegistry)"}},"id":75666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8710:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$65332","typeString":"contract IRegistry"}},"id":75667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8750:8:160","memberName":"isEntity","nodeType":"MemberAccess","referencedDeclaration":65317,"src":"8710:48:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":75670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8710:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75676,"nodeType":"IfStatement","src":"8705:121:160","trueBody":{"id":75675,"nodeType":"Block","src":"8772:54:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75672,"name":"OperatorDoesNotExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73773,"src":"8793:20:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8793:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75674,"nodeType":"RevertStatement","src":"8786:29:160"}]}},{"condition":{"id":75690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8839:77:160","subExpression":{"arguments":[{"expression":{"id":75683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8890:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8894:6:160","memberName":"sender","nodeType":"MemberAccess","src":"8890:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":75687,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8910:4:160","typeDescriptions":{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Middleware_$77273","typeString":"contract Middleware"}],"id":75686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8902:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75685,"name":"address","nodeType":"ElementaryTypeName","src":"8902:7:160","typeDescriptions":{}}},"id":75688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8902:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":75678,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75658,"src":"8854:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8856:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"8854:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8866:12:160","memberName":"networkOptIn","nodeType":"MemberAccess","referencedDeclaration":87714,"src":"8854:24:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75677,"name":"IOptInService","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66120,"src":"8840:13:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptInService_$66120_$","typeString":"type(contract IOptInService)"}},"id":75681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptInService_$66120","typeString":"contract IOptInService"}},"id":75682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8880:9:160","memberName":"isOptedIn","nodeType":"MemberAccess","referencedDeclaration":66067,"src":"8840:49:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view external returns (bool)"}},"id":75689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8840:76:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75695,"nodeType":"IfStatement","src":"8835:137:160","trueBody":{"id":75694,"nodeType":"Block","src":"8918:54:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75691,"name":"OperatorDoesNotOptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73776,"src":"8939:20:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8939:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75693,"nodeType":"RevertStatement","src":"8932:29:160"}]}},{"expression":{"arguments":[{"expression":{"id":75701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9001:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9005:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9001:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":75703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9013:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"expression":{"id":75696,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75658,"src":"8982:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8984:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"8982:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75700,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8994:6:160","memberName":"append","nodeType":"MemberAccess","referencedDeclaration":88701,"src":"8982:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint160_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint160)"}},"id":75704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8982:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75705,"nodeType":"ExpressionStatement","src":"8982:33:160"}]},"baseFunctions":[74067],"functionSelector":"2acde098","implemented":true,"kind":"function","modifiers":[],"name":"registerOperator","nameLocation":"8626:16:160","parameters":{"id":75654,"nodeType":"ParameterList","parameters":[],"src":"8642:2:160"},"returnParameters":{"id":75655,"nodeType":"ParameterList","parameters":[],"src":"8654:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75719,"nodeType":"FunctionDefinition","src":"9028:93:160","nodes":[],"body":{"id":75718,"nodeType":"Block","src":"9064:57:160","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9103:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9107:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9103:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75710,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9074:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9074:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9085:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9074:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9095:7:160","memberName":"disable","nodeType":"MemberAccess","referencedDeclaration":88795,"src":"9074:28:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":75716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9074:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75717,"nodeType":"ExpressionStatement","src":"9074:40:160"}]},"baseFunctions":[74071],"functionSelector":"d99fcd66","implemented":true,"kind":"function","modifiers":[],"name":"disableOperator","nameLocation":"9037:15:160","parameters":{"id":75708,"nodeType":"ParameterList","parameters":[],"src":"9052:2:160"},"returnParameters":{"id":75709,"nodeType":"ParameterList","parameters":[],"src":"9064:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75731,"nodeType":"FunctionDefinition","src":"9127:91:160","nodes":[],"body":{"id":75730,"nodeType":"Block","src":"9162:56:160","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":75726,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9200:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9204:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9200:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":75722,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9172:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9172:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75724,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9183:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9172:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9193:6:160","memberName":"enable","nodeType":"MemberAccess","referencedDeclaration":88748,"src":"9172:27:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":75728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9172:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75729,"nodeType":"ExpressionStatement","src":"9172:39:160"}]},"baseFunctions":[74075],"functionSelector":"3d15e74e","implemented":true,"kind":"function","modifiers":[],"name":"enableOperator","nameLocation":"9136:14:160","parameters":{"id":75720,"nodeType":"ParameterList","parameters":[],"src":"9150:2:160"},"returnParameters":{"id":75721,"nodeType":"ParameterList","parameters":[],"src":"9162:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75776,"nodeType":"FunctionDefinition","src":"9224:362:160","nodes":[],"body":{"id":75775,"nodeType":"Block","src":"9279:307:160","nodes":[],"statements":[{"assignments":[75738],"declarations":[{"constant":false,"id":75738,"mutability":"mutable","name":"$","nameLocation":"9305:1:160","nodeType":"VariableDeclaration","scope":75775,"src":"9289:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75737,"nodeType":"UserDefinedTypeName","pathNode":{"id":75736,"name":"Storage","nameLocations":["9289:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"9289:7:160"},"referencedDeclaration":73928,"src":"9289:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75741,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75739,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9309:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9309:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9289:30:160"},{"assignments":[null,75743],"declarations":[null,{"constant":false,"id":75743,"mutability":"mutable","name":"disabledTime","nameLocation":"9340:12:160","nodeType":"VariableDeclaration","scope":75775,"src":"9333:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75742,"name":"uint48","nodeType":"ElementaryTypeName","src":"9333:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":75749,"initialValue":{"arguments":[{"id":75747,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75733,"src":"9377:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75744,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75738,"src":"9356:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9358:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9356:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9368:8:160","memberName":"getTimes","nodeType":"MemberAccess","referencedDeclaration":88854,"src":"9356:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint48,uint48)"}},"id":75748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9356:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"9330:56:160"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":75761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":75752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75750,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75743,"src":"9401:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":75751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9417:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9401:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":75760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":75753,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"9422:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":75754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9427:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"9422:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":75755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9422:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":75759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75756,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75743,"src":"9441:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":75757,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75738,"src":"9456:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9458:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"9456:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9441:36:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9422:55:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9401:76:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75766,"nodeType":"IfStatement","src":"9397:144:160","trueBody":{"id":75765,"nodeType":"Block","src":"9479:62:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75762,"name":"OperatorGracePeriodNotPassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73761,"src":"9500:28:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9500:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75764,"nodeType":"RevertStatement","src":"9493:37:160"}]}},{"expression":{"arguments":[{"id":75772,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75733,"src":"9570:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75767,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75738,"src":"9551:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9553:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"9551:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9563:6:160","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":56927,"src":"9551:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) returns (bool)"}},"id":75773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9551:28:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75774,"nodeType":"ExpressionStatement","src":"9551:28:160"}]},"baseFunctions":[74081],"functionSelector":"96115bc2","implemented":true,"kind":"function","modifiers":[],"name":"unregisterOperator","nameLocation":"9233:18:160","parameters":{"id":75734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75733,"mutability":"mutable","name":"operator","nameLocation":"9260:8:160","nodeType":"VariableDeclaration","scope":75776,"src":"9252:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75732,"name":"address","nodeType":"ElementaryTypeName","src":"9252:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9251:18:160"},"returnParameters":{"id":75735,"nodeType":"ParameterList","parameters":[],"src":"9279:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75834,"nodeType":"FunctionDefinition","src":"9592:494:160","nodes":[],"body":{"id":75833,"nodeType":"Block","src":"9699:387:160","nodes":[],"statements":[{"assignments":[75789],"declarations":[{"constant":false,"id":75789,"mutability":"mutable","name":"$","nameLocation":"9725:1:160","nodeType":"VariableDeclaration","scope":75833,"src":"9709:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75788,"nodeType":"UserDefinedTypeName","pathNode":{"id":75787,"name":"Storage","nameLocations":["9709:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"9709:7:160"},"referencedDeclaration":73928,"src":"9709:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75792,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75790,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"9729:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9729:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9709:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75793,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9754:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9758:6:160","memberName":"sender","nodeType":"MemberAccess","src":"9754:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75795,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9768:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9770:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"9768:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9754:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75802,"nodeType":"IfStatement","src":"9750:71:160","trueBody":{"id":75801,"nodeType":"Block","src":"9778:43:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75798,"name":"NotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73821,"src":"9799:9:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9799:11:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75800,"nodeType":"RevertStatement","src":"9792:18:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75803,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75778,"src":"9835:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75804,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9844:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9846:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"9844:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9835:21:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75811,"nodeType":"IfStatement","src":"9831:78:160","trueBody":{"id":75810,"nodeType":"Block","src":"9858:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75807,"name":"UnknownCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73758,"src":"9879:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9879:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75809,"nodeType":"RevertStatement","src":"9872:26:160"}]}},{"expression":{"arguments":[{"expression":{"id":75818,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9990:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9992:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"9990:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75820,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75778,"src":"10000:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75821,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75780,"src":"10007:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75822,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75782,"src":"10015:4:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"expression":{"expression":{"id":75813,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75789,"src":"9943:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9945:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"9943:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":75815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9955:15:160","memberName":"operatorRewards","nodeType":"MemberAccess","referencedDeclaration":87718,"src":"9943:27:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75812,"name":"IDefaultOperatorRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71798,"src":"9919:23:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultOperatorRewards_$71798_$","typeString":"type(contract IDefaultOperatorRewards)"}},"id":75816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9919:52:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultOperatorRewards_$71798","typeString":"contract IDefaultOperatorRewards"}},"id":75817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9972:17:160","memberName":"distributeRewards","nodeType":"MemberAccess","referencedDeclaration":71780,"src":"9919:70:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,bytes32) external"}},"id":75823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9919:101:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75824,"nodeType":"ExpressionStatement","src":"9919:101:160"},{"expression":{"arguments":[{"arguments":[{"id":75828,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75780,"src":"10065:6:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75829,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75782,"src":"10073:4:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":75826,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10048:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10052:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"10048:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10048:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75825,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10038:9:160","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10038:41:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75786,"id":75832,"nodeType":"Return","src":"10031:48:160"}]},"baseFunctions":[74119],"functionSelector":"729e2f36","implemented":true,"kind":"function","modifiers":[],"name":"distributeOperatorRewards","nameLocation":"9601:25:160","parameters":{"id":75783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75778,"mutability":"mutable","name":"token","nameLocation":"9635:5:160","nodeType":"VariableDeclaration","scope":75834,"src":"9627:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75777,"name":"address","nodeType":"ElementaryTypeName","src":"9627:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75780,"mutability":"mutable","name":"amount","nameLocation":"9650:6:160","nodeType":"VariableDeclaration","scope":75834,"src":"9642:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75779,"name":"uint256","nodeType":"ElementaryTypeName","src":"9642:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75782,"mutability":"mutable","name":"root","nameLocation":"9666:4:160","nodeType":"VariableDeclaration","scope":75834,"src":"9658:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9658:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9626:45:160"},"returnParameters":{"id":75786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75834,"src":"9690:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9690:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9689:9:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75982,"nodeType":"FunctionDefinition","src":"10092:1224:160","nodes":[],"body":{"id":75981,"nodeType":"Block","src":"10239:1077:160","nodes":[],"statements":[{"assignments":[75846],"declarations":[{"constant":false,"id":75846,"mutability":"mutable","name":"$","nameLocation":"10265:1:160","nodeType":"VariableDeclaration","scope":75981,"src":"10249:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":75845,"nodeType":"UserDefinedTypeName","pathNode":{"id":75844,"name":"Storage","nameLocations":["10249:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"10249:7:160"},"referencedDeclaration":73928,"src":"10249:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":75849,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":75847,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"10269:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":75848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10269:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10249:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75850,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10294:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10298:6:160","memberName":"sender","nodeType":"MemberAccess","src":"10294:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75852,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10308:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10310:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"10308:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10294:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75859,"nodeType":"IfStatement","src":"10290:71:160","trueBody":{"id":75858,"nodeType":"Block","src":"10318:43:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75855,"name":"NotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73821,"src":"10339:9:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10339:11:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75857,"nodeType":"RevertStatement","src":"10332:18:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":75864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":75860,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"10375:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10387:5:160","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":87541,"src":"10375:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75862,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10396:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10398:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"10396:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10375:33:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75869,"nodeType":"IfStatement","src":"10371:90:160","trueBody":{"id":75868,"nodeType":"Block","src":"10410:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75865,"name":"UnknownCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73758,"src":"10431:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10431:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75867,"nodeType":"RevertStatement","src":"10424:26:160"}]}},{"assignments":[75871],"declarations":[{"constant":false,"id":75871,"mutability":"mutable","name":"distributionBytes","nameLocation":"10484:17:160","nodeType":"VariableDeclaration","scope":75981,"src":"10471:30:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75870,"name":"bytes","nodeType":"ElementaryTypeName","src":"10471:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75872,"nodeType":"VariableDeclarationStatement","src":"10471:30:160"},{"body":{"id":75964,"nodeType":"Block","src":"10573:615:160","statements":[{"assignments":[75889],"declarations":[{"constant":false,"id":75889,"mutability":"mutable","name":"rewards","nameLocation":"10613:7:160","nodeType":"VariableDeclaration","scope":75964,"src":"10587:33:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards"},"typeName":{"id":75888,"nodeType":"UserDefinedTypeName","pathNode":{"id":75887,"name":"Gear.StakerRewards","nameLocations":["10587:4:160","10592:13:160"],"nodeType":"IdentifierPath","referencedDeclaration":87548,"src":"10587:18:160"},"referencedDeclaration":87548,"src":"10587:18:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_storage_ptr","typeString":"struct Gear.StakerRewards"}},"visibility":"internal"}],"id":75894,"initialValue":{"baseExpression":{"expression":{"id":75890,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"10623:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10635:12:160","memberName":"distribution","nodeType":"MemberAccess","referencedDeclaration":87537,"src":"10623:24:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$87548_memory_ptr_$dyn_memory_ptr","typeString":"struct Gear.StakerRewards memory[] memory"}},"id":75893,"indexExpression":{"id":75892,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75874,"src":"10648:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10623:27:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"nodeType":"VariableDeclarationStatement","src":"10587:63:160"},{"condition":{"id":75901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10669:33:160","subExpression":{"arguments":[{"expression":{"id":75898,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"10688:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10696:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":87545,"src":"10688:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75895,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10670:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10672:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"10670:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10679:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"10670:17:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":75900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10670:32:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75906,"nodeType":"IfStatement","src":"10665:99:160","trueBody":{"id":75905,"nodeType":"Block","src":"10704:60:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75902,"name":"NotRegisteredVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73809,"src":"10729:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":75903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10729:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":75904,"nodeType":"RevertStatement","src":"10722:27:160"}]}},{"assignments":[75908],"declarations":[{"constant":false,"id":75908,"mutability":"mutable","name":"rewardsAddress","nameLocation":"10786:14:160","nodeType":"VariableDeclaration","scope":75964,"src":"10778:22:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75907,"name":"address","nodeType":"ElementaryTypeName","src":"10778:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75918,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":75914,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"10834:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10842:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":87545,"src":"10834:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":75911,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10811:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10813:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"10811:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":75913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10820:13:160","memberName":"getPinnedData","nodeType":"MemberAccess","referencedDeclaration":88875,"src":"10811:22:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint160_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint160)"}},"id":75916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10811:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":75910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10803:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75909,"name":"address","nodeType":"ElementaryTypeName","src":"10803:7:160","typeDescriptions":{}}},"id":75917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10803:46:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10778:71:160"},{"assignments":[75920],"declarations":[{"constant":false,"id":75920,"mutability":"mutable","name":"data","nameLocation":"10877:4:160","nodeType":"VariableDeclaration","scope":75964,"src":"10864:17:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75919,"name":"bytes","nodeType":"ElementaryTypeName","src":"10864:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75935,"initialValue":{"arguments":[{"id":75923,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75839,"src":"10895:9:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":75924,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"10906:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10908:11:160","memberName":"maxAdminFee","nodeType":"MemberAccess","referencedDeclaration":73913,"src":"10906:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"","id":75928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10927:2:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":75927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10921:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75926,"name":"bytes","nodeType":"ElementaryTypeName","src":"10921:5:160","typeDescriptions":{}}},"id":75929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10921:9:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"","id":75932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10938:2:160","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":75931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10932:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75930,"name":"bytes","nodeType":"ElementaryTypeName","src":"10932:5:160","typeDescriptions":{}}},"id":75933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10932:9:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75921,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10884:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10888:6:160","memberName":"encode","nodeType":"MemberAccess","src":"10884:10:160","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10884:58:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"10864:78:160"},{"expression":{"arguments":[{"expression":{"id":75940,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75846,"src":"11012:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":75941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11014:6:160","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"11012:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75942,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"11022:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11034:5:160","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":87541,"src":"11022:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75944,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"11041:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11049:6:160","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":87547,"src":"11041:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75946,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75920,"src":"11057:4:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":75937,"name":"rewardsAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75908,"src":"10978:14:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75936,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"10956:21:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultStakerRewards_$71992_$","typeString":"type(contract IDefaultStakerRewards)"}},"id":75938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10956:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultStakerRewards_$71992","typeString":"contract IDefaultStakerRewards"}},"id":75939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10994:17:160","memberName":"distributeRewards","nodeType":"MemberAccess","referencedDeclaration":72068,"src":"10956:55:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory) external"}},"id":75947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10956:106:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75948,"nodeType":"ExpressionStatement","src":"10956:106:160"},{"expression":{"id":75962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75949,"name":"distributionBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75871,"src":"11077:17:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75953,"name":"distributionBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75871,"src":"11110:17:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":75956,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"11146:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11154:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":87545,"src":"11146:13:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":75958,"name":"rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75889,"src":"11161:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewards_$87548_memory_ptr","typeString":"struct Gear.StakerRewards memory"}},"id":75959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11169:6:160","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":87547,"src":"11161:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":75954,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11129:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11133:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"11129:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11129:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11097:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75950,"name":"bytes","nodeType":"ElementaryTypeName","src":"11097:5:160","typeDescriptions":{}}},"id":75952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11103:6:160","memberName":"concat","nodeType":"MemberAccess","src":"11097:12:160","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11097:80:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11077:100:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75963,"nodeType":"ExpressionStatement","src":"11077:100:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75877,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75874,"src":"10531:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":75878,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"10535:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10547:12:160","memberName":"distribution","nodeType":"MemberAccess","referencedDeclaration":87537,"src":"10535:24:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StakerRewards_$87548_memory_ptr_$dyn_memory_ptr","typeString":"struct Gear.StakerRewards memory[] memory"}},"id":75880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10560:6:160","memberName":"length","nodeType":"MemberAccess","src":"10535:31:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10531:35:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75965,"initializationExpression":{"assignments":[75874],"declarations":[{"constant":false,"id":75874,"mutability":"mutable","name":"i","nameLocation":"10524:1:160","nodeType":"VariableDeclaration","scope":75965,"src":"10516:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75873,"name":"uint256","nodeType":"ElementaryTypeName","src":"10516:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75876,"initialValue":{"hexValue":"30","id":75875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10528:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10516:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":75883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10568:3:160","subExpression":{"id":75882,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75874,"src":"10570:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75884,"nodeType":"ExpressionStatement","src":"10568:3:160"},"nodeType":"ForStatement","src":"10511:677:160"},{"expression":{"arguments":[{"arguments":[{"id":75970,"name":"distributionBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75871,"src":"11228:17:160","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":75973,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"11264:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11276:11:160","memberName":"totalAmount","nodeType":"MemberAccess","referencedDeclaration":87539,"src":"11264:23:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75975,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75837,"src":"11289:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment memory"}},"id":75976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11301:5:160","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":87541,"src":"11289:17:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":75971,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11247:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":75972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11251:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"11247:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11247:60:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":75968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11215:5:160","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75967,"name":"bytes","nodeType":"ElementaryTypeName","src":"11215:5:160","typeDescriptions":{}}},"id":75969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11221:6:160","memberName":"concat","nodeType":"MemberAccess","src":"11215:12:160","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11215:93:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75966,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11205:9:160","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:104:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":75843,"id":75980,"nodeType":"Return","src":"11198:111:160"}]},"baseFunctions":[74130],"functionSelector":"7fbe95b5","implemented":true,"kind":"function","modifiers":[],"name":"distributeStakerRewards","nameLocation":"10101:23:160","parameters":{"id":75840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75837,"mutability":"mutable","name":"_commitment","nameLocation":"10161:11:160","nodeType":"VariableDeclaration","scope":75982,"src":"10125:47:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":75836,"nodeType":"UserDefinedTypeName","pathNode":{"id":75835,"name":"Gear.StakerRewardsCommitment","nameLocations":["10125:4:160","10130:23:160"],"nodeType":"IdentifierPath","referencedDeclaration":87542,"src":"10125:28:160"},"referencedDeclaration":87542,"src":"10125:28:160","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":75839,"mutability":"mutable","name":"timestamp","nameLocation":"10181:9:160","nodeType":"VariableDeclaration","scope":75982,"src":"10174:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":75838,"name":"uint48","nodeType":"ElementaryTypeName","src":"10174:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"10124:67:160"},"returnParameters":{"id":75843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75982,"src":"10226:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":75841,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10226:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10225:9:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76013,"nodeType":"FunctionDefinition","src":"11322:236:160","nodes":[],"body":{"id":76012,"nodeType":"Block","src":"11407:151:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":75993,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11432:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75992,"name":"_validateVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77089,"src":"11417:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":75994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11417:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75995,"nodeType":"ExpressionStatement","src":"11417:22:160"},{"expression":{"arguments":[{"id":75997,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11472:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":75998,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75986,"src":"11480:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":75996,"name":"_validateStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77136,"src":"11449:22:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) view"}},"id":75999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11449:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76000,"nodeType":"ExpressionStatement","src":"11449:40:160"},{"expression":{"arguments":[{"id":76005,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11525:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":76008,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75986,"src":"11541:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11533:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":76006,"name":"uint160","nodeType":"ElementaryTypeName","src":"11533:7:160","typeDescriptions":{}}},"id":76009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11533:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint160","typeString":"uint160"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76001,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11500:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11500:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11511:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11500:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11518:6:160","memberName":"append","nodeType":"MemberAccess","referencedDeclaration":88701,"src":"11500:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$_t_uint160_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address,uint160)"}},"id":76010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11500:51:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76011,"nodeType":"ExpressionStatement","src":"11500:51:160"}]},"baseFunctions":[74089],"functionSelector":"05c4fdf9","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":75989,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75984,"src":"11399:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":75990,"kind":"modifierInvocation","modifierName":{"id":75988,"name":"vaultOwner","nameLocations":["11388:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11388:10:160"},"nodeType":"ModifierInvocation","src":"11388:18:160"}],"name":"registerVault","nameLocation":"11331:13:160","parameters":{"id":75987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75984,"mutability":"mutable","name":"_vault","nameLocation":"11353:6:160","nodeType":"VariableDeclaration","scope":76013,"src":"11345:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75983,"name":"address","nodeType":"ElementaryTypeName","src":"11345:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75986,"mutability":"mutable","name":"_rewards","nameLocation":"11369:8:160","nodeType":"VariableDeclaration","scope":76013,"src":"11361:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75985,"name":"address","nodeType":"ElementaryTypeName","src":"11361:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11344:34:160"},"returnParameters":{"id":75991,"nodeType":"ParameterList","parameters":[],"src":"11407:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76029,"nodeType":"FunctionDefinition","src":"11564:113:160","nodes":[],"body":{"id":76028,"nodeType":"Block","src":"11628:49:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76025,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76015,"src":"11664:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76021,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11638:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11638:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76023,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11649:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11638:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11656:7:160","memberName":"disable","nodeType":"MemberAccess","referencedDeclaration":88795,"src":"11638:25:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":76026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11638:32:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76027,"nodeType":"ExpressionStatement","src":"11638:32:160"}]},"baseFunctions":[74101],"functionSelector":"3ccce789","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76018,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76015,"src":"11621:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76019,"kind":"modifierInvocation","modifierName":{"id":76017,"name":"vaultOwner","nameLocations":["11610:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11610:10:160"},"nodeType":"ModifierInvocation","src":"11610:17:160"}],"name":"disableVault","nameLocation":"11573:12:160","parameters":{"id":76016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76015,"mutability":"mutable","name":"vault","nameLocation":"11594:5:160","nodeType":"VariableDeclaration","scope":76029,"src":"11586:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76014,"name":"address","nodeType":"ElementaryTypeName","src":"11586:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11585:15:160"},"returnParameters":{"id":76020,"nodeType":"ParameterList","parameters":[],"src":"11628:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76045,"nodeType":"FunctionDefinition","src":"11683:111:160","nodes":[],"body":{"id":76044,"nodeType":"Block","src":"11746:48:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":76041,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"11781:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76037,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11756:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11756:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11767:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11756:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11774:6:160","memberName":"enable","nodeType":"MemberAccess","referencedDeclaration":88748,"src":"11756:24:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$__$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address)"}},"id":76042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11756:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76043,"nodeType":"ExpressionStatement","src":"11756:31:160"}]},"baseFunctions":[74107],"functionSelector":"936f4330","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76034,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76031,"src":"11739:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76035,"kind":"modifierInvocation","modifierName":{"id":76033,"name":"vaultOwner","nameLocations":["11728:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11728:10:160"},"nodeType":"ModifierInvocation","src":"11728:17:160"}],"name":"enableVault","nameLocation":"11692:11:160","parameters":{"id":76032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76031,"mutability":"mutable","name":"vault","nameLocation":"11712:5:160","nodeType":"VariableDeclaration","scope":76045,"src":"11704:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76030,"name":"address","nodeType":"ElementaryTypeName","src":"11704:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11703:15:160"},"returnParameters":{"id":76036,"nodeType":"ParameterList","parameters":[],"src":"11746:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76093,"nodeType":"FunctionDefinition","src":"11800:355:160","nodes":[],"body":{"id":76092,"nodeType":"Block","src":"11867:288:160","nodes":[],"statements":[{"assignments":[76055],"declarations":[{"constant":false,"id":76055,"mutability":"mutable","name":"$","nameLocation":"11893:1:160","nodeType":"VariableDeclaration","scope":76092,"src":"11877:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76054,"nodeType":"UserDefinedTypeName","pathNode":{"id":76053,"name":"Storage","nameLocations":["11877:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"11877:7:160"},"referencedDeclaration":73928,"src":"11877:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76058,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76056,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"11897:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11897:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11877:30:160"},{"assignments":[null,76060],"declarations":[null,{"constant":false,"id":76060,"mutability":"mutable","name":"disabledTime","nameLocation":"11927:12:160","nodeType":"VariableDeclaration","scope":76092,"src":"11920:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76059,"name":"uint48","nodeType":"ElementaryTypeName","src":"11920:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76066,"initialValue":{"arguments":[{"id":76064,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76047,"src":"11961:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76061,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"11943:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11945:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"11943:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11952:8:160","memberName":"getTimes","nodeType":"MemberAccess","referencedDeclaration":88854,"src":"11943:17:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint48,uint48)"}},"id":76065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11943:24:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"11917:50:160"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76067,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76060,"src":"11982:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11998:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11982:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":76070,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"12003:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":76071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12008:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"12003:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":76072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12003:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76073,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76060,"src":"12022:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":76074,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"12037:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12039:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"12037:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12022:33:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"12003:52:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11982:73:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76083,"nodeType":"IfStatement","src":"11978:138:160","trueBody":{"id":76082,"nodeType":"Block","src":"12057:59:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76079,"name":"VaultGracePeriodNotPassed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73764,"src":"12078:25:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12078:27:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76081,"nodeType":"RevertStatement","src":"12071:34:160"}]}},{"expression":{"arguments":[{"id":76089,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76047,"src":"12142:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76084,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76055,"src":"12126:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12128:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"12126:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12135:6:160","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":56927,"src":"12126:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) returns (bool)"}},"id":76090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12126:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76091,"nodeType":"ExpressionStatement","src":"12126:22:160"}]},"baseFunctions":[74095],"functionSelector":"2633b70f","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76050,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76047,"src":"11860:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76051,"kind":"modifierInvocation","modifierName":{"id":76049,"name":"vaultOwner","nameLocations":["11849:10:160"],"nodeType":"IdentifierPath","referencedDeclaration":77252,"src":"11849:10:160"},"nodeType":"ModifierInvocation","src":"11849:17:160"}],"name":"unregisterVault","nameLocation":"11809:15:160","parameters":{"id":76048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76047,"mutability":"mutable","name":"vault","nameLocation":"11833:5:160","nodeType":"VariableDeclaration","scope":76093,"src":"11825:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76046,"name":"address","nodeType":"ElementaryTypeName","src":"11825:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11824:15:160"},"returnParameters":{"id":76052,"nodeType":"ParameterList","parameters":[],"src":"11867:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76289,"nodeType":"FunctionDefinition","src":"12161:1642:160","nodes":[],"body":{"id":76288,"nodeType":"Block","src":"12260:1543:160","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76104,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"12278:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12294:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12278:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76107,"name":"MaxValidatorsMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73836,"src":"12297:34:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12297:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76103,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12270:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12270:64:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76110,"nodeType":"ExpressionStatement","src":"12270:64:160"},{"assignments":[76115,76118],"declarations":[{"constant":false,"id":76115,"mutability":"mutable","name":"activeOperators","nameLocation":"12363:15:160","nodeType":"VariableDeclaration","scope":76288,"src":"12346:32:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76113,"name":"address","nodeType":"ElementaryTypeName","src":"12346:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76114,"nodeType":"ArrayTypeName","src":"12346:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":76118,"mutability":"mutable","name":"stakes","nameLocation":"12397:6:160","nodeType":"VariableDeclaration","scope":76288,"src":"12380:23:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":76116,"name":"uint256","nodeType":"ElementaryTypeName","src":"12380:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76117,"nodeType":"ArrayTypeName","src":"12380:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":76122,"initialValue":{"arguments":[{"id":76120,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76095,"src":"12433:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76119,"name":"getActiveOperatorsStakeAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76432,"src":"12407:25:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint48) view returns (address[] memory,uint256[] memory)"}},"id":76121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12407:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,uint256[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"12345:91:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76123,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12451:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12467:6:160","memberName":"length","nodeType":"MemberAccess","src":"12451:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":76125,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"12477:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:39:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76130,"nodeType":"IfStatement","src":"12447:92:160","trueBody":{"id":76129,"nodeType":"Block","src":"12492:47:160","statements":[{"expression":{"id":76127,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12513:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":76102,"id":76128,"nodeType":"Return","src":"12506:22:160"}]}},{"assignments":[76132],"declarations":[{"constant":false,"id":76132,"mutability":"mutable","name":"n","nameLocation":"12591:1:160","nodeType":"VariableDeclaration","scope":76288,"src":"12583:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76131,"name":"uint256","nodeType":"ElementaryTypeName","src":"12583:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76135,"initialValue":{"expression":{"id":76133,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12595:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12611:6:160","memberName":"length","nodeType":"MemberAccess","src":"12595:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12583:34:160"},{"body":{"id":76213,"nodeType":"Block","src":"12659:336:160","statements":[{"body":{"id":76211,"nodeType":"Block","src":"12713:272:160","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":76160,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12735:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76162,"indexExpression":{"id":76161,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12742:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12735:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"baseExpression":{"id":76163,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12747:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76167,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76164,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12754:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12758:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12754:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12747:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12735:25:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76210,"nodeType":"IfStatement","src":"12731:240:160","trueBody":{"id":76209,"nodeType":"Block","src":"12762:209:160","statements":[{"expression":{"id":76187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":76169,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12785:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76171,"indexExpression":{"id":76170,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12792:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12785:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":76172,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12796:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76176,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76173,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12803:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12807:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12803:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12796:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76177,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12784:26:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":76178,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12814:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76182,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76179,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12821:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12825:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12821:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12814:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":76183,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"12829:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76185,"indexExpression":{"id":76184,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12836:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12829:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":76186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12813:26:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"12784:55:160","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76188,"nodeType":"ExpressionStatement","src":"12784:55:160"},{"expression":{"id":76207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"baseExpression":{"id":76189,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12862:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76191,"indexExpression":{"id":76190,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12878:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12862:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":76192,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12882:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76196,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76193,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12898:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12902:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12898:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12882:22:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76197,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12861:44:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"baseExpression":{"id":76198,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12909:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76202,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76199,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12925:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":76200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12929:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12925:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12909:22:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":76203,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"12933:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76205,"indexExpression":{"id":76204,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12949:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12933:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":76206,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12908:44:160","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"12861:91:160","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76208,"nodeType":"ExpressionStatement","src":"12861:91:160"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76150,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12693:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76151,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76132,"src":"12697:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12701:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12697:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":76154,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76137,"src":"12705:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12697:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12693:13:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76212,"initializationExpression":{"assignments":[76147],"declarations":[{"constant":false,"id":76147,"mutability":"mutable","name":"j","nameLocation":"12686:1:160","nodeType":"VariableDeclaration","scope":76212,"src":"12678:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76146,"name":"uint256","nodeType":"ElementaryTypeName","src":"12678:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76149,"initialValue":{"hexValue":"30","id":76148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12690:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12678:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12708:3:160","subExpression":{"id":76157,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76147,"src":"12708:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76159,"nodeType":"ExpressionStatement","src":"12708:3:160"},"nodeType":"ForStatement","src":"12673:312:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76137,"src":"12647:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":76141,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76132,"src":"12651:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12647:5:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76214,"initializationExpression":{"assignments":[76137],"declarations":[{"constant":false,"id":76137,"mutability":"mutable","name":"i","nameLocation":"12640:1:160","nodeType":"VariableDeclaration","scope":76214,"src":"12632:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76136,"name":"uint256","nodeType":"ElementaryTypeName","src":"12632:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76139,"initialValue":{"hexValue":"30","id":76138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12644:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12632:13:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12654:3:160","subExpression":{"id":76143,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76137,"src":"12654:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76145,"nodeType":"ExpressionStatement","src":"12654:3:160"},"nodeType":"ForStatement","src":"12627:368:160"},{"assignments":[76216],"declarations":[{"constant":false,"id":76216,"mutability":"mutable","name":"sameStakeCount","nameLocation":"13070:14:160","nodeType":"VariableDeclaration","scope":76288,"src":"13062:22:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76215,"name":"uint256","nodeType":"ElementaryTypeName","src":"13062:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76218,"initialValue":{"hexValue":"31","id":76217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13087:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13062:26:160"},{"assignments":[76220],"declarations":[{"constant":false,"id":76220,"mutability":"mutable","name":"lastStake","nameLocation":"13106:9:160","nodeType":"VariableDeclaration","scope":76288,"src":"13098:17:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76219,"name":"uint256","nodeType":"ElementaryTypeName","src":"13098:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76226,"initialValue":{"baseExpression":{"id":76221,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"13118:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76225,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76222,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13125:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13141:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13125:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13118:25:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13098:45:160"},{"body":{"id":76250,"nodeType":"Block","src":"13218:123:160","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":76238,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76118,"src":"13236:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76240,"indexExpression":{"id":76239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"13243:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13236:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":76241,"name":"lastStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76220,"src":"13249:9:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13236:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76245,"nodeType":"IfStatement","src":"13232:66:160","trueBody":{"id":76244,"nodeType":"Block","src":"13260:38:160","statements":[{"id":76243,"nodeType":"Break","src":"13278:5:160"}]}},{"expression":{"id":76248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76246,"name":"sameStakeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"13311:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":76247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13329:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13311:19:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76249,"nodeType":"ExpressionStatement","src":"13311:19:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76231,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"13185:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76232,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13189:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13205:6:160","memberName":"length","nodeType":"MemberAccess","src":"13189:22:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13185:26:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76251,"initializationExpression":{"assignments":[76228],"declarations":[{"constant":false,"id":76228,"mutability":"mutable","name":"i","nameLocation":"13166:1:160","nodeType":"VariableDeclaration","scope":76251,"src":"13158:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76227,"name":"uint256","nodeType":"ElementaryTypeName","src":"13158:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76230,"initialValue":{"id":76229,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13170:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13158:25:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13213:3:160","subExpression":{"id":76235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76228,"src":"13213:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76237,"nodeType":"ExpressionStatement","src":"13213:3:160"},"nodeType":"ForStatement","src":"13153:188:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76252,"name":"sameStakeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"13355:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":76253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13372:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13355:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76284,"nodeType":"IfStatement","src":"13351:316:160","trueBody":{"id":76283,"nodeType":"Block","src":"13375:292:160","statements":[{"assignments":[76256],"declarations":[{"constant":false,"id":76256,"mutability":"mutable","name":"randomIndex","nameLocation":"13486:11:160","nodeType":"VariableDeclaration","scope":76283,"src":"13478:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76255,"name":"uint256","nodeType":"ElementaryTypeName","src":"13478:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76268,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":76262,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76095,"src":"13535:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":76260,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13518:3:160","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":76261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13522:12:160","memberName":"encodePacked","nodeType":"MemberAccess","src":"13518:16:160","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":76263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13518:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":76259,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13508:9:160","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":76264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13508:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":76258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13500:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76257,"name":"uint256","nodeType":"ElementaryTypeName","src":"13500:7:160","typeDescriptions":{}}},"id":76265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13500:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":76266,"name":"sameStakeCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76216,"src":"13543:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13500:57:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13478:79:160"},{"expression":{"id":76281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76269,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13571:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76273,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76270,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13587:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13603:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13587:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13571:34:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":76274,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13608:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76280,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76275,"name":"maxValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76097,"src":"13624:13:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":76276,"name":"randomIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76256,"src":"13640:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13624:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":76278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13654:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13624:31:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13608:48:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13571:85:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76282,"nodeType":"ExpressionStatement","src":"13571:85:160"}]}},{"AST":{"nativeSrc":"13702:62:160","nodeType":"YulBlock","src":"13702:62:160","statements":[{"expression":{"arguments":[{"name":"activeOperators","nativeSrc":"13723:15:160","nodeType":"YulIdentifier","src":"13723:15:160"},{"name":"maxValidators","nativeSrc":"13740:13:160","nodeType":"YulIdentifier","src":"13740:13:160"}],"functionName":{"name":"mstore","nativeSrc":"13716:6:160","nodeType":"YulIdentifier","src":"13716:6:160"},"nativeSrc":"13716:38:160","nodeType":"YulFunctionCall","src":"13716:38:160"},"nativeSrc":"13716:38:160","nodeType":"YulExpressionStatement","src":"13716:38:160"}]},"evmVersion":"osaka","externalReferences":[{"declaration":76115,"isOffset":false,"isSlot":false,"src":"13723:15:160","valueSize":1},{"declaration":76097,"isOffset":false,"isSlot":false,"src":"13740:13:160","valueSize":1}],"flags":["memory-safe"],"id":76285,"nodeType":"InlineAssembly","src":"13677:87:160"},{"expression":{"id":76286,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76115,"src":"13781:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":76102,"id":76287,"nodeType":"Return","src":"13774:22:160"}]},"baseFunctions":[74039],"functionSelector":"6e5c7932","implemented":true,"kind":"function","modifiers":[],"name":"makeElectionAt","nameLocation":"12170:14:160","parameters":{"id":76098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76095,"mutability":"mutable","name":"ts","nameLocation":"12192:2:160","nodeType":"VariableDeclaration","scope":76289,"src":"12185:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76094,"name":"uint48","nodeType":"ElementaryTypeName","src":"12185:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76097,"mutability":"mutable","name":"maxValidators","nameLocation":"12204:13:160","nodeType":"VariableDeclaration","scope":76289,"src":"12196:21:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76096,"name":"uint256","nodeType":"ElementaryTypeName","src":"12196:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12184:34:160"},"returnParameters":{"id":76102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76289,"src":"12242:16:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76099,"name":"address","nodeType":"ElementaryTypeName","src":"12242:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76100,"nodeType":"ArrayTypeName","src":"12242:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12241:18:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":76330,"nodeType":"FunctionDefinition","src":"13809:372:160","nodes":[],"body":{"id":76329,"nodeType":"Block","src":"13923:258:160","nodes":[],"statements":[{"assignments":[76302,76304],"declarations":[{"constant":false,"id":76302,"mutability":"mutable","name":"enabledTime","nameLocation":"13941:11:160","nodeType":"VariableDeclaration","scope":76329,"src":"13934:18:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76301,"name":"uint48","nodeType":"ElementaryTypeName","src":"13934:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76304,"mutability":"mutable","name":"disabledTime","nameLocation":"13961:12:160","nodeType":"VariableDeclaration","scope":76329,"src":"13954:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76303,"name":"uint48","nodeType":"ElementaryTypeName","src":"13954:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76311,"initialValue":{"arguments":[{"id":76309,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76291,"src":"14007:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76305,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"13977:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13977:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13988:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"13977:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13998:8:160","memberName":"getTimes","nodeType":"MemberAccess","referencedDeclaration":88854,"src":"13977:29:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (uint48,uint48)"}},"id":76310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13977:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint48_$","typeString":"tuple(uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"13933:83:160"},{"condition":{"id":76317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14030:44:160","subExpression":{"arguments":[{"id":76313,"name":"enabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76302,"src":"14044:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76314,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76304,"src":"14057:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76315,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"14071:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76312,"name":"_wasActiveAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76717,"src":"14031:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$_t_uint48_$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48,uint48,uint48) pure returns (bool)"}},"id":76316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14031:43:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76321,"nodeType":"IfStatement","src":"14026:83:160","trueBody":{"id":76320,"nodeType":"Block","src":"14076:33:160","statements":[{"expression":{"hexValue":"30","id":76318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14097:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":76300,"id":76319,"nodeType":"Return","src":"14090:8:160"}]}},{"expression":{"id":76327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76322,"name":"stake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76299,"src":"14119:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76324,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76291,"src":"14161:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76325,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"14171:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76323,"name":"_collectOperatorStakeFromVaultsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76688,"src":"14127:33:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint48_$returns$_t_uint256_$","typeString":"function (address,uint48) view returns (uint256)"}},"id":76326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14127:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14119:55:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76328,"nodeType":"ExpressionStatement","src":"14119:55:160"}]},"baseFunctions":[74049],"functionSelector":"d99ddfc7","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76296,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76293,"src":"13895:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":76297,"kind":"modifierInvocation","modifierName":{"id":76295,"name":"validTimestamp","nameLocations":["13880:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":77146,"src":"13880:14:160"},"nodeType":"ModifierInvocation","src":"13880:18:160"}],"name":"getOperatorStakeAt","nameLocation":"13818:18:160","parameters":{"id":76294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76291,"mutability":"mutable","name":"operator","nameLocation":"13845:8:160","nodeType":"VariableDeclaration","scope":76330,"src":"13837:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76290,"name":"address","nodeType":"ElementaryTypeName","src":"13837:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76293,"mutability":"mutable","name":"ts","nameLocation":"13862:2:160","nodeType":"VariableDeclaration","scope":76330,"src":"13855:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76292,"name":"uint48","nodeType":"ElementaryTypeName","src":"13855:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"13836:29:160"},"returnParameters":{"id":76300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76299,"mutability":"mutable","name":"stake","nameLocation":"13916:5:160","nodeType":"VariableDeclaration","scope":76330,"src":"13908:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76298,"name":"uint256","nodeType":"ElementaryTypeName","src":"13908:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13907:15:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":76432,"nodeType":"FunctionDefinition","src":"14224:940:160","nodes":[],"body":{"id":76431,"nodeType":"Block","src":"14405:759:160","nodes":[],"statements":[{"assignments":[76346],"declarations":[{"constant":false,"id":76346,"mutability":"mutable","name":"$","nameLocation":"14431:1:160","nodeType":"VariableDeclaration","scope":76431,"src":"14415:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76345,"nodeType":"UserDefinedTypeName","pathNode":{"id":76344,"name":"Storage","nameLocations":["14415:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"14415:7:160"},"referencedDeclaration":73928,"src":"14415:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76349,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76347,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"14435:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14435:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14415:30:160"},{"expression":{"id":76359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76350,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76339,"src":"14455:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76354,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14487:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14489:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14487:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14499:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"14487:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14487:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14473:13:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":76351,"name":"address","nodeType":"ElementaryTypeName","src":"14477:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76352,"nodeType":"ArrayTypeName","src":"14477:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":76358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14473:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"14455:53:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76360,"nodeType":"ExpressionStatement","src":"14455:53:160"},{"expression":{"id":76370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76361,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"14518:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76365,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14541:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14543:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14541:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14553:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"14541:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14541:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":76364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14527:13:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":76362,"name":"uint256","nodeType":"ElementaryTypeName","src":"14531:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76363,"nodeType":"ArrayTypeName","src":"14531:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":76369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14527:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14518:44:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76371,"nodeType":"ExpressionStatement","src":"14518:44:160"},{"assignments":[76373],"declarations":[{"constant":false,"id":76373,"mutability":"mutable","name":"operatorIdx","nameLocation":"14581:11:160","nodeType":"VariableDeclaration","scope":76431,"src":"14573:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76372,"name":"uint256","nodeType":"ElementaryTypeName","src":"14573:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76375,"initialValue":{"hexValue":"30","id":76374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14595:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14573:23:160"},{"body":{"id":76428,"nodeType":"Block","src":"14654:369:160","statements":[{"assignments":[76389,76391,76393],"declarations":[{"constant":false,"id":76389,"mutability":"mutable","name":"operator","nameLocation":"14677:8:160","nodeType":"VariableDeclaration","scope":76428,"src":"14669:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76388,"name":"address","nodeType":"ElementaryTypeName","src":"14669:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76391,"mutability":"mutable","name":"enabled","nameLocation":"14694:7:160","nodeType":"VariableDeclaration","scope":76428,"src":"14687:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76390,"name":"uint48","nodeType":"ElementaryTypeName","src":"14687:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76393,"mutability":"mutable","name":"disabled","nameLocation":"14710:8:160","nodeType":"VariableDeclaration","scope":76428,"src":"14703:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76392,"name":"uint48","nodeType":"ElementaryTypeName","src":"14703:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76399,"initialValue":{"arguments":[{"id":76397,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76377,"src":"14746:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":76394,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14722:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14724:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14722:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14734:11:160","memberName":"atWithTimes","nodeType":"MemberAccess","referencedDeclaration":88830,"src":"14722:23:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint48,uint48)"}},"id":76398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14722:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$_t_uint48_$","typeString":"tuple(address,uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"14668:80:160"},{"condition":{"id":76405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14767:36:160","subExpression":{"arguments":[{"id":76401,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76391,"src":"14781:7:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76402,"name":"disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76393,"src":"14790:8:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76403,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76332,"src":"14800:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76400,"name":"_wasActiveAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76717,"src":"14768:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$_t_uint48_$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48,uint48,uint48) pure returns (bool)"}},"id":76404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14768:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76408,"nodeType":"IfStatement","src":"14763:83:160","trueBody":{"id":76407,"nodeType":"Block","src":"14805:41:160","statements":[{"id":76406,"nodeType":"Continue","src":"14823:8:160"}]}},{"expression":{"id":76413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76409,"name":"activeOperators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76339,"src":"14860:15:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":76411,"indexExpression":{"id":76410,"name":"operatorIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"14876:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14860:28:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":76412,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76389,"src":"14891:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14860:39:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76414,"nodeType":"ExpressionStatement","src":"14860:39:160"},{"expression":{"id":76422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":76415,"name":"stakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76342,"src":"14913:6:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":76417,"indexExpression":{"id":76416,"name":"operatorIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"14920:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14913:19:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":76419,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76389,"src":"14969:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76420,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76332,"src":"14979:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76418,"name":"_collectOperatorStakeFromVaultsAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76688,"src":"14935:33:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint48_$returns$_t_uint256_$","typeString":"function (address,uint48) view returns (uint256)"}},"id":76421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14935:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14913:69:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76423,"nodeType":"ExpressionStatement","src":"14913:69:160"},{"expression":{"id":76426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76424,"name":"operatorIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76373,"src":"14996:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":76425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15011:1:160","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14996:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76427,"nodeType":"ExpressionStatement","src":"14996:16:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76377,"src":"14623:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76380,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76346,"src":"14627:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14629:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"14627:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14639:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"14627:18:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14627:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14623:24:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76429,"initializationExpression":{"assignments":[76377],"declarations":[{"constant":false,"id":76377,"mutability":"mutable","name":"i","nameLocation":"14620:1:160","nodeType":"VariableDeclaration","scope":76429,"src":"14612:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76376,"name":"uint256","nodeType":"ElementaryTypeName","src":"14612:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76378,"nodeType":"VariableDeclarationStatement","src":"14612:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14649:3:160","subExpression":{"id":76385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76377,"src":"14651:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76387,"nodeType":"ExpressionStatement","src":"14649:3:160"},"nodeType":"ForStatement","src":"14607:416:160"},{"AST":{"nativeSrc":"15058:100:160","nodeType":"YulBlock","src":"15058:100:160","statements":[{"expression":{"arguments":[{"name":"activeOperators","nativeSrc":"15079:15:160","nodeType":"YulIdentifier","src":"15079:15:160"},{"name":"operatorIdx","nativeSrc":"15096:11:160","nodeType":"YulIdentifier","src":"15096:11:160"}],"functionName":{"name":"mstore","nativeSrc":"15072:6:160","nodeType":"YulIdentifier","src":"15072:6:160"},"nativeSrc":"15072:36:160","nodeType":"YulFunctionCall","src":"15072:36:160"},"nativeSrc":"15072:36:160","nodeType":"YulExpressionStatement","src":"15072:36:160"},{"expression":{"arguments":[{"name":"stakes","nativeSrc":"15128:6:160","nodeType":"YulIdentifier","src":"15128:6:160"},{"name":"operatorIdx","nativeSrc":"15136:11:160","nodeType":"YulIdentifier","src":"15136:11:160"}],"functionName":{"name":"mstore","nativeSrc":"15121:6:160","nodeType":"YulIdentifier","src":"15121:6:160"},"nativeSrc":"15121:27:160","nodeType":"YulFunctionCall","src":"15121:27:160"},"nativeSrc":"15121:27:160","nodeType":"YulExpressionStatement","src":"15121:27:160"}]},"evmVersion":"osaka","externalReferences":[{"declaration":76339,"isOffset":false,"isSlot":false,"src":"15079:15:160","valueSize":1},{"declaration":76373,"isOffset":false,"isSlot":false,"src":"15096:11:160","valueSize":1},{"declaration":76373,"isOffset":false,"isSlot":false,"src":"15136:11:160","valueSize":1},{"declaration":76342,"isOffset":false,"isSlot":false,"src":"15128:6:160","valueSize":1}],"flags":["memory-safe"],"id":76430,"nodeType":"InlineAssembly","src":"15033:125:160"}]},"functionSelector":"b5e5ad12","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":76335,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76332,"src":"14321:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":76336,"kind":"modifierInvocation","modifierName":{"id":76334,"name":"validTimestamp","nameLocations":["14306:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":77146,"src":"14306:14:160"},"nodeType":"ModifierInvocation","src":"14306:18:160"}],"name":"getActiveOperatorsStakeAt","nameLocation":"14233:25:160","parameters":{"id":76333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76332,"mutability":"mutable","name":"ts","nameLocation":"14266:2:160","nodeType":"VariableDeclaration","scope":76432,"src":"14259:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76331,"name":"uint48","nodeType":"ElementaryTypeName","src":"14259:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14258:11:160"},"returnParameters":{"id":76343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76339,"mutability":"mutable","name":"activeOperators","nameLocation":"14359:15:160","nodeType":"VariableDeclaration","scope":76432,"src":"14342:32:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":76337,"name":"address","nodeType":"ElementaryTypeName","src":"14342:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":76338,"nodeType":"ArrayTypeName","src":"14342:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":76342,"mutability":"mutable","name":"stakes","nameLocation":"14393:6:160","nodeType":"VariableDeclaration","scope":76432,"src":"14376:23:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":76340,"name":"uint256","nodeType":"ElementaryTypeName","src":"14376:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76341,"nodeType":"ArrayTypeName","src":"14376:9:160","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14341:59:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":76548,"nodeType":"FunctionDefinition","src":"15170:952:160","nodes":[],"body":{"id":76547,"nodeType":"Block","src":"15228:894:160","nodes":[],"statements":[{"assignments":[76441],"declarations":[{"constant":false,"id":76441,"mutability":"mutable","name":"$","nameLocation":"15254:1:160","nodeType":"VariableDeclaration","scope":76547,"src":"15238:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76440,"nodeType":"UserDefinedTypeName","pathNode":{"id":76439,"name":"Storage","nameLocations":["15238:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"15238:7:160"},"referencedDeclaration":73928,"src":"15238:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76444,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76442,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"15258:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15258:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15238:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15283:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15287:6:160","memberName":"sender","nodeType":"MemberAccess","src":"15283:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":76447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"15297:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15299:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"15297:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":76449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15309:18:160","memberName":"roleSlashRequester","nodeType":"MemberAccess","referencedDeclaration":87720,"src":"15297:30:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15283:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76455,"nodeType":"IfStatement","src":"15279:101:160","trueBody":{"id":76454,"nodeType":"Block","src":"15329:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76451,"name":"NotSlashRequester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73824,"src":"15350:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15350:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76453,"nodeType":"RevertStatement","src":"15343:26:160"}]}},{"body":{"id":76545,"nodeType":"Block","src":"15428:688:160","statements":[{"assignments":[76468],"declarations":[{"constant":false,"id":76468,"mutability":"mutable","name":"slashData","nameLocation":"15461:9:160","nodeType":"VariableDeclaration","scope":76545,"src":"15442:28:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData"},"typeName":{"id":76467,"nodeType":"UserDefinedTypeName","pathNode":{"id":76466,"name":"SlashData","nameLocations":["15442:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":73942,"src":"15442:9:160"},"referencedDeclaration":73942,"src":"15442:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_storage_ptr","typeString":"struct IMiddleware.SlashData"}},"visibility":"internal"}],"id":76472,"initialValue":{"baseExpression":{"id":76469,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76436,"src":"15473:4:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}},"id":76471,"indexExpression":{"id":76470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76457,"src":"15478:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15473:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"nodeType":"VariableDeclarationStatement","src":"15442:38:160"},{"condition":{"id":76479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15498:41:160","subExpression":{"arguments":[{"expression":{"id":76476,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"15520:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15530:8:160","memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":73935,"src":"15520:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76473,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"15499:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15501:9:160","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":73924,"src":"15499:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15511:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"15499:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":76478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15499:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76484,"nodeType":"IfStatement","src":"15494:110:160","trueBody":{"id":76483,"nodeType":"Block","src":"15541:63:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76480,"name":"NotRegisteredOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73812,"src":"15566:21:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15566:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76482,"nodeType":"RevertStatement","src":"15559:30:160"}]}},{"body":{"id":76543,"nodeType":"Block","src":"15668:438:160","statements":[{"assignments":[76498],"declarations":[{"constant":false,"id":76498,"mutability":"mutable","name":"vaultData","nameLocation":"15710:9:160","nodeType":"VariableDeclaration","scope":76543,"src":"15686:33:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData"},"typeName":{"id":76497,"nodeType":"UserDefinedTypeName","pathNode":{"id":76496,"name":"VaultSlashData","nameLocations":["15686:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":73933,"src":"15686:14:160"},"referencedDeclaration":73933,"src":"15686:14:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_storage_ptr","typeString":"struct IMiddleware.VaultSlashData"}},"visibility":"internal"}],"id":76503,"initialValue":{"baseExpression":{"expression":{"id":76499,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"15722:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15732:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73941,"src":"15722:16:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_VaultSlashData_$73933_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata[] calldata"}},"id":76502,"indexExpression":{"id":76501,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76486,"src":"15739:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15722:19:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"nodeType":"VariableDeclarationStatement","src":"15686:55:160"},{"condition":{"id":76510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15764:35:160","subExpression":{"arguments":[{"expression":{"id":76507,"name":"vaultData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76498,"src":"15783:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"id":76508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15793:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73930,"src":"15783:15:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":76504,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"15765:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15767:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"15765:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76506,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15774:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"15765:17:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":76509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15765:34:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76515,"nodeType":"IfStatement","src":"15760:109:160","trueBody":{"id":76514,"nodeType":"Block","src":"15801:68:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76511,"name":"NotRegisteredVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73809,"src":"15830:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15830:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76513,"nodeType":"RevertStatement","src":"15823:27:160"}]}},{"assignments":[76517],"declarations":[{"constant":false,"id":76517,"mutability":"mutable","name":"slasher","nameLocation":"15895:7:160","nodeType":"VariableDeclaration","scope":76543,"src":"15887:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76516,"name":"address","nodeType":"ElementaryTypeName","src":"15887:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76524,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":76519,"name":"vaultData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76498,"src":"15912:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"id":76520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15922:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73930,"src":"15912:15:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76518,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"15905:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15905:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15929:7:160","memberName":"slasher","nodeType":"MemberAccess","referencedDeclaration":66928,"src":"15905:31:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15905:33:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15887:51:160"},{"expression":{"arguments":[{"expression":{"id":76529,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76441,"src":"16012:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16014:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"16012:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":76531,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"16026:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16036:8:160","memberName":"operator","nodeType":"MemberAccess","referencedDeclaration":73935,"src":"16026:18:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":76533,"name":"vaultData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76498,"src":"16046:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_VaultSlashData_$73933_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata"}},"id":76534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16056:6:160","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":73932,"src":"16046:16:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":76535,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"16064:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16074:2:160","memberName":"ts","nodeType":"MemberAccess","referencedDeclaration":73937,"src":"16064:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[{"hexValue":"30","id":76539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16088:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16078:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":76537,"name":"bytes","nodeType":"ElementaryTypeName","src":"16082:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":76540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16078:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":76526,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76517,"src":"15969:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76525,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"15956:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15956:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15999:12:160","memberName":"requestSlash","nodeType":"MemberAccess","referencedDeclaration":66489,"src":"15956:55:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint48_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes32,address,uint256,uint48,bytes memory) external returns (uint256)"}},"id":76541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15956:135:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76542,"nodeType":"ExpressionStatement","src":"15956:135:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76488,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76486,"src":"15634:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":76489,"name":"slashData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76468,"src":"15638:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata"}},"id":76490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15648:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73941,"src":"15638:16:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_VaultSlashData_$73933_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.VaultSlashData calldata[] calldata"}},"id":76491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15655:6:160","memberName":"length","nodeType":"MemberAccess","src":"15638:23:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15634:27:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76544,"initializationExpression":{"assignments":[76486],"declarations":[{"constant":false,"id":76486,"mutability":"mutable","name":"j","nameLocation":"15631:1:160","nodeType":"VariableDeclaration","scope":76544,"src":"15623:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76485,"name":"uint256","nodeType":"ElementaryTypeName","src":"15623:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76487,"nodeType":"VariableDeclarationStatement","src":"15623:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15663:3:160","subExpression":{"id":76493,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76486,"src":"15665:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76495,"nodeType":"ExpressionStatement","src":"15663:3:160"},"nodeType":"ForStatement","src":"15618:488:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76459,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76457,"src":"15406:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76460,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76436,"src":"15410:4:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData calldata[] calldata"}},"id":76461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15415:6:160","memberName":"length","nodeType":"MemberAccess","src":"15410:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15406:15:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76546,"initializationExpression":{"assignments":[76457],"declarations":[{"constant":false,"id":76457,"mutability":"mutable","name":"i","nameLocation":"15403:1:160","nodeType":"VariableDeclaration","scope":76546,"src":"15395:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76456,"name":"uint256","nodeType":"ElementaryTypeName","src":"15395:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76458,"nodeType":"VariableDeclarationStatement","src":"15395:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15423:3:160","subExpression":{"id":76463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76457,"src":"15425:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76465,"nodeType":"ExpressionStatement","src":"15423:3:160"},"nodeType":"ForStatement","src":"15390:726:160"}]},"baseFunctions":[74056],"functionSelector":"0a71094c","implemented":true,"kind":"function","modifiers":[],"name":"requestSlash","nameLocation":"15179:12:160","parameters":{"id":76437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76436,"mutability":"mutable","name":"data","nameLocation":"15213:4:160","nodeType":"VariableDeclaration","scope":76548,"src":"15192:25:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData[]"},"typeName":{"baseType":{"id":76434,"nodeType":"UserDefinedTypeName","pathNode":{"id":76433,"name":"SlashData","nameLocations":["15192:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":73942,"src":"15192:9:160"},"referencedDeclaration":73942,"src":"15192:9:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_storage_ptr","typeString":"struct IMiddleware.SlashData"}},"id":76435,"nodeType":"ArrayTypeName","src":"15192:11:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashData[]"}},"visibility":"internal"}],"src":"15191:27:160"},"returnParameters":{"id":76438,"nodeType":"ParameterList","parameters":[],"src":"15228:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76617,"nodeType":"FunctionDefinition","src":"16128:528:160","nodes":[],"body":{"id":76616,"nodeType":"Block","src":"16195:461:160","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76555,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16209:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":76556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16213:6:160","memberName":"sender","nodeType":"MemberAccess","src":"16209:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76557,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"16223:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16223:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16234:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"16223:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":76560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16244:17:160","memberName":"roleSlashExecutor","nodeType":"MemberAccess","referencedDeclaration":87722,"src":"16223:38:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16209:52:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76566,"nodeType":"IfStatement","src":"16205:108:160","trueBody":{"id":76565,"nodeType":"Block","src":"16263:50:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76562,"name":"NotSlashExecutor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73827,"src":"16284:16:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16284:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76564,"nodeType":"RevertStatement","src":"16277:25:160"}]}},{"body":{"id":76614,"nodeType":"Block","src":"16364:286:160","statements":[{"assignments":[76579],"declarations":[{"constant":false,"id":76579,"mutability":"mutable","name":"slash","nameLocation":"16403:5:160","nodeType":"VariableDeclaration","scope":76614,"src":"16378:30:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier"},"typeName":{"id":76578,"nodeType":"UserDefinedTypeName","pathNode":{"id":76577,"name":"SlashIdentifier","nameLocations":["16378:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":73947,"src":"16378:15:160"},"referencedDeclaration":73947,"src":"16378:15:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier"}},"visibility":"internal"}],"id":76583,"initialValue":{"baseExpression":{"id":76580,"name":"slashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76552,"src":"16411:7:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}},"id":76582,"indexExpression":{"id":76581,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"16419:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16411:10:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"nodeType":"VariableDeclarationStatement","src":"16378:43:160"},{"condition":{"id":76591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16440:40:160","subExpression":{"arguments":[{"expression":{"id":76588,"name":"slash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76579,"src":"16468:5:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"id":76589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16474:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73944,"src":"16468:11:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":76584,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"16441:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16441:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16452:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"16441:17:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16459:8:160","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":56967,"src":"16441:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,address) view returns (bool)"}},"id":76590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16441:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76596,"nodeType":"IfStatement","src":"16436:106:160","trueBody":{"id":76595,"nodeType":"Block","src":"16482:60:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76592,"name":"NotRegisteredVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73809,"src":"16507:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16507:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76594,"nodeType":"RevertStatement","src":"16500:27:160"}]}},{"expression":{"arguments":[{"expression":{"id":76606,"name":"slash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76579,"src":"16613:5:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"id":76607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16619:5:160","memberName":"index","nodeType":"MemberAccess","referencedDeclaration":73946,"src":"16613:11:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":76610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16636:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16626:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":76608,"name":"bytes","nodeType":"ElementaryTypeName","src":"16630:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":76611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16626:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":76599,"name":"slash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76579,"src":"16576:5:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata"}},"id":76600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16582:5:160","memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":73944,"src":"16576:11:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76598,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"16569:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16569:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16589:7:160","memberName":"slasher","nodeType":"MemberAccess","referencedDeclaration":66928,"src":"16569:27:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16569:29:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76597,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"16556:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16556:43:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16600:12:160","memberName":"executeSlash","nodeType":"MemberAccess","referencedDeclaration":66499,"src":"16556:56:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (uint256,bytes memory) external returns (uint256)"}},"id":76612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16556:83:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76613,"nodeType":"ExpressionStatement","src":"16556:83:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76570,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"16339:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76571,"name":"slashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76552,"src":"16343:7:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier calldata[] calldata"}},"id":76572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16351:6:160","memberName":"length","nodeType":"MemberAccess","src":"16343:14:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16339:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76615,"initializationExpression":{"assignments":[76568],"declarations":[{"constant":false,"id":76568,"mutability":"mutable","name":"i","nameLocation":"16336:1:160","nodeType":"VariableDeclaration","scope":76615,"src":"16328:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76567,"name":"uint256","nodeType":"ElementaryTypeName","src":"16328:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76569,"nodeType":"VariableDeclarationStatement","src":"16328:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16359:3:160","subExpression":{"id":76574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76568,"src":"16361:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76576,"nodeType":"ExpressionStatement","src":"16359:3:160"},"nodeType":"ForStatement","src":"16323:327:160"}]},"baseFunctions":[74063],"functionSelector":"af962995","implemented":true,"kind":"function","modifiers":[],"name":"executeSlash","nameLocation":"16137:12:160","parameters":{"id":76553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76552,"mutability":"mutable","name":"slashes","nameLocation":"16177:7:160","nodeType":"VariableDeclaration","scope":76617,"src":"16150:34:160","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"},"typeName":{"baseType":{"id":76550,"nodeType":"UserDefinedTypeName","pathNode":{"id":76549,"name":"SlashIdentifier","nameLocations":["16150:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":73947,"src":"16150:15:160"},"referencedDeclaration":73947,"src":"16150:15:160","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier"}},"id":76551,"nodeType":"ArrayTypeName","src":"16150:17:160","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"}},"visibility":"internal"}],"src":"16149:36:160"},"returnParameters":{"id":76554,"nodeType":"ParameterList","parameters":[],"src":"16195:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":76688,"nodeType":"FunctionDefinition","src":"16662:556:160","nodes":[],"body":{"id":76687,"nodeType":"Block","src":"16771:447:160","nodes":[],"statements":[{"assignments":[76628],"declarations":[{"constant":false,"id":76628,"mutability":"mutable","name":"$","nameLocation":"16797:1:160","nodeType":"VariableDeclaration","scope":76687,"src":"16781:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76627,"nodeType":"UserDefinedTypeName","pathNode":{"id":76626,"name":"Storage","nameLocations":["16781:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"16781:7:160"},"referencedDeclaration":73928,"src":"16781:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76631,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76629,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"16801:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16801:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16781:30:160"},{"body":{"id":76685,"nodeType":"Block","src":"16865:347:160","statements":[{"assignments":[76645,76647,76649],"declarations":[{"constant":false,"id":76645,"mutability":"mutable","name":"vault","nameLocation":"16888:5:160","nodeType":"VariableDeclaration","scope":76685,"src":"16880:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76644,"name":"address","nodeType":"ElementaryTypeName","src":"16880:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76647,"mutability":"mutable","name":"vaultEnabledTime","nameLocation":"16902:16:160","nodeType":"VariableDeclaration","scope":76685,"src":"16895:23:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76646,"name":"uint48","nodeType":"ElementaryTypeName","src":"16895:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76649,"mutability":"mutable","name":"vaultDisabledTime","nameLocation":"16927:17:160","nodeType":"VariableDeclaration","scope":76685,"src":"16920:24:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76648,"name":"uint48","nodeType":"ElementaryTypeName","src":"16920:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76655,"initialValue":{"arguments":[{"id":76653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76633,"src":"16969:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":76650,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76628,"src":"16948:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16950:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"16948:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76652,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16957:11:160","memberName":"atWithTimes","nodeType":"MemberAccess","referencedDeclaration":88830,"src":"16948:20:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$_t_uint256_$returns$_t_address_$_t_uint48_$_t_uint48_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer,uint256) view returns (address,uint48,uint48)"}},"id":76654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16948:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint48_$_t_uint48_$","typeString":"tuple(address,uint48,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"16879:92:160"},{"condition":{"id":76661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16990:54:160","subExpression":{"arguments":[{"id":76657,"name":"vaultEnabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76647,"src":"17004:16:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76658,"name":"vaultDisabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76649,"src":"17022:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":76659,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76621,"src":"17041:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":76656,"name":"_wasActiveAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76717,"src":"16991:12:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint48_$_t_uint48_$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48,uint48,uint48) pure returns (bool)"}},"id":76660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16991:53:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76664,"nodeType":"IfStatement","src":"16986:101:160","trueBody":{"id":76663,"nodeType":"Block","src":"17046:41:160","statements":[{"id":76662,"nodeType":"Continue","src":"17064:8:160"}]}},{"expression":{"id":76683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":76665,"name":"stake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76624,"src":"17101:5:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"expression":{"id":76674,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76628,"src":"17160:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17162:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"17160:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":76676,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76619,"src":"17174:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":76677,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76621,"src":"17184:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[{"hexValue":"30","id":76680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17198:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17188:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":76678,"name":"bytes","nodeType":"ElementaryTypeName","src":"17192:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":76681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17188:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76668,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76645,"src":"17132:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76667,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"17125:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17125:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17139:9:160","memberName":"delegator","nodeType":"MemberAccess","referencedDeclaration":66916,"src":"17125:23:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17125:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76666,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"17110:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseDelegator_$65506_$","typeString":"type(contract IBaseDelegator)"}},"id":76672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17110:41:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17152:7:160","memberName":"stakeAt","nodeType":"MemberAccess","referencedDeclaration":65467,"src":"17110:49:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_uint48_$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes32,address,uint48,bytes memory) view external returns (uint256)"}},"id":76682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17110:91:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17101:100:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76684,"nodeType":"ExpressionStatement","src":"17101:100:160"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76635,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76633,"src":"16837:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":76636,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76628,"src":"16841:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16843:6:160","memberName":"vaults","nodeType":"MemberAccess","referencedDeclaration":73927,"src":"16841:8:160","typeDescriptions":{"typeIdentifier":"t_struct$_AddressToUintMap_$56867_storage","typeString":"struct EnumerableMap.AddressToUintMap storage ref"}},"id":76638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16850:6:160","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":56982,"src":"16841:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressToUintMap_$56867_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressToUintMap_$56867_storage_ptr_$","typeString":"function (struct EnumerableMap.AddressToUintMap storage pointer) view returns (uint256)"}},"id":76639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16841:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16837:21:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76686,"initializationExpression":{"assignments":[76633],"declarations":[{"constant":false,"id":76633,"mutability":"mutable","name":"i","nameLocation":"16834:1:160","nodeType":"VariableDeclaration","scope":76686,"src":"16826:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76632,"name":"uint256","nodeType":"ElementaryTypeName","src":"16826:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":76634,"nodeType":"VariableDeclarationStatement","src":"16826:9:160"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":76642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16860:3:160","subExpression":{"id":76641,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76633,"src":"16862:1:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":76643,"nodeType":"ExpressionStatement","src":"16860:3:160"},"nodeType":"ForStatement","src":"16821:391:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_collectOperatorStakeFromVaultsAt","nameLocation":"16671:33:160","parameters":{"id":76622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76619,"mutability":"mutable","name":"operator","nameLocation":"16713:8:160","nodeType":"VariableDeclaration","scope":76688,"src":"16705:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76618,"name":"address","nodeType":"ElementaryTypeName","src":"16705:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76621,"mutability":"mutable","name":"ts","nameLocation":"16730:2:160","nodeType":"VariableDeclaration","scope":76688,"src":"16723:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76620,"name":"uint48","nodeType":"ElementaryTypeName","src":"16723:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"16704:29:160"},"returnParameters":{"id":76625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76624,"mutability":"mutable","name":"stake","nameLocation":"16764:5:160","nodeType":"VariableDeclaration","scope":76688,"src":"16756:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76623,"name":"uint256","nodeType":"ElementaryTypeName","src":"16756:7:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16755:15:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":76717,"nodeType":"FunctionDefinition","src":"17224:208:160","nodes":[],"body":{"id":76716,"nodeType":"Block","src":"17326:106:160","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76699,"name":"enabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"17343:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":76700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17358:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17343:16:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76702,"name":"enabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76690,"src":"17363:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":76703,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76694,"src":"17378:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"17363:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17343:37:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":76712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76706,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"17385:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":76707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17401:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17385:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76709,"name":"disabledTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76692,"src":"17406:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":76710,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76694,"src":"17422:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"17406:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17385:39:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":76713,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17384:41:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17343:82:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":76698,"id":76715,"nodeType":"Return","src":"17336:89:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_wasActiveAt","nameLocation":"17233:12:160","parameters":{"id":76695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76690,"mutability":"mutable","name":"enabledTime","nameLocation":"17253:11:160","nodeType":"VariableDeclaration","scope":76717,"src":"17246:18:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76689,"name":"uint48","nodeType":"ElementaryTypeName","src":"17246:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76692,"mutability":"mutable","name":"disabledTime","nameLocation":"17273:12:160","nodeType":"VariableDeclaration","scope":76717,"src":"17266:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76691,"name":"uint48","nodeType":"ElementaryTypeName","src":"17266:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":76694,"mutability":"mutable","name":"ts","nameLocation":"17294:2:160","nodeType":"VariableDeclaration","scope":76717,"src":"17287:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76693,"name":"uint48","nodeType":"ElementaryTypeName","src":"17287:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17245:52:160"},"returnParameters":{"id":76698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76717,"src":"17320:4:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":76696,"name":"bool","nodeType":"ElementaryTypeName","src":"17320:4:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17319:6:160"},"scope":77273,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":76734,"nodeType":"FunctionDefinition","src":"17477:154:160","nodes":[],"body":{"id":76733,"nodeType":"Block","src":"17533:98:160","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76722,"name":"hook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76719,"src":"17547:4:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":76725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17563:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":76724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17555:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":76723,"name":"address","nodeType":"ElementaryTypeName","src":"17555:7:160","typeDescriptions":{}}},"id":76726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17555:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17547:18:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76732,"nodeType":"IfStatement","src":"17543:82:160","trueBody":{"id":76731,"nodeType":"Block","src":"17567:58:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76728,"name":"UnsupportedDelegatorHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73779,"src":"17588:24:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17588:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76730,"nodeType":"RevertStatement","src":"17581:33:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_delegatorHookCheck","nameLocation":"17486:19:160","parameters":{"id":76720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76719,"mutability":"mutable","name":"hook","nameLocation":"17514:4:160","nodeType":"VariableDeclaration","scope":76734,"src":"17506:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76718,"name":"address","nodeType":"ElementaryTypeName","src":"17506:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17505:14:160"},"returnParameters":{"id":76721,"nodeType":"ParameterList","parameters":[],"src":"17533:0:160"},"scope":77273,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":76822,"nodeType":"FunctionDefinition","src":"17637:2002:160","nodes":[],"body":{"id":76821,"nodeType":"Block","src":"17695:1944:160","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76741,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"17713:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17715:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"17713:13:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17729:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17713:17:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76745,"name":"EraDurationMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73839,"src":"17732:32:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17732:34:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76740,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17705:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17705:62:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76748,"nodeType":"ExpressionStatement","src":"17705:62:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76750,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18102:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18104:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"18102:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":76752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18129:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":76753,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18133:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18135:11:160","memberName":"eraDuration","nodeType":"MemberAccess","referencedDeclaration":73893,"src":"18133:13:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18129:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18102:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76757,"name":"MinVaultEpochDurationLessThanTwoEras","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73842,"src":"18148:36:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18148:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76749,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18094:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18094:93:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76760,"nodeType":"ExpressionStatement","src":"18094:93:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76762,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18377:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18379:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"18377:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":76764,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18402:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18404:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"18402:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18377:48:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76767,"name":"OperatorGracePeriodLessThanMinVaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73845,"src":"18427:48:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18427:50:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18369:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18369:109:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76770,"nodeType":"ExpressionStatement","src":"18369:109:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76772,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18665:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18667:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"18665:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":76774,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18687:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18689:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"18687:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18665:45:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76777,"name":"VaultGracePeriodLessThanMinVaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73848,"src":"18712:45:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18712:47:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76771,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18657:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18657:103:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76780,"nodeType":"ExpressionStatement","src":"18657:103:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76782,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"18840:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18842:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"18840:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18840:21:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76786,"name":"MinVetoDurationMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73851,"src":"18863:36:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18863:38:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18832:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18832:70:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76789,"nodeType":"ExpressionStatement","src":"18832:70:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76791,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19112:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19114:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"19112:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":76793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19139:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19112:28:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76795,"name":"MinSlashExecutionDelayMustBeGreaterThanZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73854,"src":"19142:43:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19142:45:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76790,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19104:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19104:84:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76798,"nodeType":"ExpressionStatement","src":"19104:84:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76800,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19219:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76801,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19221:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"19219:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":76802,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19239:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19241:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"19239:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"19219:44:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":76805,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19267:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19269:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"19267:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"19219:71:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76808,"name":"MinVetoAndSlashDelayTooLongForVaultEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73857,"src":"19304:40:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19304:42:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76799,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19198:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19198:158:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76811,"nodeType":"ExpressionStatement","src":"19198:158:160"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":76813,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76737,"src":"19561:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19563:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"19561:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"33","id":76815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19592:1:160","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"19561:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":76817,"name":"ResolverSetDelayMustBeAtLeastThree","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73860,"src":"19595:34:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19595:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":76812,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19553:7:160","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":76819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19553:79:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76820,"nodeType":"ExpressionStatement","src":"19553:79:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateStorage","nameLocation":"17646:16:160","parameters":{"id":76738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76737,"mutability":"mutable","name":"$","nameLocation":"17679:1:160","nodeType":"VariableDeclaration","scope":76822,"src":"17663:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76736,"nodeType":"UserDefinedTypeName","pathNode":{"id":76735,"name":"Storage","nameLocations":["17663:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"17663:7:160"},"referencedDeclaration":73928,"src":"17663:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"src":"17662:19:160"},"returnParameters":{"id":76739,"nodeType":"ParameterList","parameters":[],"src":"17695:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77089,"nodeType":"FunctionDefinition","src":"19687:2572:160","nodes":[],"body":{"id":77088,"nodeType":"Block","src":"19735:2524:160","nodes":[],"statements":[{"assignments":[76829],"declarations":[{"constant":false,"id":76829,"mutability":"mutable","name":"$","nameLocation":"19761:1:160","nodeType":"VariableDeclaration","scope":77088,"src":"19745:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":76828,"nodeType":"UserDefinedTypeName","pathNode":{"id":76827,"name":"Storage","nameLocations":["19745:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"19745:7:160"},"referencedDeclaration":73928,"src":"19745:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":76832,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":76830,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"19765:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":76831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19765:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"19745:30:160"},{"condition":{"id":76841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19790:54:160","subExpression":{"arguments":[{"id":76839,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"19837:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"id":76834,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"19801:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19803:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"19801:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":76836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19813:13:160","memberName":"vaultRegistry","nodeType":"MemberAccess","referencedDeclaration":87706,"src":"19801:25:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76833,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"19791:9:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$65332_$","typeString":"type(contract IRegistry)"}},"id":76837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19791:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$65332","typeString":"contract IRegistry"}},"id":76838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19828:8:160","memberName":"isEntity","nodeType":"MemberAccess","referencedDeclaration":65317,"src":"19791:45:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":76840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19791:53:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76846,"nodeType":"IfStatement","src":"19786:109:160","trueBody":{"id":76845,"nodeType":"Block","src":"19846:49:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76842,"name":"NonFactoryVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73752,"src":"19867:15:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19867:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76844,"nodeType":"RevertStatement","src":"19860:24:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":76854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76848,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"19927:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76847,"name":"IMigratableEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65208,"src":"19909:17:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMigratableEntity_$65208_$","typeString":"type(contract IMigratableEntity)"}},"id":76849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19909:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMigratableEntity_$65208","typeString":"contract IMigratableEntity"}},"id":76850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19935:7:160","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":65189,"src":"19909:33:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":76851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19909:35:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":76852,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"19948:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19950:23:160","memberName":"allowedVaultImplVersion","nodeType":"MemberAccess","referencedDeclaration":73907,"src":"19948:25:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"19909:64:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76859,"nodeType":"IfStatement","src":"19905:128:160","trueBody":{"id":76858,"nodeType":"Block","src":"19975:58:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76855,"name":"IncompatibleVaultVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73803,"src":"19996:24:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19996:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76857,"nodeType":"RevertStatement","src":"19989:33:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":76867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76861,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20054:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76860,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20047:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20047:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20062:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":66904,"src":"20047:25:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20047:27:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":76865,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"20078:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20080:10:160","memberName":"collateral","nodeType":"MemberAccess","referencedDeclaration":73915,"src":"20078:12:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20047:43:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76872,"nodeType":"IfStatement","src":"20043:100:160","trueBody":{"id":76871,"nodeType":"Block","src":"20092:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76868,"name":"UnknownCollateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73758,"src":"20113:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20113:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76870,"nodeType":"RevertStatement","src":"20106:26:160"}]}},{"assignments":[76874],"declarations":[{"constant":false,"id":76874,"mutability":"mutable","name":"vaultEpochDuration","nameLocation":"20188:18:160","nodeType":"VariableDeclaration","scope":77088,"src":"20181:25:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76873,"name":"uint48","nodeType":"ElementaryTypeName","src":"20181:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76880,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76876,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20216:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76875,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20209:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20209:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20224:13:160","memberName":"epochDuration","nodeType":"MemberAccess","referencedDeclaration":66946,"src":"20209:28:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint48_$","typeString":"function () view external returns (uint48)"}},"id":76879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20209:30:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"20181:58:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76881,"name":"vaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76874,"src":"20253:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76882,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"20274:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20276:21:160","memberName":"minVaultEpochDuration","nodeType":"MemberAccess","referencedDeclaration":73895,"src":"20274:23:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"20253:44:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76889,"nodeType":"IfStatement","src":"20249:107:160","trueBody":{"id":76888,"nodeType":"Block","src":"20299:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76885,"name":"VaultWrongEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73755,"src":"20320:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20320:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76887,"nodeType":"RevertStatement","src":"20313:32:160"}]}},{"condition":{"id":76895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20403:40:160","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76891,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20411:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76890,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20404:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20404:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20419:22:160","memberName":"isDelegatorInitialized","nodeType":"MemberAccess","referencedDeclaration":66922,"src":"20404:37:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":76894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20404:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76900,"nodeType":"IfStatement","src":"20399:103:160","trueBody":{"id":76899,"nodeType":"Block","src":"20445:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76896,"name":"DelegatorNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73785,"src":"20466:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20466:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76898,"nodeType":"RevertStatement","src":"20459:32:160"}]}},{"assignments":[76903],"declarations":[{"constant":false,"id":76903,"mutability":"mutable","name":"delegator","nameLocation":"20527:9:160","nodeType":"VariableDeclaration","scope":77088,"src":"20512:24:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"},"typeName":{"id":76902,"nodeType":"UserDefinedTypeName","pathNode":{"id":76901,"name":"IBaseDelegator","nameLocations":["20512:14:160"],"nodeType":"IdentifierPath","referencedDeclaration":65506,"src":"20512:14:160"},"referencedDeclaration":65506,"src":"20512:14:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"visibility":"internal"}],"id":76911,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76906,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20561:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76905,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20554:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20554:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20569:9:160","memberName":"delegator","nodeType":"MemberAccess","referencedDeclaration":66916,"src":"20554:24:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20554:26:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76904,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"20539:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseDelegator_$65506_$","typeString":"type(contract IBaseDelegator)"}},"id":76910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20539:42:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"nodeType":"VariableDeclarationStatement","src":"20512:69:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":76922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":76914,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"20621:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20623:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"20621:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":76912,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76903,"src":"20595:9:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20605:15:160","memberName":"maxNetworkLimit","nodeType":"MemberAccess","referencedDeclaration":65453,"src":"20595:25:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view external returns (uint256)"}},"id":76916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20595:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":76919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20643:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76918,"name":"uint256","nodeType":"ElementaryTypeName","src":"20643:7:160","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":76917,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"20638:4:160","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":76920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20638:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":76921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20652:3:160","memberName":"max","nodeType":"MemberAccess","src":"20638:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20595:60:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76935,"nodeType":"IfStatement","src":"20591:158:160","trueBody":{"id":76934,"nodeType":"Block","src":"20657:92:160","statements":[{"expression":{"arguments":[{"id":76926,"name":"NETWORK_IDENTIFIER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"20700:18:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"arguments":[{"id":76929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20725:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":76928,"name":"uint256","nodeType":"ElementaryTypeName","src":"20725:7:160","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":76927,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"20720:4:160","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":76930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20720:13:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":76931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20734:3:160","memberName":"max","nodeType":"MemberAccess","src":"20720:17:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":76923,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76903,"src":"20671:9:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20681:18:160","memberName":"setMaxNetworkLimit","nodeType":"MemberAccess","referencedDeclaration":65485,"src":"20671:28:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (uint96,uint256) external"}},"id":76932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20671:67:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76933,"nodeType":"ExpressionStatement","src":"20671:67:160"}]}},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76938,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76903,"src":"20793:9:160","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}],"id":76937,"name":"IBaseDelegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65506,"src":"20778:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseDelegator_$65506_$","typeString":"type(contract IBaseDelegator)"}},"id":76939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20778:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseDelegator_$65506","typeString":"contract IBaseDelegator"}},"id":76940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20804:4:160","memberName":"hook","nodeType":"MemberAccess","referencedDeclaration":65445,"src":"20778:30:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20778:32:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76936,"name":"_delegatorHookCheck","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76734,"src":"20758:19:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":76942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20758:53:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":76943,"nodeType":"ExpressionStatement","src":"20758:53:160"},{"condition":{"id":76949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20857:38:160","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76945,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20865:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76944,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20858:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20858:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20873:20:160","memberName":"isSlasherInitialized","nodeType":"MemberAccess","referencedDeclaration":66934,"src":"20858:35:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":76948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20858:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76954,"nodeType":"IfStatement","src":"20853:99:160","trueBody":{"id":76953,"nodeType":"Block","src":"20897:55:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76950,"name":"SlasherNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73788,"src":"20918:21:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20918:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76952,"nodeType":"RevertStatement","src":"20911:30:160"}]}},{"assignments":[76956],"declarations":[{"constant":false,"id":76956,"mutability":"mutable","name":"slasher","nameLocation":"20970:7:160","nodeType":"VariableDeclaration","scope":77088,"src":"20962:15:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76955,"name":"address","nodeType":"ElementaryTypeName","src":"20962:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":76962,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76958,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"20987:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76957,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"20980:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":76959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20980:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":76960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20995:7:160","memberName":"slasher","nodeType":"MemberAccess","referencedDeclaration":66928,"src":"20980:22:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":76961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20980:24:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"20962:42:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":76970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76964,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21026:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76963,"name":"IEntity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65100,"src":"21018:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IEntity_$65100_$","typeString":"type(contract IEntity)"}},"id":76965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21018:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IEntity_$65100","typeString":"contract IEntity"}},"id":76966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21035:4:160","memberName":"TYPE","nodeType":"MemberAccess","referencedDeclaration":65093,"src":"21018:21:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":76967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21018:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":76968,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21045:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21047:19:160","memberName":"vetoSlasherImplType","nodeType":"MemberAccess","referencedDeclaration":73909,"src":"21045:21:160","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"21018:48:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76975,"nodeType":"IfStatement","src":"21014:111:160","trueBody":{"id":76974,"nodeType":"Block","src":"21068:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76971,"name":"IncompatibleSlasherType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73791,"src":"21089:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21089:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76973,"nodeType":"RevertStatement","src":"21082:32:160"}]}},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76977,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21152:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76976,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21139:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21139:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21161:12:160","memberName":"isBurnerHook","nodeType":"MemberAccess","referencedDeclaration":66186,"src":"21139:34:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":76980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21139:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76985,"nodeType":"IfStatement","src":"21135:98:160","trueBody":{"id":76984,"nodeType":"Block","src":"21177:56:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76981,"name":"BurnerHookNotSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73794,"src":"21198:22:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21198:24:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":76983,"nodeType":"RevertStatement","src":"21191:31:160"}]}},{"assignments":[76987],"declarations":[{"constant":false,"id":76987,"mutability":"mutable","name":"vetoDuration","nameLocation":"21250:12:160","nodeType":"VariableDeclaration","scope":77088,"src":"21243:19:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":76986,"name":"uint48","nodeType":"ElementaryTypeName","src":"21243:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":76993,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":76989,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21278:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76988,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21265:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":76990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21265:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":76991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21287:12:160","memberName":"vetoDuration","nodeType":"MemberAccess","referencedDeclaration":66421,"src":"21265:34:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint48_$","typeString":"function () view external returns (uint48)"}},"id":76992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21265:36:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"21243:58:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":76997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":76994,"name":"vetoDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76987,"src":"21315:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":76995,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21330:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":76996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21332:15:160","memberName":"minVetoDuration","nodeType":"MemberAccess","referencedDeclaration":73901,"src":"21330:17:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"21315:32:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77002,"nodeType":"IfStatement","src":"21311:92:160","trueBody":{"id":77001,"nodeType":"Block","src":"21349:54:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":76998,"name":"VetoDurationTooShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73797,"src":"21370:20:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":76999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21370:22:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77000,"nodeType":"RevertStatement","src":"21363:29:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77003,"name":"vetoDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76987,"src":"21417:12:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":77004,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21432:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21434:22:160","memberName":"minSlashExecutionDelay","nodeType":"MemberAccess","referencedDeclaration":73903,"src":"21432:24:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"21417:39:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":77007,"name":"vaultEpochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76874,"src":"21459:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"21417:60:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77013,"nodeType":"IfStatement","src":"21413:119:160","trueBody":{"id":77012,"nodeType":"Block","src":"21479:53:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77009,"name":"VetoDurationTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73800,"src":"21500:19:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21500:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77011,"nodeType":"RevertStatement","src":"21493:28:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77015,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21559:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77014,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21546:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":77016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21546:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":77017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21568:22:160","memberName":"resolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":66451,"src":"21546:44:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":77018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21546:46:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":77019,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21595:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21597:25:160","memberName":"maxResolverSetEpochsDelay","nodeType":"MemberAccess","referencedDeclaration":73905,"src":"21595:27:160","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21546:76:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77026,"nodeType":"IfStatement","src":"21542:139:160","trueBody":{"id":77025,"nodeType":"Block","src":"21624:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77022,"name":"ResolverSetDelayTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73818,"src":"21645:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21645:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77024,"nodeType":"RevertStatement","src":"21638:32:160"}]}},{"assignments":[77028],"declarations":[{"constant":false,"id":77028,"mutability":"mutable","name":"resolver","nameLocation":"21699:8:160","nodeType":"VariableDeclaration","scope":77088,"src":"21691:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77027,"name":"address","nodeType":"ElementaryTypeName","src":"21691:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":77040,"initialValue":{"arguments":[{"expression":{"id":77033,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21741:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21743:10:160","memberName":"subnetwork","nodeType":"MemberAccess","referencedDeclaration":73911,"src":"21741:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":77037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21765:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"21755:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":77035,"name":"bytes","nodeType":"ElementaryTypeName","src":"21759:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":77038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21755:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":77030,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21723:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77029,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21710:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":77031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21710:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":77032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21732:8:160","memberName":"resolver","nodeType":"MemberAccess","referencedDeclaration":66473,"src":"21710:30:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes32,bytes memory) view external returns (address)"}},"id":77039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21710:58:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"21691:77:160"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77041,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77028,"src":"21782:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21802:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21794:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77042,"name":"address","nodeType":"ElementaryTypeName","src":"21794:7:160","typeDescriptions":{}}},"id":77045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21794:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21782:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77062,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77028,"src":"21934:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":77063,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21946:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21948:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"21946:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":77065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21958:12:160","memberName":"vetoResolver","nodeType":"MemberAccess","referencedDeclaration":87724,"src":"21946:24:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21934:36:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77071,"nodeType":"IfStatement","src":"21930:147:160","trueBody":{"id":77070,"nodeType":"Block","src":"21972:105:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77067,"name":"ResolverMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73815,"src":"22048:16:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22048:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77069,"nodeType":"RevertStatement","src":"22041:25:160"}]}},"id":77072,"nodeType":"IfStatement","src":"21778:299:160","trueBody":{"id":77061,"nodeType":"Block","src":"21806:118:160","statements":[{"expression":{"arguments":[{"id":77051,"name":"NETWORK_IDENTIFIER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"21854:18:160","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"expression":{"id":77052,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76829,"src":"21874:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21876:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"21874:11:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":77054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21886:12:160","memberName":"vetoResolver","nodeType":"MemberAccess","referencedDeclaration":87724,"src":"21874:24:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":77057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21910:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77056,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"21900:9:160","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":77055,"name":"bytes","nodeType":"ElementaryTypeName","src":"21904:5:160","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":77058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21900:12:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":77048,"name":"slasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76956,"src":"21833:7:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77047,"name":"IVetoSlasher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66518,"src":"21820:12:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVetoSlasher_$66518_$","typeString":"type(contract IVetoSlasher)"}},"id":77049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21820:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVetoSlasher_$66518","typeString":"contract IVetoSlasher"}},"id":77050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21842:11:160","memberName":"setResolver","nodeType":"MemberAccess","referencedDeclaration":66517,"src":"21820:33:160","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint96_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint96,address,bytes memory) external"}},"id":77059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21820:93:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77060,"nodeType":"ExpressionStatement","src":"21820:93:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77074,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76824,"src":"22170:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77073,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66856,"src":"22163:6:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$66856_$","typeString":"type(contract IVault)"}},"id":77075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22163:14:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$66856","typeString":"contract IVault"}},"id":77076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22178:6:160","memberName":"burner","nodeType":"MemberAccess","referencedDeclaration":66910,"src":"22163:21:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":77077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22163:23:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22198:1:160","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22190:7:160","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77078,"name":"address","nodeType":"ElementaryTypeName","src":"22190:7:160","typeDescriptions":{}}},"id":77081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22190:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22163:37:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77087,"nodeType":"IfStatement","src":"22159:94:160","trueBody":{"id":77086,"nodeType":"Block","src":"22202:51:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77083,"name":"UnsupportedBurner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73782,"src":"22223:17:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22223:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77085,"nodeType":"RevertStatement","src":"22216:26:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateVault","nameLocation":"19696:14:160","parameters":{"id":76825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76824,"mutability":"mutable","name":"_vault","nameLocation":"19719:6:160","nodeType":"VariableDeclaration","scope":77089,"src":"19711:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76823,"name":"address","nodeType":"ElementaryTypeName","src":"19711:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19710:16:160"},"returnParameters":{"id":76826,"nodeType":"ParameterList","parameters":[],"src":"19735:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":77136,"nodeType":"FunctionDefinition","src":"22265:482:160","nodes":[],"body":{"id":77135,"nodeType":"Block","src":"22344:403:160","nodes":[],"statements":[{"condition":{"id":77105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"22358:72:160","subExpression":{"arguments":[{"id":77103,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77093,"src":"22421:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77097,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"22369:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":77098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22369:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22380:9:160","memberName":"symbiotic","nodeType":"MemberAccess","referencedDeclaration":73921,"src":"22369:20:160","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage","typeString":"struct Gear.SymbioticContracts storage ref"}},"id":77100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22390:20:160","memberName":"stakerRewardsFactory","nodeType":"MemberAccess","referencedDeclaration":87716,"src":"22369:41:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77096,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65332,"src":"22359:9:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$65332_$","typeString":"type(contract IRegistry)"}},"id":77101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22359:52:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$65332","typeString":"contract IRegistry"}},"id":77102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22412:8:160","memberName":"isEntity","nodeType":"MemberAccess","referencedDeclaration":65317,"src":"22359:61:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":77104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22359:71:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77110,"nodeType":"IfStatement","src":"22354:135:160","trueBody":{"id":77109,"nodeType":"Block","src":"22432:57:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77106,"name":"NonFactoryStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73830,"src":"22453:23:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22453:25:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77108,"nodeType":"RevertStatement","src":"22446:32:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77112,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77093,"src":"22525:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77111,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"22503:21:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultStakerRewards_$71992_$","typeString":"type(contract IDefaultStakerRewards)"}},"id":77113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22503:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultStakerRewards_$71992","typeString":"contract IDefaultStakerRewards"}},"id":77114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22535:5:160","memberName":"VAULT","nodeType":"MemberAccess","referencedDeclaration":71927,"src":"22503:37:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":77115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22503:39:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":77116,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77091,"src":"22546:6:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22503:49:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77122,"nodeType":"IfStatement","src":"22499:114:160","trueBody":{"id":77121,"nodeType":"Block","src":"22554:59:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77118,"name":"InvalidStakerRewardsVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73833,"src":"22575:25:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22575:27:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77120,"nodeType":"RevertStatement","src":"22568:34:160"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":77129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77124,"name":"_rewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77093,"src":"22649:8:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77123,"name":"IDefaultStakerRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71992,"src":"22627:21:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDefaultStakerRewards_$71992_$","typeString":"type(contract IDefaultStakerRewards)"}},"id":77125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:31:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IDefaultStakerRewards_$71992","typeString":"contract IDefaultStakerRewards"}},"id":77126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22659:7:160","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":72044,"src":"22627:39:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint64_$","typeString":"function () view external returns (uint64)"}},"id":77127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22627:41:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"32","id":77128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22672:1:160","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22627:46:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77134,"nodeType":"IfStatement","src":"22623:118:160","trueBody":{"id":77133,"nodeType":"Block","src":"22675:66:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77130,"name":"IncompatibleStakerRewardsVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73806,"src":"22696:32:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22696:34:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77132,"nodeType":"RevertStatement","src":"22689:41:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateStakerRewards","nameLocation":"22274:22:160","parameters":{"id":77094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77091,"mutability":"mutable","name":"_vault","nameLocation":"22305:6:160","nodeType":"VariableDeclaration","scope":77136,"src":"22297:14:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77090,"name":"address","nodeType":"ElementaryTypeName","src":"22297:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77093,"mutability":"mutable","name":"_rewards","nameLocation":"22321:8:160","nodeType":"VariableDeclaration","scope":77136,"src":"22313:16:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77092,"name":"address","nodeType":"ElementaryTypeName","src":"22313:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22296:34:160"},"returnParameters":{"id":77095,"nodeType":"ParameterList","parameters":[],"src":"22344:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77146,"nodeType":"ModifierDefinition","src":"22884:82:160","nodes":[],"body":{"id":77145,"nodeType":"Block","src":"22919:47:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":77141,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77138,"src":"22945:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":77140,"name":"_validTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77193,"src":"22929:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$__$","typeString":"function (uint48) view"}},"id":77142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22929:19:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77143,"nodeType":"ExpressionStatement","src":"22929:19:160"},{"id":77144,"nodeType":"PlaceholderStatement","src":"22958:1:160"}]},"name":"validTimestamp","nameLocation":"22893:14:160","parameters":{"id":77139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77138,"mutability":"mutable","name":"ts","nameLocation":"22915:2:160","nodeType":"VariableDeclaration","scope":77146,"src":"22908:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":77137,"name":"uint48","nodeType":"ElementaryTypeName","src":"22908:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"22907:11:160"},"virtual":false,"visibility":"internal"},{"id":77193,"nodeType":"FunctionDefinition","src":"22972:408:160","nodes":[],"body":{"id":77192,"nodeType":"Block","src":"23022:358:160","nodes":[],"statements":[{"assignments":[77153],"declarations":[{"constant":false,"id":77153,"mutability":"mutable","name":"$","nameLocation":"23048:1:160","nodeType":"VariableDeclaration","scope":77192,"src":"23032:17:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":77152,"nodeType":"UserDefinedTypeName","pathNode":{"id":77151,"name":"Storage","nameLocations":["23032:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"23032:7:160"},"referencedDeclaration":73928,"src":"23032:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":77156,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":77154,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77206,"src":"23052:8:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":77155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23052:10:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"23032:30:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77157,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77148,"src":"23076:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77158,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"23082:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":77159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23087:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"23082:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":77160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23082:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23076:22:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77166,"nodeType":"IfStatement","src":"23072:80:160","trueBody":{"id":77165,"nodeType":"Block","src":"23100:52:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77162,"name":"IncorrectTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73770,"src":"23121:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23121:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77164,"nodeType":"RevertStatement","src":"23114:27:160"}]}},{"assignments":[77168],"declarations":[{"constant":false,"id":77168,"mutability":"mutable","name":"gracePeriod","nameLocation":"23169:11:160","nodeType":"VariableDeclaration","scope":77192,"src":"23162:18:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":77167,"name":"uint48","nodeType":"ElementaryTypeName","src":"23162:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":77179,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77169,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23183:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23185:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"23183:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":77171,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23207:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23209:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"23207:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23183:42:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":77176,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23252:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23254:16:160","memberName":"vaultGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73899,"src":"23252:18:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":77178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"23183:87:160","trueExpression":{"expression":{"id":77174,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77153,"src":"23228:1:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":77175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23230:19:160","memberName":"operatorGracePeriod","nodeType":"MemberAccess","referencedDeclaration":73897,"src":"23228:21:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"23162:108:160"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":77182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77180,"name":"ts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77148,"src":"23284:2:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":77181,"name":"gracePeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77168,"src":"23289:11:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23284:16:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":77183,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60343,"src":"23304:4:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$60343_$","typeString":"type(library Time)"}},"id":77184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23309:9:160","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":60091,"src":"23304:14:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":77185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23304:16:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23284:36:160","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77191,"nodeType":"IfStatement","src":"23280:94:160","trueBody":{"id":77190,"nodeType":"Block","src":"23322:52:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77187,"name":"IncorrectTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73770,"src":"23343:18:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23343:20:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77189,"nodeType":"RevertStatement","src":"23336:27:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validTimestamp","nameLocation":"22981:15:160","parameters":{"id":77149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77148,"mutability":"mutable","name":"ts","nameLocation":"23004:2:160","nodeType":"VariableDeclaration","scope":77193,"src":"22997:9:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":77147,"name":"uint48","nodeType":"ElementaryTypeName","src":"22997:6:160","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"22996:11:160"},"returnParameters":{"id":77150,"nodeType":"ParameterList","parameters":[],"src":"23022:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77206,"nodeType":"FunctionDefinition","src":"23386:201:160","nodes":[],"body":{"id":77205,"nodeType":"Block","src":"23456:131:160","nodes":[],"statements":[{"assignments":[77200],"declarations":[{"constant":false,"id":77200,"mutability":"mutable","name":"slot","nameLocation":"23474:4:160","nodeType":"VariableDeclaration","scope":77205,"src":"23466:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23466:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":77203,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":77201,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77218,"src":"23481:15:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":77202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23481:17:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23466:32:160"},{"AST":{"nativeSrc":"23534:47:160","nodeType":"YulBlock","src":"23534:47:160","statements":[{"nativeSrc":"23548:23:160","nodeType":"YulAssignment","src":"23548:23:160","value":{"name":"slot","nativeSrc":"23567:4:160","nodeType":"YulIdentifier","src":"23567:4:160"},"variableNames":[{"name":"middleware.slot","nativeSrc":"23548:15:160","nodeType":"YulIdentifier","src":"23548:15:160"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":77197,"isOffset":false,"isSlot":true,"src":"23548:15:160","suffix":"slot","valueSize":1},{"declaration":77200,"isOffset":false,"isSlot":false,"src":"23567:4:160","valueSize":1}],"flags":["memory-safe"],"id":77204,"nodeType":"InlineAssembly","src":"23509:72:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_storage","nameLocation":"23395:8:160","parameters":{"id":77194,"nodeType":"ParameterList","parameters":[],"src":"23403:2:160"},"returnParameters":{"id":77198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77197,"mutability":"mutable","name":"middleware","nameLocation":"23444:10:160","nodeType":"VariableDeclaration","scope":77206,"src":"23428:26:160","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":77196,"nodeType":"UserDefinedTypeName","pathNode":{"id":77195,"name":"Storage","nameLocations":["23428:7:160"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"23428:7:160"},"referencedDeclaration":73928,"src":"23428:7:160","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"src":"23427:28:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77218,"nodeType":"FunctionDefinition","src":"23593:128:160","nodes":[],"body":{"id":77217,"nodeType":"Block","src":"23651:70:160","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":77213,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75075,"src":"23695:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77211,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"23668:11:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":77212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23680:14:160","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"23668:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":77214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23668:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":77215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23709:5:160","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"23668:46:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77210,"id":77216,"nodeType":"Return","src":"23661:53:160"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"23602:15:160","parameters":{"id":77207,"nodeType":"ParameterList","parameters":[],"src":"23617:2:160"},"returnParameters":{"id":77210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":77218,"src":"23642:7:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23642:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23641:9:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":77242,"nodeType":"FunctionDefinition","src":"23727:200:160","nodes":[],"body":{"id":77241,"nodeType":"Block","src":"23795:132:160","nodes":[],"statements":[{"assignments":[77226],"declarations":[{"constant":false,"id":77226,"mutability":"mutable","name":"slot","nameLocation":"23813:4:160","nodeType":"VariableDeclaration","scope":77241,"src":"23805:12:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23805:7:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":77231,"initialValue":{"arguments":[{"id":77229,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77220,"src":"23847:9:160","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":77227,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"23820:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":77228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23835:11:160","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"23820:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":77230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23820:37:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"23805:52:160"},{"expression":{"id":77239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":77235,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75075,"src":"23894:12:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77232,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"23867:11:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":77234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23879:14:160","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"23867:26:160","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":77236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23867:40:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":77237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23908:5:160","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"23867:46:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77238,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77226,"src":"23916:4:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23867:53:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":77240,"nodeType":"ExpressionStatement","src":"23867:53:160"}]},"implemented":true,"kind":"function","modifiers":[{"id":77223,"kind":"modifierInvocation","modifierName":{"id":77222,"name":"onlyOwner","nameLocations":["23785:9:160"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"23785:9:160"},"nodeType":"ModifierInvocation","src":"23785:9:160"}],"name":"_setStorageSlot","nameLocation":"23736:15:160","parameters":{"id":77221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77220,"mutability":"mutable","name":"namespace","nameLocation":"23766:9:160","nodeType":"VariableDeclaration","scope":77242,"src":"23752:23:160","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":77219,"name":"string","nodeType":"ElementaryTypeName","src":"23752:6:160","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"23751:25:160"},"returnParameters":{"id":77224,"nodeType":"ParameterList","parameters":[],"src":"23795:0:160"},"scope":77273,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":77252,"nodeType":"ModifierDefinition","src":"23933:81:160","nodes":[],"body":{"id":77251,"nodeType":"Block","src":"23968:46:160","nodes":[],"statements":[{"expression":{"arguments":[{"id":77247,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77244,"src":"23990:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77246,"name":"_vaultOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77272,"src":"23978:11:160","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":77248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23978:18:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77249,"nodeType":"ExpressionStatement","src":"23978:18:160"},{"id":77250,"nodeType":"PlaceholderStatement","src":"24006:1:160"}]},"name":"vaultOwner","nameLocation":"23942:10:160","parameters":{"id":77245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77244,"mutability":"mutable","name":"vault","nameLocation":"23961:5:160","nodeType":"VariableDeclaration","scope":77252,"src":"23953:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77243,"name":"address","nodeType":"ElementaryTypeName","src":"23953:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23952:15:160"},"virtual":false,"visibility":"internal"},{"id":77272,"nodeType":"FunctionDefinition","src":"24020:181:160","nodes":[],"body":{"id":77271,"nodeType":"Block","src":"24070:131:160","nodes":[],"statements":[{"condition":{"id":77265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"24084:62:160","subExpression":{"arguments":[{"id":77261,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75078,"src":"24115:18:160","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77262,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24135:3:160","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24139:6:160","memberName":"sender","nodeType":"MemberAccess","src":"24135:10:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":77258,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77254,"src":"24100:5:160","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77257,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44539,"src":"24085:14:160","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$44539_$","typeString":"type(contract IAccessControl)"}},"id":77259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24085:21:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessControl_$44539","typeString":"contract IAccessControl"}},"id":77260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24107:7:160","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":44506,"src":"24085:29:160","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view external returns (bool)"}},"id":77264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24085:61:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77270,"nodeType":"IfStatement","src":"24080:115:160","trueBody":{"id":77269,"nodeType":"Block","src":"24148:47:160","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":77266,"name":"NotVaultOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73767,"src":"24169:13:160","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24169:15:160","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":77268,"nodeType":"RevertStatement","src":"24162:22:160"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_vaultOwner","nameLocation":"24029:11:160","parameters":{"id":77255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77254,"mutability":"mutable","name":"vault","nameLocation":"24049:5:160","nodeType":"VariableDeclaration","scope":77272,"src":"24041:13:160","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77253,"name":"address","nodeType":"ElementaryTypeName","src":"24041:7:160","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24040:15:160"},"returnParameters":{"id":77256,"nodeType":"ParameterList","parameters":[],"src":"24070:0:160"},"scope":77273,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":75050,"name":"IMiddleware","nameLocations":["2399:11:160"],"nodeType":"IdentifierPath","referencedDeclaration":74131,"src":"2399:11:160"},"id":75051,"nodeType":"InheritanceSpecifier","src":"2399:11:160"},{"baseName":{"id":75052,"name":"OwnableUpgradeable","nameLocations":["2412:18:160"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"2412:18:160"},"id":75053,"nodeType":"InheritanceSpecifier","src":"2412:18:160"},{"baseName":{"id":75054,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["2432:35:160"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"2432:35:160"},"id":75055,"nodeType":"InheritanceSpecifier","src":"2432:35:160"},{"baseName":{"id":75056,"name":"UUPSUpgradeable","nameLocations":["2469:15:160"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"2469:15:160"},"id":75057,"nodeType":"InheritanceSpecifier","src":"2469:15:160"}],"canonicalName":"Middleware","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[77273,46243,44833,43943,42322,43484,42590,74131],"name":"Middleware","nameLocation":"2385:10:160","scope":77274,"usedErrors":[42158,42163,42339,42342,43875,45427,45440,46100,46105,47372,48774,53880,55791,73752,73755,73758,73761,73764,73767,73770,73773,73776,73779,73782,73785,73788,73791,73794,73797,73800,73803,73806,73809,73812,73815,73818,73821,73824,73827,73830,73833,73836,73839,73842,73845,73848,73851,73854,73857,73860,88601,88604,88607],"usedEvents":[42169,42347,44781]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":160} \ No newline at end of file diff --git a/ethexe/ethereum/abi/Mirror.json b/ethexe/ethereum/abi/Mirror.json index 15747d96f64..671280d19b7 100644 --- a/ethexe/ethereum/abi/Mirror.json +++ b/ethexe/ethereum/abi/Mirror.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUpWithPermit","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exited","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"},{"name":"_isSmall","type":"bool","internalType":"bool"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"exited","type":"bool","internalType":"bool"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueToReceiveNegativeSign","type":"bool","internalType":"bool"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]},{"name":"call","type":"bool","internalType":"bool"}]}]}],"outputs":[{"name":"transitionHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_callReply","type":"bool","internalType":"bool"}],"outputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageCallFailed","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"callReply","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnedBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyCallFailed","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ReplyTransferFailed","inputs":[{"name":"destination","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TransferLockedValueToInheritorFailed","inputs":[{"name":"inheritor","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimFailed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AbiInterfaceAlreadySet","inputs":[]},{"type":"error","name":"CallerNotRouter","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"EtherTransferToRouterFailed","inputs":[]},{"type":"error","name":"InheritorMustBeZero","inputs":[]},{"type":"error","name":"InitMessageNotCreated","inputs":[]},{"type":"error","name":"InitMessageNotCreatedAndCallerNotInitializer","inputs":[]},{"type":"error","name":"InitializerAlreadySet","inputs":[]},{"type":"error","name":"InvalidActorId","inputs":[]},{"type":"error","name":"InvalidFallbackCall","inputs":[]},{"type":"error","name":"IsSmallAlreadySet","inputs":[]},{"type":"error","name":"ProgramExited","inputs":[]},{"type":"error","name":"ProgramNotExited","inputs":[]},{"type":"error","name":"TransferLockedValueToInheritorExternalFailed","inputs":[]},{"type":"error","name":"WVaraTransferFailed","inputs":[]}],"bytecode":{"object":"0x60a03461008d57601f611d8138819003918201601f19168301916001600160401b038311848410176100915780849260209460405283398101031261008d57516001600160a01b038116810361008d57608052604051611cdb90816100a682396080518181816102390152818161031d015281816113e90152818161148a0152818161152d01526115e30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561017f575b610016611518565b34151580610177575b15610059577f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620660206040516001600160801b0334168152a1005b60ff60035460a01c16158061016c575b1561015d576100766115b5565b60015415801590610149575b1561013a576001600160801b03341661009a81611472565b600154903060601b5f528160145260345f20915f198114610126576001016001557f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5460405183815260806020820152602060808201368152365f838301375f823683010152601f19601f3601160101926040820152600435151560608201528033930390a25f5260205ff35b634e487b7160e01b5f52601160045260245ffd5b634bfa3a2d60e01b5f5260045ffd5b506003546001600160a01b03163314610082565b6399dd405f60e01b5f5260045ffd5b506024361015610069565b50361561001f565b5f5f3560e01c8063084f443a1461086a57806336a52a181461083d57806342129d001461071b5780635ce6c327146106f8578063701da98e146106db578063704ed542146106855780637a8e0cdd146105ef57806391d5a64c146105945780639ce110d71461056b578063affed0e01461054d578063bfa28576146103f6578063c6049692146102d6578063e43f34331461026b5763f887ea4014610224575061000e565b346102685780600319360112610268576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034610268578060031936011261026857610284611518565b60025460ff8116156102c7576102b090476001600160801b03169060081c6001600160a01b03166118cc565b156102b85780f35b63085fbdef60e21b8152600490fd5b63463a5c5f60e01b8252600482fd5b50346102685760a0366003190112610268576102f061132d565b6044359060ff82168092036103f257610307611518565b61030f6115b5565b826001600160a01b036103417f00000000000000000000000000000000000000000000000000000000000000006116aa565b16803b156103ee57819060e46040518094819363d505accf60e01b83523360048401523060248401526001600160801b038816988960448501526024356064850152608484015260643560a484015260843560c48401525af16103c4575b505f516020611cbb5f395f51905f52916103ba6020926115d0565b604051908152a180f35b916103ba846103e4602094965f516020611cbb5f395f51905f52966113c6565b949250509161039f565b5080fd5b8280fd5b5034610268576080366003190112610268576004356001600160a01b038116908190036103ee576024356001600160a01b038116908190036103f25760443580151580910361054957606435926001600160801b0384168094036105455761045c6113e7565b600354906001600160a01b0382166105365760ff8260a01c16610527577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54926001600160a01b038416610518576001600160a81b03199092161760a09190911b60ff60a01b16176003556001600160a01b031916177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806104fd575080f35b60205f516020611cbb5f395f51905f5291604051908152a180f35b638778dcd360e01b8752600487fd5b6325f368db60e11b8652600486fd5b63f20d240560e01b8652600486fd5b8480fd5b8380fd5b50346102685780600319360112610268576020600154604051908152f35b50346102685780600319360112610268576003546040516001600160a01b039091168152602090f35b5034610268576020366003190112610268576105ae611518565b6105b66115b5565b6105be611691565b60405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203392a280f35b506040366003190112610268576024356001600160401b0381116103ee5761063c7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f913690600401611300565b610647929192611518565b61064f6115b5565b610657611691565b6001600160801b0334169061066b82611472565b61067f604051928392339660043585611398565b0390a280f35b5034610268576020366003190112610268575f516020611cbb5f395f51905f5260206106af61132d565b6106b7611518565b6106bf6115b5565b6106c8816115d0565b6001600160801b0360405191168152a180f35b503461026857806003193601126102685760209054604051908152f35b5034610268578060031936011261026857602060ff600254166040519015158152f35b506040366003190112610268576004356001600160401b0381116103ee57610747903690600401611300565b91906024358015158091036103f25761075e611518565b6107666115b5565b60015415801590610829575b1561081a576001600160801b0334169161078b83611472565b6001543060601b85528060145260348520945f1982146108065750916107ed6020969260017f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c549501600155604051938785526080898601526080850191611378565b93604083015260608201528033930390a2604051908152f35b634e487b7160e01b81526011600452602490fd5b634bfa3a2d60e01b8352600483fd5b506003546001600160a01b03163314610772565b503461026857806003193601126102685760025460405160089190911c6001600160a01b03168152602090f35b506020366003190112610f08576001600160401b0360043511610f08576004353603610100600319820112610f08576108a16113e7565b6108af600435600401611343565b306001600160a01b03909116036112f1576108ce60a460043501611357565b6112d6575b60043560e401356022198201811215610f08576001600160401b03600482813501013511610f0857600481813501013560051b3603602482600435010113610f08576004803582010135600581901b8190046020149015171561012657610943600482813501013560051b61172a565b5f93845b6004848135010135861015610f2057600586901b600435850190810160240135969036036101021901871215610f085760e06023196004358701890136030112610f08576040519160c083018381106001600160401b03821117610f0c57604052600435860188016024810135845260440135906001600160a01b0382168203610f085760208401918252606460043588018a0101356001600160401b038111610f085760209060048b8a8235010101010136601f82011215610f0857610a159036906020813591016114ca565b6040850190815291608460043589018b0101356001600160801b0381168103610f085760608601908152604060a3196004358b018d0136030112610f085760405195604087018781106001600160401b03821117610f0c576040526004358a018c0160a4810135885260c40135906001600160e01b031982168203610f0857602088019182526080810188905260e46004358c018e01013580151596878203610f0857600199602098610b43958560549560a060359801525198519351975192519063ffffffff60e01b905116908b604051998a968288019c8d526001600160601b03199060601b1660408801528051918291018888015e8501936001600160801b03199060801b16868501526064840152608483015260f81b6088820152030160158101845201826113c6565b51902086820152019660a4600435870182010135610b765760206004610b6f9288823501010101611796565b0194610947565b610b8860e46004358801830101611357565b15610dd9576001600160f81b0319610ba860c46004358901840101611781565b5f1a60f81b161586826060925f14610d51575f9250610be160606004610be893869582350101010160206004878d82350101010161174f565b36916114ca565b886001600160801b03610c166080600488610c0a604483358801830101611343565b95823501010101611364565b16602083519301916207a120f1610c2b611443565b5015610c38575b50610b6f565b610c65610c4d60446004358901840101611343565b610c5f60846004358a01850101611364565b906118cc565b15610ce2575b7f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c36040610ca060846004358a01850101611364565b60a060046001600160e01b0319610cbe60c483358e01890101611781565b16956001600160801b038551941684528b823501010101356020820152a25f610c32565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610d1560446004358901840101611343565b610d2760846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610c6b565b5f928392610dd491610db7610d7360043584018601606481019060240161174f565b610d8560c46004358701890101611781565b9360206004604051998a98634a646c7f60e01b848b015282350101010135602487015260448601526084850191611378565b9063ffffffff60e01b16606483015203601f1981018352826113c6565b610be8565b610dee610c4d60446004358901840101611343565b15610e99575b7fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6610e2c60043588018301606481019060240161174f565b610e3e60846004358b01860101611364565b60a060046001600160e01b0319610e5c60c483358f018a0101611781565b16966001600160801b03610e7d604051978897606089526060890191611378565b941660208601528c8235010101013560408301520390a2610b6f565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610ecc60446004358901840101611343565b610ede60846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610df4565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b509291600490813501013560051b90209060c460043501359060221901811215610f085760043501916004830135916001600160401b038311610f08576060830236036024850113610f08578260051b908382046020148415171561012657610f8c829594939261172a565b915f955f965b858810156110c957610fca949596976001916004606083028b01019061102c611023602080850135938c816060604089019e8f611343565b980197610fd689611364565b60405190868201928a84526001600160601b03199060601b1660408301526001600160801b03199060801b166054820152604481526110166064826113c6565b5190209101520199611343565b610c5f84611364565b156110805761105b7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578392611364565b604080519283526001600160801b0391909116602083015290a15b0196959493610f92565b6110aa7f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed92611364565b604080519283526001600160801b0391909116602083015290a1611076565b50832091604460043501916110dd83611357565b156112a35750916020926110f5606460043501611343565b916110fe6115b5565b600280546001600160a81b031916600885811b610100600160a81b031691909117600117918290555f9491476001600160801b0316916111499183911c6001600160a01b03166118cc565b15611256575b50505b8254602460043501359384809203611225575b505061117e611178600435600401611343565b94611357565b61118c606460043501611343565b61119a608460043501611364565b906111a960a460043501611357565b9260405196898801986001600160601b03199060601b1689526034880152151560f81b60548701526001600160601b03199060601b1660558601526001600160801b03199060801b166069850152151560f81b6079840152607a830152609a820152609a815261121a60ba826113c6565b519020604051908152f35b557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093085604051858152a18286611165565b604080516001600160a01b039390931683526001600160801b039190911660208301527f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f391a1858061114f565b906001600160a01b036112ba600435606401611343565b166112c757602093611152565b6304c3c7a160e41b5f5260045ffd5b6112ec6112e7608460043501611364565b611472565b6108d3565b63ed488aa360e01b5f5260045ffd5b9181601f84011215610f08578235916001600160401b038311610f085760208381860195010111610f0857565b600435906001600160801b0382168203610f0857565b356001600160a01b0381168103610f085790565b358015158103610f085790565b356001600160801b0381168103610f085790565b908060209392818452848401375f828201840152601f01601f1916010190565b926040926113bf916001600160801b03939796978652606060208701526060860191611378565b9416910152565b90601f801991011681019081106001600160401b03821117610f0c57604052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361141957565b6375f48d7160e11b5f5260045ffd5b6001600160401b038111610f0c57601f01601f191660200190565b3d1561146d573d9061145482611428565b9161146260405193846113c6565b82523d5f602084013e565b606090565b6001600160801b0316806114835750565b5f808080937f00000000000000000000000000000000000000000000000000000000000000005af16114b3611443565b50156114bb57565b6308eb200360e41b5f5260045ffd5b9291926114d682611428565b916114e460405193846113c6565b829481845281830111610f08578281602093845f960137010152565b90816020910312610f0857518015158103610f085790565b604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156115aa575f9161157b575b5061156c57565b63d93c066560e01b5f5260045ffd5b61159d915060203d6020116115a3575b61159581836113c6565b810190611500565b5f611565565b503d61158b565b6040513d5f823e3d90fd5b60ff600254166115c157565b630d304b8160e31b5f5260045ffd5b6001600160801b0316806115e15750565b7f00000000000000000000000000000000000000000000000000000000000000009060209060646001600160a01b03611619856116aa565b6040516323b872dd60e01b81523360048201526001600160a01b0390961660248701526044860193909352849283915f91165af19081156115aa575f91611672575b501561166357565b6303a25d1960e31b5f5260045ffd5b61168b915060203d6020116115a35761159581836113c6565b5f61165b565b6001541561169b57565b631a2efd3560e31b5f5260045ffd5b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa9081156115aa575f916116e8575b506001600160a01b031690565b90506020813d602011611722575b81611703602093836113c6565b81010312610f0857516001600160a01b0381168103610f08575f6116db565b3d91506116f6565b6040519190601f01601f191682016001600160401b03811183821017610f0857604052565b903590601e1981360301821215610f0857018035906001600160401b038211610f0857602001918136038313610f0857565b356001600160e01b031981168103610f085790565b61179f816118f9565b156117a75750565b6117b360c08201611357565b611820575b7f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177361181b6117e860208401611343565b6117f5604085018561174f565b61180460608795939501611364565b9060405194859460018060a01b0316973585611398565b0390a2565b602081015f8061182f83611343565b8161183d604087018761174f565b9190826040519384928337810182815203926207a120f161185c611443565b501561186857506117b8565b6118927f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f891611343565b61189e60608401611364565b60408051943585526001600160801b0390911660208501526001600160a01b0390911692908190810161181b565b906001600160801b031690816118e3575050600190565b5f8080938193611388f16118f5611443565b5090565b611906604082018261174f565b90916001600160a01b038061191d60208401611343565b16149081611c9c575b5080611c93575b15611c8d5781358060f81c90600182101580611c82575b15611c7a5760f31c611fe016600181018310611c7a576001840135927f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093084141580611c50575b80611c26575b80611bfc575b80611bd2575b80611bbb575b80611b91575b80611b67575b80611b3d575b80611b13575b80611ae9575b80611abf575b80611a95575b80611a6b575b15611a62578190035f1901918260016119ea8261172a565b93870101833760218501359460418101359160018103611a115750505090919250a1600190565b60028103611a2257505050a2600190565b600381979593969497145f14611a3e57505090919293a3600190565b600414611a51575b505050505050600190565b6061013594a45f8080808080611a46565b50505050505f90565b507f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed8414156119d2565b507f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a8414156119cc565b507f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f38414156119c6565b507fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd657838414156119c0565b507f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c38414156119ba565b507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68414156119b4565b507f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f88414156119ae565b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738414156119a8565b505f516020611cbb5f395f51905f528414156119a2565b507f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620684141561199c565b507f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c4978841415611996565b507fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f841415611990565b507f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5484141561198a565b505050505f90565b506004821115611944565b50505f90565b5080151561192d565b6001600160801b0391506060611cb29101611364565b16155f61192656fe85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667","sourceMap":"2621:41123:161:-:0;;;;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;7624:16;;2621:41123;;;;;;;;7624:16;2621:41123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2621:41123:161;;;;;;-1:-1:-1;2621:41123:161;;;;;-1:-1:-1;2621:41123:161","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561017f575b610016611518565b34151580610177575b15610059577f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620660206040516001600160801b0334168152a1005b60ff60035460a01c16158061016c575b1561015d576100766115b5565b60015415801590610149575b1561013a576001600160801b03341661009a81611472565b600154903060601b5f528160145260345f20915f198114610126576001016001557f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5460405183815260806020820152602060808201368152365f838301375f823683010152601f19601f3601160101926040820152600435151560608201528033930390a25f5260205ff35b634e487b7160e01b5f52601160045260245ffd5b634bfa3a2d60e01b5f5260045ffd5b506003546001600160a01b03163314610082565b6399dd405f60e01b5f5260045ffd5b506024361015610069565b50361561001f565b5f5f3560e01c8063084f443a1461086a57806336a52a181461083d57806342129d001461071b5780635ce6c327146106f8578063701da98e146106db578063704ed542146106855780637a8e0cdd146105ef57806391d5a64c146105945780639ce110d71461056b578063affed0e01461054d578063bfa28576146103f6578063c6049692146102d6578063e43f34331461026b5763f887ea4014610224575061000e565b346102685780600319360112610268576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034610268578060031936011261026857610284611518565b60025460ff8116156102c7576102b090476001600160801b03169060081c6001600160a01b03166118cc565b156102b85780f35b63085fbdef60e21b8152600490fd5b63463a5c5f60e01b8252600482fd5b50346102685760a0366003190112610268576102f061132d565b6044359060ff82168092036103f257610307611518565b61030f6115b5565b826001600160a01b036103417f00000000000000000000000000000000000000000000000000000000000000006116aa565b16803b156103ee57819060e46040518094819363d505accf60e01b83523360048401523060248401526001600160801b038816988960448501526024356064850152608484015260643560a484015260843560c48401525af16103c4575b505f516020611cbb5f395f51905f52916103ba6020926115d0565b604051908152a180f35b916103ba846103e4602094965f516020611cbb5f395f51905f52966113c6565b949250509161039f565b5080fd5b8280fd5b5034610268576080366003190112610268576004356001600160a01b038116908190036103ee576024356001600160a01b038116908190036103f25760443580151580910361054957606435926001600160801b0384168094036105455761045c6113e7565b600354906001600160a01b0382166105365760ff8260a01c16610527577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54926001600160a01b038416610518576001600160a81b03199092161760a09190911b60ff60a01b16176003556001600160a01b031916177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806104fd575080f35b60205f516020611cbb5f395f51905f5291604051908152a180f35b638778dcd360e01b8752600487fd5b6325f368db60e11b8652600486fd5b63f20d240560e01b8652600486fd5b8480fd5b8380fd5b50346102685780600319360112610268576020600154604051908152f35b50346102685780600319360112610268576003546040516001600160a01b039091168152602090f35b5034610268576020366003190112610268576105ae611518565b6105b66115b5565b6105be611691565b60405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203392a280f35b506040366003190112610268576024356001600160401b0381116103ee5761063c7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f913690600401611300565b610647929192611518565b61064f6115b5565b610657611691565b6001600160801b0334169061066b82611472565b61067f604051928392339660043585611398565b0390a280f35b5034610268576020366003190112610268575f516020611cbb5f395f51905f5260206106af61132d565b6106b7611518565b6106bf6115b5565b6106c8816115d0565b6001600160801b0360405191168152a180f35b503461026857806003193601126102685760209054604051908152f35b5034610268578060031936011261026857602060ff600254166040519015158152f35b506040366003190112610268576004356001600160401b0381116103ee57610747903690600401611300565b91906024358015158091036103f25761075e611518565b6107666115b5565b60015415801590610829575b1561081a576001600160801b0334169161078b83611472565b6001543060601b85528060145260348520945f1982146108065750916107ed6020969260017f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c549501600155604051938785526080898601526080850191611378565b93604083015260608201528033930390a2604051908152f35b634e487b7160e01b81526011600452602490fd5b634bfa3a2d60e01b8352600483fd5b506003546001600160a01b03163314610772565b503461026857806003193601126102685760025460405160089190911c6001600160a01b03168152602090f35b506020366003190112610f08576001600160401b0360043511610f08576004353603610100600319820112610f08576108a16113e7565b6108af600435600401611343565b306001600160a01b03909116036112f1576108ce60a460043501611357565b6112d6575b60043560e401356022198201811215610f08576001600160401b03600482813501013511610f0857600481813501013560051b3603602482600435010113610f08576004803582010135600581901b8190046020149015171561012657610943600482813501013560051b61172a565b5f93845b6004848135010135861015610f2057600586901b600435850190810160240135969036036101021901871215610f085760e06023196004358701890136030112610f08576040519160c083018381106001600160401b03821117610f0c57604052600435860188016024810135845260440135906001600160a01b0382168203610f085760208401918252606460043588018a0101356001600160401b038111610f085760209060048b8a8235010101010136601f82011215610f0857610a159036906020813591016114ca565b6040850190815291608460043589018b0101356001600160801b0381168103610f085760608601908152604060a3196004358b018d0136030112610f085760405195604087018781106001600160401b03821117610f0c576040526004358a018c0160a4810135885260c40135906001600160e01b031982168203610f0857602088019182526080810188905260e46004358c018e01013580151596878203610f0857600199602098610b43958560549560a060359801525198519351975192519063ffffffff60e01b905116908b604051998a968288019c8d526001600160601b03199060601b1660408801528051918291018888015e8501936001600160801b03199060801b16868501526064840152608483015260f81b6088820152030160158101845201826113c6565b51902086820152019660a4600435870182010135610b765760206004610b6f9288823501010101611796565b0194610947565b610b8860e46004358801830101611357565b15610dd9576001600160f81b0319610ba860c46004358901840101611781565b5f1a60f81b161586826060925f14610d51575f9250610be160606004610be893869582350101010160206004878d82350101010161174f565b36916114ca565b886001600160801b03610c166080600488610c0a604483358801830101611343565b95823501010101611364565b16602083519301916207a120f1610c2b611443565b5015610c38575b50610b6f565b610c65610c4d60446004358901840101611343565b610c5f60846004358a01850101611364565b906118cc565b15610ce2575b7f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c36040610ca060846004358a01850101611364565b60a060046001600160e01b0319610cbe60c483358e01890101611781565b16956001600160801b038551941684528b823501010101356020820152a25f610c32565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610d1560446004358901840101611343565b610d2760846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610c6b565b5f928392610dd491610db7610d7360043584018601606481019060240161174f565b610d8560c46004358701890101611781565b9360206004604051998a98634a646c7f60e01b848b015282350101010135602487015260448601526084850191611378565b9063ffffffff60e01b16606483015203601f1981018352826113c6565b610be8565b610dee610c4d60446004358901840101611343565b15610e99575b7fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6610e2c60043588018301606481019060240161174f565b610e3e60846004358b01860101611364565b60a060046001600160e01b0319610e5c60c483358f018a0101611781565b16966001600160801b03610e7d604051978897606089526060890191611378565b941660208601528c8235010101013560408301520390a2610b6f565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610ecc60446004358901840101611343565b610ede60846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610df4565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b509291600490813501013560051b90209060c460043501359060221901811215610f085760043501916004830135916001600160401b038311610f08576060830236036024850113610f08578260051b908382046020148415171561012657610f8c829594939261172a565b915f955f965b858810156110c957610fca949596976001916004606083028b01019061102c611023602080850135938c816060604089019e8f611343565b980197610fd689611364565b60405190868201928a84526001600160601b03199060601b1660408301526001600160801b03199060801b166054820152604481526110166064826113c6565b5190209101520199611343565b610c5f84611364565b156110805761105b7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578392611364565b604080519283526001600160801b0391909116602083015290a15b0196959493610f92565b6110aa7f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed92611364565b604080519283526001600160801b0391909116602083015290a1611076565b50832091604460043501916110dd83611357565b156112a35750916020926110f5606460043501611343565b916110fe6115b5565b600280546001600160a81b031916600885811b610100600160a81b031691909117600117918290555f9491476001600160801b0316916111499183911c6001600160a01b03166118cc565b15611256575b50505b8254602460043501359384809203611225575b505061117e611178600435600401611343565b94611357565b61118c606460043501611343565b61119a608460043501611364565b906111a960a460043501611357565b9260405196898801986001600160601b03199060601b1689526034880152151560f81b60548701526001600160601b03199060601b1660558601526001600160801b03199060801b166069850152151560f81b6079840152607a830152609a820152609a815261121a60ba826113c6565b519020604051908152f35b557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093085604051858152a18286611165565b604080516001600160a01b039390931683526001600160801b039190911660208301527f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f391a1858061114f565b906001600160a01b036112ba600435606401611343565b166112c757602093611152565b6304c3c7a160e41b5f5260045ffd5b6112ec6112e7608460043501611364565b611472565b6108d3565b63ed488aa360e01b5f5260045ffd5b9181601f84011215610f08578235916001600160401b038311610f085760208381860195010111610f0857565b600435906001600160801b0382168203610f0857565b356001600160a01b0381168103610f085790565b358015158103610f085790565b356001600160801b0381168103610f085790565b908060209392818452848401375f828201840152601f01601f1916010190565b926040926113bf916001600160801b03939796978652606060208701526060860191611378565b9416910152565b90601f801991011681019081106001600160401b03821117610f0c57604052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361141957565b6375f48d7160e11b5f5260045ffd5b6001600160401b038111610f0c57601f01601f191660200190565b3d1561146d573d9061145482611428565b9161146260405193846113c6565b82523d5f602084013e565b606090565b6001600160801b0316806114835750565b5f808080937f00000000000000000000000000000000000000000000000000000000000000005af16114b3611443565b50156114bb57565b6308eb200360e41b5f5260045ffd5b9291926114d682611428565b916114e460405193846113c6565b829481845281830111610f08578281602093845f960137010152565b90816020910312610f0857518015158103610f085790565b604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156115aa575f9161157b575b5061156c57565b63d93c066560e01b5f5260045ffd5b61159d915060203d6020116115a3575b61159581836113c6565b810190611500565b5f611565565b503d61158b565b6040513d5f823e3d90fd5b60ff600254166115c157565b630d304b8160e31b5f5260045ffd5b6001600160801b0316806115e15750565b7f00000000000000000000000000000000000000000000000000000000000000009060209060646001600160a01b03611619856116aa565b6040516323b872dd60e01b81523360048201526001600160a01b0390961660248701526044860193909352849283915f91165af19081156115aa575f91611672575b501561166357565b6303a25d1960e31b5f5260045ffd5b61168b915060203d6020116115a35761159581836113c6565b5f61165b565b6001541561169b57565b631a2efd3560e31b5f5260045ffd5b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa9081156115aa575f916116e8575b506001600160a01b031690565b90506020813d602011611722575b81611703602093836113c6565b81010312610f0857516001600160a01b0381168103610f08575f6116db565b3d91506116f6565b6040519190601f01601f191682016001600160401b03811183821017610f0857604052565b903590601e1981360301821215610f0857018035906001600160401b038211610f0857602001918136038313610f0857565b356001600160e01b031981168103610f085790565b61179f816118f9565b156117a75750565b6117b360c08201611357565b611820575b7f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177361181b6117e860208401611343565b6117f5604085018561174f565b61180460608795939501611364565b9060405194859460018060a01b0316973585611398565b0390a2565b602081015f8061182f83611343565b8161183d604087018761174f565b9190826040519384928337810182815203926207a120f161185c611443565b501561186857506117b8565b6118927f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f891611343565b61189e60608401611364565b60408051943585526001600160801b0390911660208501526001600160a01b0390911692908190810161181b565b906001600160801b031690816118e3575050600190565b5f8080938193611388f16118f5611443565b5090565b611906604082018261174f565b90916001600160a01b038061191d60208401611343565b16149081611c9c575b5080611c93575b15611c8d5781358060f81c90600182101580611c82575b15611c7a5760f31c611fe016600181018310611c7a576001840135927f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093084141580611c50575b80611c26575b80611bfc575b80611bd2575b80611bbb575b80611b91575b80611b67575b80611b3d575b80611b13575b80611ae9575b80611abf575b80611a95575b80611a6b575b15611a62578190035f1901918260016119ea8261172a565b93870101833760218501359460418101359160018103611a115750505090919250a1600190565b60028103611a2257505050a2600190565b600381979593969497145f14611a3e57505090919293a3600190565b600414611a51575b505050505050600190565b6061013594a45f8080808080611a46565b50505050505f90565b507f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed8414156119d2565b507f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a8414156119cc565b507f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f38414156119c6565b507fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd657838414156119c0565b507f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c38414156119ba565b507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68414156119b4565b507f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f88414156119ae565b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738414156119a8565b505f516020611cbb5f395f51905f528414156119a2565b507f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620684141561199c565b507f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c4978841415611996565b507fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f841415611990565b507f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5484141561198a565b505050505f90565b506004821115611944565b50505f90565b5080151561192d565b6001600160801b0391506060611cb29101611364565b16155f61192656fe85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667","sourceMap":"2621:41123:161:-:0;;;;;;;;;-1:-1:-1;9882:69:161;;:::i;:::-;42692:9;:13;;:37;;;-1:-1:-1;42688:1048:161;;;42799:33;2621:41123;;;-1:-1:-1;;;;;42692:9:161;2621:41123;;;42799:33;2621:41123;42688:1048;2621:41123;42854:7;2621:41123;;;;42853:8;:35;;;42688:1048;42849:887;;;8798:67;;:::i;:::-;8593:5;2621:41123;8593:9;;;:38;;;42849:887;2621:41123;;;-1:-1:-1;;;;;42692:9:161;2621:41123;19408:6;;;:::i;:::-;8593:5;2621:41123;19629:154;;;;42704:1;19629:154;;;;;42704:1;19629:154;2621:41123;;;;;;;8593:5;2621:41123;8593:5;2621:41123;19815:70;2621:41123;;;;;;;;;;;;;;;;;;42704:1;2621:41123;;;;42704:1;2621:41123;;;;;;;;;;;;;;;;;;;;43377:88;43522:14;;19629:154;2621:41123;;;19844:10;;19815:70;;;;42704:1;43552:115;2621:41123;42704:1;43552:115;2621:41123;;;;42704:1;2621:41123;;;;;42704:1;2621:41123;;;;;42704:1;2621:41123;;42704:1;2621:41123;8593:38;-1:-1:-1;42854:7:161;2621:41123;-1:-1:-1;;;;;2621:41123:161;8606:10;:25;8593:38;;42849:887;43704:21;;;42704:1;43704:21;2621:41123;42704:1;43704:21;42853:35;2621:41123;42884:4;2621:41123;42865:23;;42853:35;;42692:37;2621:41123;;42709:20;42692:37;;2621:41123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3228:31;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;9882:69;;:::i;:::-;9363:6;2621:41123;;;;;;;20666:37;;20418:21;-1:-1:-1;;;;;2621:41123:161;;;;-1:-1:-1;;;;;2621:41123:161;20666:37;:::i;:::-;2621:41123;;;;;;-1:-1:-1;;;2621:41123:161;;;;;;-1:-1:-1;;;2621:41123:161;;;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;;;:::i;:::-;;;;;;;;;;;;9882:69;;:::i;:::-;8798:67;;:::i;:::-;2621:41123;-1:-1:-1;;;;;14371:14:161;14378:6;14371:14;:::i;:::-;2621:41123;14371:79;;;;;2621:41123;;14371:79;2621:41123;;;;;;;;;14371:79;;14393:10;2621:41123;14371:79;;2621:41123;14413:4;2621:41123;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14371:79;;;;2621:41123;14487:6;-1:-1:-1;;;;;;;;;;;14487:6:161;;2621:41123;14487:6;;:::i;:::-;2621:41123;;;;;14510:39;2621:41123;;14371:79;;14487:6;14371:79;;2621:41123;14371:79;;-1:-1:-1;;;;;;;;;;;14371:79:161;;:::i;:::-;;;;;;;;;2621:41123;;;;;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;9503:63;;:::i;:::-;16181:11;2621:41123;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;811:66:53;2621:41123:161;;-1:-1:-1;;;;;2621:41123:161;;811:66:53;;-1:-1:-1;;;;;;811:66:53;;;;;;;;;-1:-1:-1;;;811:66:53;;16181:11:161;811:66:53;-1:-1:-1;;;;;;811:66:53;;;;16631:30:161;16627:124;;2621:41123;;;16627:124;2621:41123;-1:-1:-1;;;;;;;;;;;2621:41123:161;;;;;;16682:58;2621:41123;;811:66:53;-1:-1:-1;;;811:66:53;;2621:41123:161;811:66:53;;2621:41123:161;-1:-1:-1;;;2621:41123:161;;;;;;-1:-1:-1;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:20;2621:41123;;;;;;;;;;;;;;;;;;;;4050:26;2621:41123;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;9882:69;;:::i;:::-;8798:67;;:::i;:::-;7804:83;;:::i;:::-;2621:41123;;;;;;12953:46;2621:41123;12988:10;12953:46;;2621:41123;;;-1:-1:-1;2621:41123:161;;-1:-1:-1;;2621:41123:161;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;12480:64;2621:41123;;;;;;:::i;:::-;9882:69;;;;;:::i;:::-;8798:67;;:::i;:::-;7804:83;;:::i;:::-;-1:-1:-1;;;;;12419:9:161;2621:41123;12457:6;;;;:::i;:::-;12480:64;2621:41123;;12515:10;;;;2621:41123;;;12480:64;;:::i;:::-;;;;2621:41123;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;-1:-1:-1;;;;;;;;;;;2621:41123:161;;;:::i;:::-;9882:69;;:::i;:::-;8798:67;;:::i;:::-;10354:5;;;:::i;:::-;-1:-1:-1;;;;;2621:41123:161;;;;;;13429:39;2621:41123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:18;2621:41123;;;;;;;;;;;-1:-1:-1;2621:41123:161;;-1:-1:-1;;2621:41123:161;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9882:69;;:::i;:::-;8798:67;;:::i;:::-;8593:5;2621:41123;8593:9;;;:38;;;2621:41123;;;;-1:-1:-1;;;;;19370:9:161;2621:41123;19408:6;;;;:::i;:::-;8593:5;2621:41123;19629:154;;;;;;;;;;;2621:41123;;;;;;;;;;;;;8593:5;19815:70;2621:41123;;8593:5;2621:41123;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;19629:154;2621:41123;;;19844:10;;19815:70;;;;2621:41123;;;;;;;-1:-1:-1;;;2621:41123:161;;;;;;;;;-1:-1:-1;;;2621:41123:161;;;;;8593:38;-1:-1:-1;8620:11:161;2621:41123;-1:-1:-1;;;;;2621:41123:161;8606:10;:25;8593:38;;2621:41123;;;;;;;;;;;;;3940:24;2621:41123;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;-1:-1:-1;2621:41123:161;;-1:-1:-1;;2621:41123:161;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;;9503:63;;:::i;:::-;17254:19;2621:41123;;;;17254:19;:::i;:::-;17285:4;-1:-1:-1;;;;;2621:41123:161;;;17254:36;2621:41123;;17442:38;;2621:41123;;17442:38;;:::i;:::-;17438:113;;2621:41123;;;17672:20;;2621:41123;-1:-1:-1;;2621:41123:161;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21507:35;2621:41123;;;;;;;;;21507:35;:::i;:::-;2621:41123;;;21618:3;2621:41123;;;;;;;21601:15;;;;;2621:41123;;;;;;;;;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;;;;-1:-1:-1;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;-1:-1:-1;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20173:273:169;2621:41123:161;;;;17442:38;2621:41123;;;;;;;20272:15:169;;2621:41123:161;;;;;;;;;;;;;;;20173:273:169;;;;;;2621:41123:161;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;20173:273:169;;;;;;;;;;:::i;:::-;2621:41123:161;20150:306:169;;4093:83:22;;;;2621:41123:161;;;;;;;;;;;17442:38;;2621:41123;;22310:7;2621:41123;;;;;;;;22310:7;:::i;:::-;2621:41123;21586:13;;;22236:162;37118:13;2621:41123;;;;;;;;37118:13;:::i;:::-;2621:41123;;;-1:-1:-1;;;;;;37169:26:161;2621:41123;;;;;;;;37169:26;:::i;:::-;2621:41123;37169:29;2621:41123;;;37169:34;37218:20;;2621:41123;37253:433;;;;;2621:41123;;;37301:16;2621:41123;;;;;;;;;;;;;;;;;;;;;;37301:16;:::i;:::-;2621:41123;;;:::i;:::-;;-1:-1:-1;;;;;37765:14:161;2621:41123;;;37718:20;2621:41123;;;;;;;;37718:20;:::i;:::-;2621:41123;;;;;;;37765:14;:::i;:::-;2621:41123;;37718:71;;;;;37749:7;37718:71;;;:::i;:::-;;37808:8;37804:513;;37253:433;37114:1562;22236:162;;37804:513;37859:52;37874:20;2621:41123;;;;;;;;37874:20;:::i;:::-;37896:14;2621:41123;;;;;;;;37896:14;:::i;:::-;37859:52;;:::i;:::-;37933:16;37929:125;;37804:513;38217:85;2621:41123;38233:14;2621:41123;;;;;;;;38233:14;:::i;:::-;17442:38;2621:41123;-1:-1:-1;;;;;;38275:26:161;2621:41123;;;;;;;;38275:26;:::i;:::-;2621:41123;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;38217:85;37804:513;;;37929:125;37978:57;37998:20;2621:41123;;;;;;;;37998:20;:::i;:::-;38020:14;2621:41123;;;;;;;;38020:14;:::i;:::-;2621:41123;;;-1:-1:-1;;;;;2621:41123:161;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;37978:57;37929:125;;37253:433;2621:41123;;;;37518:153;;2621:41123;37609:16;2621:41123;;;;;;;;;;;;37609:16;:::i;:::-;37627:26;2621:41123;;;;;;;;37627:26;:::i;:::-;2621:41123;;;;;37562:32;;;;;;37518:153;;;;2621:41123;;;;;;;37518:153;;;2621:41123;;;;;;;;;;:::i;:::-;;;;;;;;;;37518:153;2621:41123;;37518:153;;;;;;:::i;:::-;37253:433;;37114:1562;38370:52;38385:20;2621:41123;;;;;;;;38385:20;:::i;38370:52::-;38440:16;38436:117;;37114:1562;38572:93;38578:16;2621:41123;;;;;;;;;;;;38578:16;:::i;:::-;38596:14;2621:41123;;;;;;;;38596:14;:::i;:::-;17442:38;2621:41123;-1:-1:-1;;;;;;38638:26:161;2621:41123;;;;;;;;38638:26;:::i;:::-;2621:41123;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38572:93;;;22236:162;;38436:117;38481:57;38501:20;2621:41123;;;;;;;;38501:20;:::i;:::-;38523:14;2621:41123;;;;;;;;38523:14;:::i;:::-;2621:41123;;;-1:-1:-1;;;;;2621:41123:161;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;38481:57;38436:117;;2621:41123;;;;;;;;;;;;;;;;21601:15;;;;2621:41123;21601:15;2621:41123;;;;;;;1083:131:25;;2621:41123:161;17810:23;2621:41123;;17810:23;2621:41123;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39449:33;;;;;;;:::i;:::-;39492:18;2621:41123;39526:13;2621:41123;39521:628;39556:3;39541:13;;;;;;39689:17;2621:41123;;;;;;;;;;;;;;39896:46;39911:17;2621:41123;;;;;39689:17;;;2621:41123;;39689:17;;;;;:::i;:::-;39708:11;;;;;;:::i;:::-;2621:41123;;20811:50:169;;;;2621:41123:161;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;20811:50:169;;;;;;:::i;:::-;2621:41123:161;20801:61:169;;4093:83:22;;;2621:41123:161;39911:17;;:::i;:::-;39930:11;;;:::i;39896:46::-;39930:11;;;40022;39992:42;40022:11;;:::i;:::-;2621:41123;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;39992:42;39956:183;2621:41123;39526:13;;;;;;39956:183;40112:11;40078:46;40112:11;;:::i;:::-;2621:41123;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;40078:46;39956:183;;39541:13;;;1083:131:25;2621:41123:161;;;;17914:18;;;;;:::i;:::-;;;;2621:41123;;;;17962:21;20811:50:169;2621:41123:161;;17962:21;;:::i;:::-;8798:67;;;:::i;:::-;40643:13;2621:41123;;-1:-1:-1;;;;;;2621:41123:161;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;-1:-1:-1;;2621:41123:161;20418:21;-1:-1:-1;;;;;2621:41123:161;;20666:37;;2621:41123;;;-1:-1:-1;;;;;2621:41123:161;20666:37;:::i;:::-;40867:8;40863:231;;17910:183;;;;2621:41123;;18194:24;2621:41123;;18194:24;2621:41123;18181:37;;;;;18177:110;;17910:183;2621:41123;;18496:18;18425:19;2621:41123;;;;18425:19;:::i;:::-;18496:18;;:::i;:::-;18528:21;20811:50:169;2621:41123:161;;18528:21;;:::i;:::-;18563:26;;2621:41123;;18563:26;;:::i;:::-;2621:41123;18603:38;17442;2621:41123;;17442:38;18603;:::i;:::-;2621:41123;;;21723:279:169;;;;2621:41123:161;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;;;;;;;;;21723:279:169;;;;;;:::i;:::-;2621:41123:161;21700:312:169;;2621:41123:161;;;;;;18177:110;2621:41123;41454:23;2621:41123;;;;;;41454:23;18177:110;;;;40863:231;2621:41123;;;-1:-1:-1;;;;;2621:41123:161;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;41028:55;;;40863:231;;;;17910:183;2621:41123;-1:-1:-1;;;;;18023:21:161;2621:41123;;20811:50:169;18023:21:161;;:::i;:::-;2621:41123;;;;17910:183;;;2621:41123;;;;;;;;;17438:113;17513:26;;;2621:41123;;17513:26;;:::i;:::-;;:::i;:::-;17438:113;;2621:41123;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;:::o;:::-;;-1:-1:-1;;;;;2621:41123:161;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;2621:41123:161;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;2621:41123:161;;;;;;;;-1:-1:-1;;2621:41123:161;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;:::o;9658:102::-;9727:6;-1:-1:-1;;;;;2621:41123:161;9713:10;:20;2621:41123;;9658:102::o;2621:41123::-;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;-1:-1:-1;;2621:41123:161;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2621:41123:161;;;;:::o;:::-;;;:::o;10854:215::-;-1:-1:-1;;;;;2621:41123:161;10918:10;10914:149;;10854:215;:::o;10914:149::-;10927:1;10962:6;;;;;:29;;;;:::i;:::-;;2621:41123;;;10854:215::o;2621:41123::-;;;;10927:1;2621:41123;;10927:1;2621:41123;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2621:41123:161;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;10043:108::-;2621:41123;;-1:-1:-1;;;10102:24:161;;;2621:41123;10102:24;2621:41123;10110:6;-1:-1:-1;;;;;2621:41123:161;10102:24;;;;;;;-1:-1:-1;10102:24:161;;;10043:108;10101:25;2621:41123;;10043:108::o;2621:41123::-;;;;-1:-1:-1;2621:41123:161;10102:24;-1:-1:-1;2621:41123:161;10102:24;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2621:41123;;;;;;;;;8952:89;2621:41123;9010:6;2621:41123;;;;8952:89::o;2621:41123::-;;;;-1:-1:-1;2621:41123:161;;-1:-1:-1;2621:41123:161;10487:228;-1:-1:-1;;;;;2621:41123:161;10550:10;10546:163;;10487:228;:::o;10546:163::-;10598:6;;2621:41123;;10591:54;-1:-1:-1;;;;;10591:14:161;10598:6;10591:14;:::i;:::-;2621:41123;;-1:-1:-1;;;10591:54:161;;10619:10;10591:54;;;2621:41123;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;;;;;10559:1;;2621:41123;10591:54;;;;;;;10559:1;10591:54;;;10546:163;2621:41123;;;;10487:228::o;2621:41123::-;;;;10559:1;2621:41123;10591:54;10559:1;2621:41123;10591:54;;;;2621:41123;10591:54;2621:41123;10591:54;;;;;;;:::i;:::-;;;;7993:107;8058:5;2621:41123;8058:9;2621:41123;;7993:107::o;2621:41123::-;;;;-1:-1:-1;2621:41123:161;;-1:-1:-1;2621:41123:161;41658:182;2621:41123;;-1:-1:-1;;;41760:33:161;;2621:41123;41760:33;;2621:41123;;41760:33;;2621:41123;;-1:-1:-1;;;;;2621:41123:161;41760:33;;;;;;;-1:-1:-1;41760:33:161;;;41658:182;-1:-1:-1;;;;;;2621:41123:161;;41658:182::o;41760:33::-;;;;;;;;;;;;;;;;;:::i;:::-;;;2621:41123;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;41760:33;;;;;;-1:-1:-1;41760:33:161;;863:809:22;1052:614;;;863:809;1052:614;;-1:-1:-1;;1052:614:22;;;-1:-1:-1;;;;;1052:614:22;;;;;;;;;;863:809::o;2621:41123:161:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;2621:41123:161;;;;;;;:::o;23021:1125::-;23279:36;;;:::i;:::-;23278:37;23274:866;;23021:1125;:::o;23274:866::-;23585:13;;;;;:::i;:::-;23581:453;;23274:866;24053:76;;24074:20;;;;;:::i;:::-;24096:16;;;;;;:::i;:::-;24114:14;;;;;;;;:::i;:::-;2621:41123;24096:16;2621:41123;;;;;;;;;;;;24053:76;;:::i;:::-;;;;23021:1125::o;23581:453::-;23636:20;;;-1:-1:-1;23636:20:161;;;;:::i;:::-;23676:16;;;;;;;:::i;:::-;2621:41123;;;23676:16;2621:41123;;;;;;;;;;;23636:57;;23667:7;23636:57;;;:::i;:::-;;23716:8;23712:308;;23581:453;;;23712:308;23936:20;23905:68;23936:20;;:::i;:::-;23958:14;;;;;:::i;:::-;23676:16;2621:41123;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;-1:-1:-1;;;;;2621:41123:161;;;;;;;;;23905:68;2621:41123;42082:253;;-1:-1:-1;;;;;2621:41123:161;42179:10;;42175:133;;42317:11;;42324:4;42082:253;:::o;42175:133::-;2621:41123;42223:46;;;;;42245:5;42223:46;;;:::i;:::-;;42283:14;:::o;27225:3845::-;27364:16;;;;;;:::i;:::-;2621:41123;;-1:-1:-1;;;;;2621:41123:161;27397:20;;;;;:::i;:::-;2621:41123;27397:38;:61;;;;27225:3845;27397:83;;;;27225:3845;27395:86;27391:129;;27560:249;;;;;27825:17;27841:1;27825:17;;;:38;;;27225:3845;27823:41;27819:84;;2943:42;;;;27841:1;2621:41123;;28044:37;;28038:83;;27841:1;28240:95;;;28906:31;28916:21;28906:31;;;:90;;;27225:3845;28906:147;;;27225:3845;28906:204;;;27225:3845;28906:265;;;27225:3845;28906:331;;;27225:3845;28906:373;;;27225:3845;28906:425;;;27225:3845;28906:465;;;27225:3845;28906:515;;;27225:3845;28906:562;;;27225:3845;28906:633;;;27225:3845;28906:687;;;27225:3845;28906:738;;;27225:3845;28891:763;28887:806;;2943:42;;;-1:-1:-1;;2943:42:161;;;27841:1;29863:21;2943:42;29863:21;:::i;:::-;29894:117;;;;;;30230:216;;;;;;;;;;27841:1;30460:17;;27841:1;;30493:83;;;;;;;;27841:1;27225:3845;:::o;30456:586::-;30612:1;30596:17;;30612:1;;30629:91;;;;27841:1;27225:3845;:::o;30592:450::-;30756:1;30740:17;;;;;;;;30736:306;30756:1;;;30773:99;;;;;;;27841:1;27225:3845;:::o;30736:306::-;30908:1;30892:17;30888:154;;30736:306;;;;;;;27841:1;27225:3845;:::o;30888:154::-;30230:216;;;30925:107;;30888:154;;;;;;;;28887:806;29670:12;;;;;2621:41123;29670:12;:::o;28906:738::-;29609:35;29619:25;29609:35;;;28906:738;;:687;29555:38;29565:28;29555:38;;;28906:687;;:633;29484:55;29494:45;29484:55;;;28906:633;;:562;29437:31;29447:21;29437:31;;;28906:562;;:515;29387:34;29397:24;29387:34;;;28906:515;;:465;29347:24;29357:14;29347:24;;;28906:465;;:425;29295:36;29305:26;29295:36;;;28906:425;;:373;29253:26;29263:16;29253:26;;;28906:373;;:331;29187:50;-1:-1:-1;;;;;;;;;;;29187:50:161;;;28906:331;;:265;29126:45;29136:35;29126:45;;;28906:265;;:204;29069:41;29079:31;29069:41;;;28906:204;;:147;29012:41;29022:31;29012:41;;;28906:147;;:90;28953:43;28963:33;28953:43;;;28906:90;;28038:83;28098:12;;;;2621:41123;28098:12;:::o;27825:38::-;27846:17;27862:1;27846:17;;;27825:38;;27391:129;27497:12;;2621:41123;27497:12;:::o;27397:83::-;27462:18;;;;27397:83;;:61;-1:-1:-1;;;;;27439:14:161;;;;;;;:::i;:::-;2621:41123;27439:19;27397:61;;","linkReferences":{},"immutableReferences":{"77303":[{"start":569,"length":32},{"start":797,"length":32},{"start":5097,"length":32},{"start":5258,"length":32},{"start":5421,"length":32},{"start":5603,"length":32}]}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","executableBalanceTopUp(uint128)":"704ed542","executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)":"c6049692","exited()":"5ce6c327","inheritor()":"36a52a18","initialize(address,address,bool,uint128)":"bfa28576","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))":"084f443a","router()":"f887ea40","sendMessage(bytes,bool)":"42129d00","sendReply(bytes32,bytes)":"7a8e0cdd","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AbiInterfaceAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EtherTransferToRouterFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InheritorMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitMessageNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitMessageNotCreatedAndCallerNotInitializer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitializerAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidActorId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFallbackCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IsSmallAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProgramExited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProgramNotExited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferLockedValueToInheritorExternalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WVaraTransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageCallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"callReply\",\"type\":\"bool\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"OwnedBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"ReplyCallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyTransferFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"TransferLockedValueToInheritorFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"executableBalanceTopUpWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exited\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isSmall\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"exited\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"valueToReceiveNegativeSign\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"call\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"transitionHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_callReply\",\"type\":\"bool\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Mirror smart contract is responsible for storing the minimal state of programs on our platform and transitioning from one state to another by calling `performStateTransition(...)`. It's built on actor-model architecture, and in Ethereum, we implement this through \\\"request-response\\\" model. This means we have two types of events: - \\\"Requested\\\" events - when user calls one of the methods marked as \\\"Primary Gear logic\\\" we emit such an event, and all our nodes process it off-chain - \\\"Responded\\\" events - when we receive response from our nodes and transmit it back to Ethereum. All logic called within `performStateTransition(...)` and leading to methods marked as \\\"Private calls related to performStateTransition\\\" are such events. It's important not to confuse these two, as this is how we implement the actor model in Ethereum. Mirror economic model has two balances: - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`. This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`. - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain. It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform. You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users can use it for free. This is called the \\\"reverse-gas model\\\". Developer can also require the presence of `value` in the owned balance when calling methods in a WASM smart contract to protect their program from spam.\",\"errors\":{\"CallerNotRouter()\":[{\"details\":\"Thrown when the caller is not the `Router`.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the `Router` contract is paused and pause-protected Mirror call is attempted.\"}],\"EtherTransferToRouterFailed()\":[{\"details\":\"Thrown when the transfer of Ether to the `Router` fails.\"}],\"InitMessageNotCreated()\":[{\"details\":\"Thrown when the first (init) message is not created by the initializer.\"}],\"InitMessageNotCreatedAndCallerNotInitializer()\":[{\"details\":\"Thrown when the first (init) message is not created and the caller is not the initializer.\"}],\"ProgramExited()\":[{\"details\":\"Thrown when the program is exited and the call is attempted.\"}],\"ProgramNotExited()\":[{\"details\":\"Thrown when the program is not exited and the call is attempted.\"}],\"TransferLockedValueToInheritorExternalFailed()\":[{\"details\":\"Thrown when the transfer of locked value to the inheritor fails (in external call).\"}],\"WVaraTransferFailed()\":[{\"details\":\"Thrown when the transfer of Vara to the `Router` fails.\"}]},\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens.\",\"params\":{\"value\":\"The amount of tokens the user wants to top up. NOTE: It's event for NODES: it requires to top up balance of the program.\"}},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message.\",\"params\":{\"destination\":\"Message destination address.\",\"id\":\"Message ID.\",\"payload\":\"Message payload.\",\"value\":\"Message value. NOTE: It's event for USERS: it informs about new message sent from program.\"}},\"MessageCallFailed(bytes32,address,uint128)\":{\"details\":\"Emitted when the program fails to call outgoing message to other contracts.\",\"params\":{\"destination\":\"Message destination address.\",\"id\":\"Message ID.\",\"value\":\"Message value. NOTE: It's event for USERS: it informs about failed message call from program.\"}},\"MessageQueueingRequested(bytes32,address,bytes,uint128,bool)\":{\"details\":\"Emitted when a new message is sent to be queued.\",\"params\":{\"callReply\":\"Indicates whether the message is sent with callReply flag. NOTE: It's event for NODES: it requires to insert message in the program's queue.\",\"id\":\"Message ID.\",\"payload\":\"Message payload.\",\"source\":\"Message source address.\",\"value\":\"Message value.\"}},\"OwnedBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's owned balance top up with his Ether.\",\"params\":{\"value\":\"The amount of Ether the user wants to top up. NOTE: It's event for NODES: it requires to top up balance of the program (in Ether).\"}},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message.\",\"params\":{\"payload\":\"Reply message payload.\",\"replyCode\":\"The code of the reply, which can be used to identify the type of reply. NOTE: It's event for USERS: it informs about new reply sent from program.\",\"replyTo\":\"The ID of the message being replied to.\",\"value\":\"Reply message value.\"}},\"ReplyCallFailed(uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program fails to call reply message to other contracts.\",\"params\":{\"replyCode\":\"The code of the reply, which can be used to identify the type of reply. NOTE: It's event for USERS: it informs about failed reply call from program.\",\"replyTo\":\"The ID of the message being replied to.\",\"value\":\"Reply message value.\"}},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued.\",\"params\":{\"payload\":\"The payload of the reply.\",\"repliedTo\":\"The ID of the message being replied to.\",\"source\":\"The address of the reply sender.\",\"value\":\"The value of the reply. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"}},\"ReplyTransferFailed(address,uint128)\":{\"details\":\"Emitted when the program fails to transfer value to destination after failed call\",\"params\":{\"destination\":\"The address of the destination.\",\"value\":\"The amount of value that failed to transfer. NOTE: It's event for USERS: it informs about failed transfer of value to destination after failed call.\"}},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed.\",\"params\":{\"stateHash\":\"The new state hash of the program. NOTE: It's event for USERS: it informs about state changes.\"}},\"TransferLockedValueToInheritorFailed(address,uint128)\":{\"details\":\"Emitted when the program fails to transfer locked value to inheritor after exit.\",\"params\":{\"inheritor\":\"The address of the inheritor.\",\"value\":\"The amount of locked value that failed to transfer. NOTE: It's event for USERS: it informs about failed transfer of locked value to inheritor after exit.\"}},\"ValueClaimFailed(bytes32,uint128)\":{\"details\":\"Emitted when a user fails in claiming value request and doesn't receive balance.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"value\":\"The amount of value that failed to claim. NOTE: It's event for USERS: it informs about failed value claim.\"}},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"value\":\"The amount of value claimed. NOTE: It's event for USERS: it informs about value claimed.\"}},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"source\":\"The address of the claim sender. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}}},\"kind\":\"dev\",\"methods\":{\"claimValue(bytes32)\":{\"details\":\"Claim value from message in mailbox. As result of execution, the `ValueClaimingRequested` event will be emitted.\",\"params\":{\"_claimedId\":\"Message ID of the value to be claimed.\"}},\"constructor\":{\"details\":\"Minimal constructor that only sets the immutable `Router` address.\",\"params\":{\"_router\":\"The address of the `Router` contract.\"}},\"executableBalanceTopUp(uint128)\":{\"details\":\"Tops up the executable balance of the program. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\",\"params\":{\"_value\":\"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\"}},\"executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Tops up the executable balance of the program. Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` using permit signature, which can save one transaction for user. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\",\"params\":{\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_v\":\"ECDSA signature parameter.\",\"_value\":\"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\"}},\"initialize(address,address,bool,uint128)\":{\"details\":\"Initializes the contract with the given parameters. Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, so we do the initialization separately after creating `Mirror` in this method.\",\"params\":{\"_abiInterface\":\"The address of the ABI interface. This address will be displayed as \\\"proxy implementation\\\" and is necessary to show the available methods of `Mirror` smart contract on Etherscan. In case it is a Sails framework smart contract, the user can set his own ABI.\",\"_initialExecutableBalance\":\"The initial executable balance to be transferred to the program.\",\"_initializer\":\"The address of the initializer. Only this address will be able to send the first (init) message.\",\"_isSmall\":\"The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details.\"}},\"performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))\":{\"details\":\"Performs state transition for the `Mirror` contract.\",\"params\":{\"_transition\":\"The state transition data.\"},\"returns\":{\"transitionHash\":\"The hash of the performed state transition.\"}},\"sendMessage(bytes,bool)\":{\"details\":\"Sends message to the program. As result of execution, the `MessageQueueingRequested` event will be emitted.\",\"params\":{\"_callReply\":\"Whether to set `call` flag in the reply message.\",\"_payload\":\"The payload of the message.\"},\"returns\":{\"messageId\":\"Message ID of the sent message.\"}},\"sendReply(bytes32,bytes)\":{\"details\":\"Sends reply message to the program. Note that this function does not return `bytes32 messageId` of the sent message, if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` or use SDK in `ethexe/sdk/src/mirror.rs`. As result of execution, the `ReplyQueueingRequested` event will be emitted.\",\"params\":{\"_payload\":\"The payload of the reply message.\",\"_repliedTo\":\"Message ID to which the reply is sent.\"}},\"transferLockedValueToInheritor()\":{\"details\":\"Transfers locked value to the inheritor. Note that this function can be called only after program exited. As result of execution, the `LockedValueTransferRequested` event will be emitted.\"}},\"stateVariables\":{\"ETH_EVENT_ADDR\":{\"details\":\"Special address to which Sails contract sends messages so that Mirror can decode events and re-remit then as Solidity events: - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs\"},\"exited\":{\"details\":\"The bool flag indicates whether the program is exited.\"},\"inheritor\":{\"details\":\"The address of the inheritor, which is set by the program on exit. Inheritor specifies the address to which all available program value should be transferred.\"},\"initializer\":{\"details\":\"The address eligible to send first (init) message.\"},\"isSmall\":{\"details\":\"Flag that indicates what type this `Mirror` smart contract is: - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation (which is usually more expensive in terms of gas to create). This is generally the more popular way and is the one you will most likely use if you are writing programs using the Sails framework. This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`. User writes WASM smart contract on Sails framework called \\\"\\u0421ounter\\\": - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)` and waits for the code to be validated. User also generates \\\"Solidity ABI Interface\\\" to allow incrementing counter or calling other methods within WASM smart contract. Next, we assume user uploads `CounterAbi` smart contract to Ethereum: ```solidity interface ICounter { function init(bool _callReply, uint32 counter) external returns (bytes32 messageId); function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId); // ... other methods } contract CounterAbi is ICounter { function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {} function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {} } ``` User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`, where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as \\\"proxy implementation\\\", and Etherscan will think that `Mirror` has `CounterAbi` methods. User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract: `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror` to create new message and pass the Solidity call to the WASM smart contract on the Sails framework. WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`. - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation (which is usually less expensive in terms of gas to create). This case is suitable if the user develops WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`.\"},\"nonce\":{\"details\":\"Source for message ids unique generation. In-fact represents amount of messages received from Ethereum. Zeroed nonce is always represent init message.\"},\"router\":{\"details\":\"Address of the `Router` contract, which is the sole authority to modify the state of this contract and transfer funds from it. forge-lint: disable-next-item(screaming-snake-case-immutable)\"},\"stateHash\":{\"details\":\"Program's current state hash.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/ICallbacks.sol\":{\"keccak256\":\"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf\",\"dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x0300beb47e6c99090a8775b919bd4c62f9ab055f43d9d8a113e040dbdc66af73\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://0a21a95ffc1959436f60a45d221568ca4d5ab53eaef3032b184986ba4aaf7f7b\",\"dweb:/ipfs/QmWCpmRUHu99EiWk2y3ZZEjbec3Bf56dfNzmkeoARhZQwG\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AbiInterfaceAlreadySet"},{"inputs":[],"type":"error","name":"CallerNotRouter"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"EtherTransferToRouterFailed"},{"inputs":[],"type":"error","name":"InheritorMustBeZero"},{"inputs":[],"type":"error","name":"InitMessageNotCreated"},{"inputs":[],"type":"error","name":"InitMessageNotCreatedAndCallerNotInitializer"},{"inputs":[],"type":"error","name":"InitializerAlreadySet"},{"inputs":[],"type":"error","name":"InvalidActorId"},{"inputs":[],"type":"error","name":"InvalidFallbackCall"},{"inputs":[],"type":"error","name":"IsSmallAlreadySet"},{"inputs":[],"type":"error","name":"ProgramExited"},{"inputs":[],"type":"error","name":"ProgramNotExited"},{"inputs":[],"type":"error","name":"TransferLockedValueToInheritorExternalFailed"},{"inputs":[],"type":"error","name":"WVaraTransferFailed"},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageCallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bool","name":"callReply","type":"bool","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"OwnedBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"ReplyCallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"destination","type":"address","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyTransferFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"inheritor","type":"address","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"TransferLockedValueToInheritorFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUpWithPermit"},{"inputs":[],"stateMutability":"view","type":"function","name":"exited","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"},{"internalType":"bool","name":"_isSmall","type":"bool"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bool","name":"exited","type":"bool"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"bool","name":"valueToReceiveNegativeSign","type":"bool"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]},{"internalType":"bool","name":"call","type":"bool"}]}]}],"stateMutability":"payable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"transitionHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"bool","name":"_callReply","type":"bool"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"devdoc":{"kind":"dev","methods":{"claimValue(bytes32)":{"details":"Claim value from message in mailbox. As result of execution, the `ValueClaimingRequested` event will be emitted.","params":{"_claimedId":"Message ID of the value to be claimed."}},"constructor":{"details":"Minimal constructor that only sets the immutable `Router` address.","params":{"_router":"The address of the `Router` contract."}},"executableBalanceTopUp(uint128)":{"details":"Tops up the executable balance of the program. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.","params":{"_value":"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."}},"executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)":{"details":"Tops up the executable balance of the program. Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` using permit signature, which can save one transaction for user. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.","params":{"_deadline":"Deadline for the transaction to be executed.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_v":"ECDSA signature parameter.","_value":"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."}},"initialize(address,address,bool,uint128)":{"details":"Initializes the contract with the given parameters. Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, so we do the initialization separately after creating `Mirror` in this method.","params":{"_abiInterface":"The address of the ABI interface. This address will be displayed as \"proxy implementation\" and is necessary to show the available methods of `Mirror` smart contract on Etherscan. In case it is a Sails framework smart contract, the user can set his own ABI.","_initialExecutableBalance":"The initial executable balance to be transferred to the program.","_initializer":"The address of the initializer. Only this address will be able to send the first (init) message.","_isSmall":"The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details."}},"performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))":{"details":"Performs state transition for the `Mirror` contract.","params":{"_transition":"The state transition data."},"returns":{"transitionHash":"The hash of the performed state transition."}},"sendMessage(bytes,bool)":{"details":"Sends message to the program. As result of execution, the `MessageQueueingRequested` event will be emitted.","params":{"_callReply":"Whether to set `call` flag in the reply message.","_payload":"The payload of the message."},"returns":{"messageId":"Message ID of the sent message."}},"sendReply(bytes32,bytes)":{"details":"Sends reply message to the program. Note that this function does not return `bytes32 messageId` of the sent message, if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` or use SDK in `ethexe/sdk/src/mirror.rs`. As result of execution, the `ReplyQueueingRequested` event will be emitted.","params":{"_payload":"The payload of the reply message.","_repliedTo":"Message ID to which the reply is sent."}},"transferLockedValueToInheritor()":{"details":"Transfers locked value to the inheritor. Note that this function can be called only after program exited. As result of execution, the `LockedValueTransferRequested` event will be emitted."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/ICallbacks.sol":{"keccak256":"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0","urls":["bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf","dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/Mirror.sol":{"keccak256":"0x0300beb47e6c99090a8775b919bd4c62f9ab055f43d9d8a113e040dbdc66af73","urls":["bzz-raw://0a21a95ffc1959436f60a45d221568ca4d5ab53eaef3032b184986ba4aaf7f7b","dweb:/ipfs/QmWCpmRUHu99EiWk2y3ZZEjbec3Bf56dfNzmkeoARhZQwG"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":77306,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":77309,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":77312,"contract":"src/Mirror.sol:Mirror","label":"exited","offset":0,"slot":"2","type":"t_bool"},{"astId":77315,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":1,"slot":"2","type":"t_address"},{"astId":77318,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"3","type":"t_address"},{"astId":77321,"contract":"src/Mirror.sol:Mirror","label":"isSmall","offset":20,"slot":"3","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":78719,"exportedSymbols":{"ERC1967Utils":[45701],"Gear":[84058],"Hashes":[41483],"ICallbacks":[73742],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001],"Memory":[41257],"Mirror":[78718],"StorageSlot":[49089]},"nodeType":"SourceUnit","src":"74:43671:161","nodes":[{"id":77275,"nodeType":"PragmaDirective","src":"74:24:161","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":77277,"nodeType":"ImportDirective","src":"100:84:161","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":45702,"symbolAliases":[{"foreign":{"id":77276,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"108:12:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77279,"nodeType":"ImportDirective","src":"185:74:161","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":77278,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"193:11:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77281,"nodeType":"ImportDirective","src":"260:60:161","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/Memory.sol","file":"frost-secp256k1-evm/utils/Memory.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":77280,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"268:6:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77283,"nodeType":"ImportDirective","src":"321:73:161","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":77282,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"329:6:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77285,"nodeType":"ImportDirective","src":"395:46:161","nodes":[],"absolutePath":"src/ICallbacks.sol","file":"src/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":73743,"symbolAliases":[{"foreign":{"id":77284,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73742,"src":"403:10:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77287,"nodeType":"ImportDirective","src":"442:40:161","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":77286,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"450:7:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77289,"nodeType":"ImportDirective","src":"483:40:161","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":77288,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"491:7:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77291,"nodeType":"ImportDirective","src":"524:50:161","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":77290,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"532:12:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77293,"nodeType":"ImportDirective","src":"575:44:161","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":78719,"sourceUnit":84059,"symbolAliases":[{"foreign":{"id":77292,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"583:4:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78718,"nodeType":"ContractDefinition","src":"2621:41123:161","nodes":[{"id":77300,"nodeType":"VariableDeclaration","src":"2900:85:161","nodes":[],"constant":true,"documentation":{"id":77297,"nodeType":"StructuredDocumentation","src":"2654:241:161","text":" @dev Special address to which Sails contract sends messages so that Mirror can decode events\n and re-remit then as Solidity events:\n - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs"},"mutability":"constant","name":"ETH_EVENT_ADDR","nameLocation":"2926:14:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77298,"name":"address","nodeType":"ElementaryTypeName","src":"2900:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307846466646664666664646666666464666464666464646464666664646466666666646664646466646","id":77299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2943:42:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF"},"visibility":"internal"},{"id":77303,"nodeType":"VariableDeclaration","src":"3228:31:161","nodes":[],"baseFunctions":[74295],"constant":false,"documentation":{"id":77301,"nodeType":"StructuredDocumentation","src":"2992:231:161","text":" @dev Address of the `Router` contract, which is the sole authority\n to modify the state of this contract and transfer funds from it.\n forge-lint: disable-next-item(screaming-snake-case-immutable)"},"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"3253:6:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77302,"name":"address","nodeType":"ElementaryTypeName","src":"3228:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":77306,"nodeType":"VariableDeclaration","src":"3324:24:161","nodes":[],"baseFunctions":[74301],"constant":false,"documentation":{"id":77304,"nodeType":"StructuredDocumentation","src":"3266:53:161","text":" @dev Program's current state hash."},"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"3339:9:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3324:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":77309,"nodeType":"VariableDeclaration","src":"3558:20:161","nodes":[],"baseFunctions":[74307],"constant":false,"documentation":{"id":77307,"nodeType":"StructuredDocumentation","src":"3355:198:161","text":" @dev Source for message ids unique generation.\n In-fact represents amount of messages received from Ethereum.\n Zeroed nonce is always represent init message."},"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"3573:5:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77308,"name":"uint256","nodeType":"ElementaryTypeName","src":"3558:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":77312,"nodeType":"VariableDeclaration","src":"3668:18:161","nodes":[],"baseFunctions":[74313],"constant":false,"documentation":{"id":77310,"nodeType":"StructuredDocumentation","src":"3585:78:161","text":" @dev The bool flag indicates whether the program is exited."},"functionSelector":"5ce6c327","mutability":"mutable","name":"exited","nameLocation":"3680:6:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77311,"name":"bool","nodeType":"ElementaryTypeName","src":"3668:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":77315,"nodeType":"VariableDeclaration","src":"3940:24:161","nodes":[],"baseFunctions":[74319],"constant":false,"documentation":{"id":77313,"nodeType":"StructuredDocumentation","src":"3741:194:161","text":" @dev The address of the inheritor, which is set by the program on exit.\n Inheritor specifies the address to which all available program value should be transferred."},"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"3955:9:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77314,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":77318,"nodeType":"VariableDeclaration","src":"4050:26:161","nodes":[],"baseFunctions":[74325],"constant":false,"documentation":{"id":77316,"nodeType":"StructuredDocumentation","src":"3971:74:161","text":" @dev The address eligible to send first (init) message."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"4065:11:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77317,"name":"address","nodeType":"ElementaryTypeName","src":"4050:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":77321,"nodeType":"VariableDeclaration","src":"7411:12:161","nodes":[],"constant":false,"documentation":{"id":77319,"nodeType":"StructuredDocumentation","src":"4083:3323:161","text":" @dev Flag that indicates what type this `Mirror` smart contract is:\n - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation\n (which is usually more expensive in terms of gas to create). This is generally the\n more popular way and is the one you will most likely use if you are writing programs using the Sails framework.\n This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and\n new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`.\n User writes WASM smart contract on Sails framework called \"Сounter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)`\n and waits for the code to be validated.\n User also generates \"Solidity ABI Interface\" to allow incrementing counter or calling other methods within WASM smart contract.\n Next, we assume user uploads `CounterAbi` smart contract to Ethereum:\n ```solidity\n interface ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId);\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId);\n // ... other methods\n }\n contract CounterAbi is ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {}\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {}\n }\n ```\n User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`,\n where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as \"proxy implementation\",\n and Etherscan will think that `Mirror` has `CounterAbi` methods.\n User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract:\n `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call\n and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror`\n to create new message and pass the Solidity call to the WASM smart contract on the Sails framework.\n WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`.\n - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation\n (which is usually less expensive in terms of gas to create). This case is suitable if the user develops\n WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors\n (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`."},"mutability":"mutable","name":"isSmall","nameLocation":"7416:7:161","scope":78718,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77320,"name":"bool","nodeType":"ElementaryTypeName","src":"7411:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"id":77332,"nodeType":"FunctionDefinition","src":"7585:62:161","nodes":[],"body":{"id":77331,"nodeType":"Block","src":"7614:33:161","nodes":[],"statements":[{"expression":{"id":77329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77327,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"7624:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77328,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77324,"src":"7633:7:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7624:16:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77330,"nodeType":"ExpressionStatement","src":"7624:16:161"}]},"documentation":{"id":77322,"nodeType":"StructuredDocumentation","src":"7430:150:161","text":" @dev Minimal constructor that only sets the immutable `Router` address.\n @param _router The address of the `Router` contract."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":77325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77324,"mutability":"mutable","name":"_router","nameLocation":"7605:7:161","nodeType":"VariableDeclaration","scope":77332,"src":"7597:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77323,"name":"address","nodeType":"ElementaryTypeName","src":"7597:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7596:17:161"},"returnParameters":{"id":77326,"nodeType":"ParameterList","parameters":[],"src":"7614:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":77340,"nodeType":"ModifierDefinition","src":"7804:83:161","nodes":[],"body":{"id":77339,"nodeType":"Block","src":"7836:51:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77335,"name":"_onlyAfterInitMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77353,"src":"7846:21:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7846:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77337,"nodeType":"ExpressionStatement","src":"7846:23:161"},{"id":77338,"nodeType":"PlaceholderStatement","src":"7879:1:161"}]},"documentation":{"id":77333,"nodeType":"StructuredDocumentation","src":"7676:123:161","text":" @dev Functions marked with this modifier can only be called if the init message has been created before."},"name":"onlyAfterInitMessage","nameLocation":"7813:20:161","parameters":{"id":77334,"nodeType":"ParameterList","parameters":[],"src":"7833:2:161"},"virtual":false,"visibility":"internal"},{"id":77353,"nodeType":"FunctionDefinition","src":"7993:107:161","nodes":[],"body":{"id":77352,"nodeType":"Block","src":"8040:60:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77345,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"8058:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8066:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8058:9:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77348,"name":"InitMessageNotCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74253,"src":"8069:21:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77344,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8050:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:43:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77351,"nodeType":"ExpressionStatement","src":"8050:43:161"}]},"documentation":{"id":77341,"nodeType":"StructuredDocumentation","src":"7893:95:161","text":" @dev Internal function to check if the init message has been created before."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyAfterInitMessage","nameLocation":"8002:21:161","parameters":{"id":77342,"nodeType":"ParameterList","parameters":[],"src":"8023:2:161"},"returnParameters":{"id":77343,"nodeType":"ParameterList","parameters":[],"src":"8040:0:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77361,"nodeType":"ModifierDefinition","src":"8267:109:161","nodes":[],"body":{"id":77360,"nodeType":"Block","src":"8312:64:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77356,"name":"_onlyAfterInitMessageOrInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77379,"src":"8322:34:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8322:36:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77358,"nodeType":"ExpressionStatement","src":"8322:36:161"},{"id":77359,"nodeType":"PlaceholderStatement","src":"8368:1:161"}]},"documentation":{"id":77354,"nodeType":"StructuredDocumentation","src":"8106:156:161","text":" @dev Functions marked with this modifier can only be called if the init message has been created before or the caller is the initializer."},"name":"onlyAfterInitMessageOrInitializer","nameLocation":"8276:33:161","parameters":{"id":77355,"nodeType":"ParameterList","parameters":[],"src":"8309:2:161"},"virtual":false,"visibility":"internal"},{"id":77379,"nodeType":"FunctionDefinition","src":"8515:172:161","nodes":[],"body":{"id":77378,"nodeType":"Block","src":"8575:112:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77366,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"8593:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8601:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8593:9:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77369,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8606:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8610:6:161","memberName":"sender","nodeType":"MemberAccess","src":"8606:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":77371,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77318,"src":"8620:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8606:25:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8593:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77374,"name":"InitMessageNotCreatedAndCallerNotInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74256,"src":"8633:44:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8633:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77365,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8585:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8585:95:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77377,"nodeType":"ExpressionStatement","src":"8585:95:161"}]},"documentation":{"id":77362,"nodeType":"StructuredDocumentation","src":"8382:128:161","text":" @dev Internal function to check if the init message has been created before or the caller is the initializer."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyAfterInitMessageOrInitializer","nameLocation":"8524:34:161","parameters":{"id":77363,"nodeType":"ParameterList","parameters":[],"src":"8558:2:161"},"returnParameters":{"id":77364,"nodeType":"ParameterList","parameters":[],"src":"8575:0:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77387,"nodeType":"ModifierDefinition","src":"8798:67:161","nodes":[],"body":{"id":77386,"nodeType":"Block","src":"8822:43:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77382,"name":"_onlyIfActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77399,"src":"8832:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8832:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77384,"nodeType":"ExpressionStatement","src":"8832:15:161"},{"id":77385,"nodeType":"PlaceholderStatement","src":"8857:1:161"}]},"documentation":{"id":77380,"nodeType":"StructuredDocumentation","src":"8693:100:161","text":" @dev Functions marked with this modifier can only be called if program is active."},"name":"onlyIfActive","nameLocation":"8807:12:161","parameters":{"id":77381,"nodeType":"ParameterList","parameters":[],"src":"8819:2:161"},"virtual":false,"visibility":"internal"},{"id":77399,"nodeType":"FunctionDefinition","src":"8952:89:161","nodes":[],"body":{"id":77398,"nodeType":"Block","src":"8991:50:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9009:7:161","subExpression":{"id":77392,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77312,"src":"9010:6:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77394,"name":"ProgramExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74259,"src":"9018:13:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9018:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77391,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9001:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9001:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77397,"nodeType":"ExpressionStatement","src":"9001:33:161"}]},"documentation":{"id":77388,"nodeType":"StructuredDocumentation","src":"8871:76:161","text":" @dev Internal function to check if the program is active."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyIfActive","nameLocation":"8961:13:161","parameters":{"id":77389,"nodeType":"ParameterList","parameters":[],"src":"8974:2:161"},"returnParameters":{"id":77390,"nodeType":"ParameterList","parameters":[],"src":"8991:0:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77407,"nodeType":"ModifierDefinition","src":"9152:67:161","nodes":[],"body":{"id":77406,"nodeType":"Block","src":"9176:43:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77402,"name":"_onlyIfExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77418,"src":"9186:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77404,"nodeType":"ExpressionStatement","src":"9186:15:161"},{"id":77405,"nodeType":"PlaceholderStatement","src":"9211:1:161"}]},"documentation":{"id":77400,"nodeType":"StructuredDocumentation","src":"9047:100:161","text":" @dev Functions marked with this modifier can only be called if program is exited."},"name":"onlyIfExited","nameLocation":"9161:12:161","parameters":{"id":77401,"nodeType":"ParameterList","parameters":[],"src":"9173:2:161"},"virtual":false,"visibility":"internal"},{"id":77418,"nodeType":"FunctionDefinition","src":"9306:91:161","nodes":[],"body":{"id":77417,"nodeType":"Block","src":"9345:52:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77412,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77312,"src":"9363:6:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77413,"name":"ProgramNotExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74262,"src":"9371:16:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9371:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77411,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9355:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9355:35:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77416,"nodeType":"ExpressionStatement","src":"9355:35:161"}]},"documentation":{"id":77408,"nodeType":"StructuredDocumentation","src":"9225:76:161","text":" @dev Internal function to check if the program is exited."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyIfExited","nameLocation":"9315:13:161","parameters":{"id":77409,"nodeType":"ParameterList","parameters":[],"src":"9328:2:161"},"returnParameters":{"id":77410,"nodeType":"ParameterList","parameters":[],"src":"9345:0:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77426,"nodeType":"ModifierDefinition","src":"9503:63:161","nodes":[],"body":{"id":77425,"nodeType":"Block","src":"9525:41:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77421,"name":"_onlyRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77440,"src":"9535:11:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9535:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77423,"nodeType":"ExpressionStatement","src":"9535:13:161"},{"id":77424,"nodeType":"PlaceholderStatement","src":"9558:1:161"}]},"documentation":{"id":77419,"nodeType":"StructuredDocumentation","src":"9403:95:161","text":" @dev Functions marked with this modifier can only be called by the `Router`."},"name":"onlyRouter","nameLocation":"9512:10:161","parameters":{"id":77420,"nodeType":"ParameterList","parameters":[],"src":"9522:2:161"},"virtual":false,"visibility":"internal"},{"id":77440,"nodeType":"FunctionDefinition","src":"9658:102:161","nodes":[],"body":{"id":77439,"nodeType":"Block","src":"9695:65:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77431,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9713:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9717:6:161","memberName":"sender","nodeType":"MemberAccess","src":"9713:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":77433,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"9727:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9713:20:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77435,"name":"CallerNotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74265,"src":"9735:15:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9735:17:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77430,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9705:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9705:48:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77438,"nodeType":"ExpressionStatement","src":"9705:48:161"}]},"documentation":{"id":77427,"nodeType":"StructuredDocumentation","src":"9572:81:161","text":" @dev Internal function to check if the caller is the `Router`."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyRouter","nameLocation":"9667:11:161","parameters":{"id":77428,"nodeType":"ParameterList","parameters":[],"src":"9678:2:161"},"returnParameters":{"id":77429,"nodeType":"ParameterList","parameters":[],"src":"9695:0:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77448,"nodeType":"ModifierDefinition","src":"9882:69:161","nodes":[],"body":{"id":77447,"nodeType":"Block","src":"9907:44:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77443,"name":"_whenNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77464,"src":"9917:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9917:16:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77445,"nodeType":"ExpressionStatement","src":"9917:16:161"},{"id":77446,"nodeType":"PlaceholderStatement","src":"9943:1:161"}]},"documentation":{"id":77441,"nodeType":"StructuredDocumentation","src":"9766:111:161","text":" @dev Functions marked with this modifier can only be called when the `Router` is not paused."},"name":"whenNotPaused","nameLocation":"9891:13:161","parameters":{"id":77442,"nodeType":"ParameterList","parameters":[],"src":"9904:2:161"},"virtual":false,"visibility":"internal"},{"id":77464,"nodeType":"FunctionDefinition","src":"10043:108:161","nodes":[],"body":{"id":77463,"nodeType":"Block","src":"10083:68:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10101:25:161","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77454,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"10110:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77453,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"10102:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$74985_$","typeString":"type(contract IRouter)"}},"id":77455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10102:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":77456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10118:6:161","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":74748,"src":"10102:22:161","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":77457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10102:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77459,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74268,"src":"10128:13:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10128:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77452,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10093:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10093:51:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77462,"nodeType":"ExpressionStatement","src":"10093:51:161"}]},"documentation":{"id":77449,"nodeType":"StructuredDocumentation","src":"9957:81:161","text":" @dev Internal function to check if the `Router` is not paused."},"implemented":true,"kind":"function","modifiers":[],"name":"_whenNotPaused","nameLocation":"10052:14:161","parameters":{"id":77450,"nodeType":"ParameterList","parameters":[],"src":"10066:2:161"},"returnParameters":{"id":77451,"nodeType":"ParameterList","parameters":[],"src":"10083:0:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77475,"nodeType":"ModifierDefinition","src":"10289:89:161","nodes":[],"body":{"id":77474,"nodeType":"Block","src":"10328:50:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77467,"src":"10354:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77469,"name":"_retrievingVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77505,"src":"10338:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10338:22:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77472,"nodeType":"ExpressionStatement","src":"10338:22:161"},{"id":77473,"nodeType":"PlaceholderStatement","src":"10370:1:161"}]},"documentation":{"id":77465,"nodeType":"StructuredDocumentation","src":"10157:127:161","text":" @dev Non-zero Vara value must be transferred from source to `Router` in functions marked with this modifier."},"name":"retrievingVara","nameLocation":"10298:14:161","parameters":{"id":77468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77467,"mutability":"mutable","name":"value","nameLocation":"10321:5:161","nodeType":"VariableDeclaration","scope":77475,"src":"10313:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77466,"name":"uint128","nodeType":"ElementaryTypeName","src":"10313:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10312:15:161"},"virtual":false,"visibility":"internal"},{"id":77505,"nodeType":"FunctionDefinition","src":"10487:228:161","nodes":[],"body":{"id":77504,"nodeType":"Block","src":"10536:179:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":77483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77481,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77478,"src":"10550:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":77482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10559:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10550:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77503,"nodeType":"IfStatement","src":"10546:163:161","trueBody":{"id":77502,"nodeType":"Block","src":"10562:147:161","statements":[{"assignments":[77485],"declarations":[{"constant":false,"id":77485,"mutability":"mutable","name":"success","nameLocation":"10581:7:161","nodeType":"VariableDeclaration","scope":77502,"src":"10576:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77484,"name":"bool","nodeType":"ElementaryTypeName","src":"10576:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":77495,"initialValue":{"arguments":[{"expression":{"id":77490,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10619:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10623:6:161","memberName":"sender","nodeType":"MemberAccess","src":"10619:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77492,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"10631:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77478,"src":"10639:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":77487,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"10598:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77486,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78626,"src":"10591:6:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$75001_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":77488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10591:14:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":77489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10606:12:161","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"10591:27:161","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":77494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10591:54:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10576:69:161"},{"expression":{"arguments":[{"id":77497,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77485,"src":"10667:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77498,"name":"WVaraTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74271,"src":"10676:19:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10676:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77496,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10659:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10659:39:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77501,"nodeType":"ExpressionStatement","src":"10659:39:161"}]}}]},"documentation":{"id":77476,"nodeType":"StructuredDocumentation","src":"10384:98:161","text":" @dev Internal function to transfer non-zero Vara value from source to `Router`."},"implemented":true,"kind":"function","modifiers":[],"name":"_retrievingVara","nameLocation":"10496:15:161","parameters":{"id":77479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77478,"mutability":"mutable","name":"value","nameLocation":"10520:5:161","nodeType":"VariableDeclaration","scope":77505,"src":"10512:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77477,"name":"uint128","nodeType":"ElementaryTypeName","src":"10512:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10511:15:161"},"returnParameters":{"id":77480,"nodeType":"ParameterList","parameters":[],"src":"10536:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":77532,"nodeType":"FunctionDefinition","src":"10854:215:161","nodes":[],"body":{"id":77531,"nodeType":"Block","src":"10904:165:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":77513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77508,"src":"10918:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":77512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10927:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10918:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77530,"nodeType":"IfStatement","src":"10914:149:161","trueBody":{"id":77529,"nodeType":"Block","src":"10930:133:161","statements":[{"assignments":[77515,null],"declarations":[{"constant":false,"id":77515,"mutability":"mutable","name":"success","nameLocation":"10950:7:161","nodeType":"VariableDeclaration","scope":77529,"src":"10945:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77514,"name":"bool","nodeType":"ElementaryTypeName","src":"10945:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":77522,"initialValue":{"arguments":[{"hexValue":"","id":77520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10988:2:161","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":77516,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"10962:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10969:4:161","memberName":"call","nodeType":"MemberAccess","src":"10962:11:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":77519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":77518,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77508,"src":"10981:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"10962:25:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":77521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10962:29:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"10944:47:161"},{"expression":{"arguments":[{"id":77524,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77515,"src":"11013:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77525,"name":"EtherTransferToRouterFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74274,"src":"11022:27:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11022:29:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77523,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11005:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11005:47:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77528,"nodeType":"ExpressionStatement","src":"11005:47:161"}]}}]},"documentation":{"id":77506,"nodeType":"StructuredDocumentation","src":"10721:128:161","text":" @dev Non-zero Ether value must be transferred from source to `Router` in functions marked with this modifier."},"implemented":true,"kind":"function","modifiers":[],"name":"_retrievingEther","nameLocation":"10863:16:161","parameters":{"id":77509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77508,"mutability":"mutable","name":"value","nameLocation":"10888:5:161","nodeType":"VariableDeclaration","scope":77532,"src":"10880:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77507,"name":"uint128","nodeType":"ElementaryTypeName","src":"10880:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"10879:15:161"},"returnParameters":{"id":77510,"nodeType":"ParameterList","parameters":[],"src":"10904:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":77550,"nodeType":"FunctionDefinition","src":"11454:216:161","nodes":[],"body":{"id":77549,"nodeType":"Block","src":"11612:58:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77545,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77535,"src":"11642:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":77546,"name":"_callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77537,"src":"11652:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":77544,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77917,"src":"11629:12:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes calldata,bool) returns (bytes32)"}},"id":77547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11629:34:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77543,"id":77548,"nodeType":"Return","src":"11622:41:161"}]},"baseFunctions":[74335],"documentation":{"id":77533,"nodeType":"StructuredDocumentation","src":"11124:325:161","text":" @dev Sends message to the program.\n As result of execution, the `MessageQueueingRequested` event will be emitted.\n @param _payload The payload of the message.\n @param _callReply Whether to set `call` flag in the reply message.\n @return messageId Message ID of the sent message."},"functionSelector":"42129d00","implemented":true,"kind":"function","modifiers":[{"id":77540,"kind":"modifierInvocation","modifierName":{"id":77539,"name":"whenNotPaused","nameLocations":["11558:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"11558:13:161"},"nodeType":"ModifierInvocation","src":"11558:13:161"}],"name":"sendMessage","nameLocation":"11463:11:161","parameters":{"id":77538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77535,"mutability":"mutable","name":"_payload","nameLocation":"11490:8:161","nodeType":"VariableDeclaration","scope":77550,"src":"11475:23:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":77534,"name":"bytes","nodeType":"ElementaryTypeName","src":"11475:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":77537,"mutability":"mutable","name":"_callReply","nameLocation":"11505:10:161","nodeType":"VariableDeclaration","scope":77550,"src":"11500:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77536,"name":"bool","nodeType":"ElementaryTypeName","src":"11500:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11474:42:161"},"returnParameters":{"id":77543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77542,"mutability":"mutable","name":"messageId","nameLocation":"11597:9:161","nodeType":"VariableDeclaration","scope":77550,"src":"11589:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77541,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11589:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11588:19:161"},"scope":78718,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77585,"nodeType":"FunctionDefinition","src":"12211:340:161","nodes":[],"body":{"id":77584,"nodeType":"Block","src":"12384:167:161","nodes":[],"statements":[{"assignments":[77565],"declarations":[{"constant":false,"id":77565,"mutability":"mutable","name":"_value","nameLocation":"12402:6:161","nodeType":"VariableDeclaration","scope":77584,"src":"12394:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77564,"name":"uint128","nodeType":"ElementaryTypeName","src":"12394:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":77571,"initialValue":{"arguments":[{"expression":{"id":77568,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12419:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12423:5:161","memberName":"value","nodeType":"MemberAccess","src":"12419:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12411:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":77566,"name":"uint128","nodeType":"ElementaryTypeName","src":"12411:7:161","typeDescriptions":{}}},"id":77570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12411:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"12394:35:161"},{"expression":{"arguments":[{"id":77573,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77565,"src":"12457:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77572,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77532,"src":"12440:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12440:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77575,"nodeType":"ExpressionStatement","src":"12440:24:161"},{"eventCall":{"arguments":[{"id":77577,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77553,"src":"12503:10:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77578,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12515:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12519:6:161","memberName":"sender","nodeType":"MemberAccess","src":"12515:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77580,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77555,"src":"12527:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":77581,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77565,"src":"12537:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77576,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74165,"src":"12480:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":77582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12480:64:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77583,"nodeType":"EmitStatement","src":"12475:69:161"}]},"baseFunctions":[74343],"documentation":{"id":77551,"nodeType":"StructuredDocumentation","src":"11676:530:161","text":" @dev Sends reply message to the program.\n Note that this function does not return `bytes32 messageId` of the sent message,\n if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)`\n or use SDK in `ethexe/sdk/src/mirror.rs`.\n As result of execution, the `ReplyQueueingRequested` event will be emitted.\n @param _repliedTo Message ID to which the reply is sent.\n @param _payload The payload of the reply message."},"functionSelector":"7a8e0cdd","implemented":true,"kind":"function","modifiers":[{"id":77558,"kind":"modifierInvocation","modifierName":{"id":77557,"name":"whenNotPaused","nameLocations":["12316:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"12316:13:161"},"nodeType":"ModifierInvocation","src":"12316:13:161"},{"id":77560,"kind":"modifierInvocation","modifierName":{"id":77559,"name":"onlyIfActive","nameLocations":["12338:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77387,"src":"12338:12:161"},"nodeType":"ModifierInvocation","src":"12338:12:161"},{"id":77562,"kind":"modifierInvocation","modifierName":{"id":77561,"name":"onlyAfterInitMessage","nameLocations":["12359:20:161"],"nodeType":"IdentifierPath","referencedDeclaration":77340,"src":"12359:20:161"},"nodeType":"ModifierInvocation","src":"12359:20:161"}],"name":"sendReply","nameLocation":"12220:9:161","parameters":{"id":77556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77553,"mutability":"mutable","name":"_repliedTo","nameLocation":"12238:10:161","nodeType":"VariableDeclaration","scope":77585,"src":"12230:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77552,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12230:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":77555,"mutability":"mutable","name":"_payload","nameLocation":"12265:8:161","nodeType":"VariableDeclaration","scope":77585,"src":"12250:23:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":77554,"name":"bytes","nodeType":"ElementaryTypeName","src":"12250:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12229:45:161"},"returnParameters":{"id":77563,"nodeType":"ParameterList","parameters":[],"src":"12384:0:161"},"scope":78718,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77604,"nodeType":"FunctionDefinition","src":"12841:165:161","nodes":[],"body":{"id":77603,"nodeType":"Block","src":"12938:68:161","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":77598,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77588,"src":"12976:10:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77599,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12988:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12992:6:161","memberName":"sender","nodeType":"MemberAccess","src":"12988:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":77597,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74172,"src":"12953:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":77601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12953:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77602,"nodeType":"EmitStatement","src":"12948:51:161"}]},"baseFunctions":[74349],"documentation":{"id":77586,"nodeType":"StructuredDocumentation","src":"12624:212:161","text":" @dev Claim value from message in mailbox.\n As result of execution, the `ValueClaimingRequested` event will be emitted.\n @param _claimedId Message ID of the value to be claimed."},"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":77591,"kind":"modifierInvocation","modifierName":{"id":77590,"name":"whenNotPaused","nameLocations":["12890:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"12890:13:161"},"nodeType":"ModifierInvocation","src":"12890:13:161"},{"id":77593,"kind":"modifierInvocation","modifierName":{"id":77592,"name":"onlyIfActive","nameLocations":["12904:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77387,"src":"12904:12:161"},"nodeType":"ModifierInvocation","src":"12904:12:161"},{"id":77595,"kind":"modifierInvocation","modifierName":{"id":77594,"name":"onlyAfterInitMessage","nameLocations":["12917:20:161"],"nodeType":"IdentifierPath","referencedDeclaration":77340,"src":"12917:20:161"},"nodeType":"ModifierInvocation","src":"12917:20:161"}],"name":"claimValue","nameLocation":"12850:10:161","parameters":{"id":77589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77588,"mutability":"mutable","name":"_claimedId","nameLocation":"12869:10:161","nodeType":"VariableDeclaration","scope":77604,"src":"12861:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12861:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12860:20:161"},"returnParameters":{"id":77596,"nodeType":"ParameterList","parameters":[],"src":"12938:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77622,"nodeType":"FunctionDefinition","src":"13307:168:161","nodes":[],"body":{"id":77621,"nodeType":"Block","src":"13414:61:161","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":77618,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77607,"src":"13461:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77617,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"13429:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13429:39:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77620,"nodeType":"EmitStatement","src":"13424:44:161"}]},"baseFunctions":[74355],"documentation":{"id":77605,"nodeType":"StructuredDocumentation","src":"13012:290:161","text":" @dev Tops up the executable balance of the program.\n As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\n @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."},"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":77610,"kind":"modifierInvocation","modifierName":{"id":77609,"name":"whenNotPaused","nameLocations":["13364:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"13364:13:161"},"nodeType":"ModifierInvocation","src":"13364:13:161"},{"id":77612,"kind":"modifierInvocation","modifierName":{"id":77611,"name":"onlyIfActive","nameLocations":["13378:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77387,"src":"13378:12:161"},"nodeType":"ModifierInvocation","src":"13378:12:161"},{"arguments":[{"id":77614,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77607,"src":"13406:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":77615,"kind":"modifierInvocation","modifierName":{"id":77613,"name":"retrievingVara","nameLocations":["13391:14:161"],"nodeType":"IdentifierPath","referencedDeclaration":77475,"src":"13391:14:161"},"nodeType":"ModifierInvocation","src":"13391:22:161"}],"name":"executableBalanceTopUp","nameLocation":"13316:22:161","parameters":{"id":77608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77607,"mutability":"mutable","name":"_value","nameLocation":"13347:6:161","nodeType":"VariableDeclaration","scope":77622,"src":"13339:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77606,"name":"uint128","nodeType":"ElementaryTypeName","src":"13339:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"13338:16:161"},"returnParameters":{"id":77616,"nodeType":"ParameterList","parameters":[],"src":"13414:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77670,"nodeType":"FunctionDefinition","src":"14182:374:161","nodes":[],"body":{"id":77669,"nodeType":"Block","src":"14357:199:161","nodes":[],"statements":[{"clauses":[{"block":{"id":77656,"nodeType":"Block","src":"14451:2:161","statements":[]},"errorName":"","id":77657,"nodeType":"TryCatchClause","src":"14451:2:161"},{"block":{"id":77658,"nodeType":"Block","src":"14460:2:161","statements":[]},"errorName":"","id":77659,"nodeType":"TryCatchClause","src":"14454:8:161"}],"externalCall":{"arguments":[{"expression":{"id":77644,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14393:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14397:6:161","memberName":"sender","nodeType":"MemberAccess","src":"14393:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":77648,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"14413:4:161","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$78718","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$78718","typeString":"contract Mirror"}],"id":77647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14405:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77646,"name":"address","nodeType":"ElementaryTypeName","src":"14405:7:161","typeDescriptions":{}}},"id":77649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14405:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77650,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77625,"src":"14420:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":77651,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77627,"src":"14428:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77652,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77629,"src":"14439:2:161","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":77653,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77631,"src":"14443:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":77654,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77633,"src":"14447:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":77641,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"14378:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77640,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78626,"src":"14371:6:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$75001_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":77642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14371:14:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":77643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14386:6:161","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"14371:21:161","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":77655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14371:79:161","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77660,"nodeType":"TryStatement","src":"14367:95:161"},{"expression":{"arguments":[{"id":77662,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77625,"src":"14487:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77661,"name":"_retrievingVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77505,"src":"14471:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14471:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77664,"nodeType":"ExpressionStatement","src":"14471:23:161"},{"eventCall":{"arguments":[{"id":77666,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77625,"src":"14542:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77665,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"14510:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14510:39:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77668,"nodeType":"EmitStatement","src":"14505:44:161"}]},"baseFunctions":[74369],"documentation":{"id":77623,"nodeType":"StructuredDocumentation","src":"13481:696:161","text":" @dev Tops up the executable balance of the program.\n Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router`\n using permit signature, which can save one transaction for user.\n As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\n @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter."},"functionSelector":"c6049692","implemented":true,"kind":"function","modifiers":[{"id":77636,"kind":"modifierInvocation","modifierName":{"id":77635,"name":"whenNotPaused","nameLocations":["14318:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"14318:13:161"},"nodeType":"ModifierInvocation","src":"14318:13:161"},{"id":77638,"kind":"modifierInvocation","modifierName":{"id":77637,"name":"onlyIfActive","nameLocations":["14340:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77387,"src":"14340:12:161"},"nodeType":"ModifierInvocation","src":"14340:12:161"}],"name":"executableBalanceTopUpWithPermit","nameLocation":"14191:32:161","parameters":{"id":77634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77625,"mutability":"mutable","name":"_value","nameLocation":"14232:6:161","nodeType":"VariableDeclaration","scope":77670,"src":"14224:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77624,"name":"uint128","nodeType":"ElementaryTypeName","src":"14224:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":77627,"mutability":"mutable","name":"_deadline","nameLocation":"14248:9:161","nodeType":"VariableDeclaration","scope":77670,"src":"14240:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77626,"name":"uint256","nodeType":"ElementaryTypeName","src":"14240:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77629,"mutability":"mutable","name":"_v","nameLocation":"14265:2:161","nodeType":"VariableDeclaration","scope":77670,"src":"14259:8:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":77628,"name":"uint8","nodeType":"ElementaryTypeName","src":"14259:5:161","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":77631,"mutability":"mutable","name":"_r","nameLocation":"14277:2:161","nodeType":"VariableDeclaration","scope":77670,"src":"14269:10:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77630,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14269:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":77633,"mutability":"mutable","name":"_s","nameLocation":"14289:2:161","nodeType":"VariableDeclaration","scope":77670,"src":"14281:10:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14281:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14223:69:161"},"returnParameters":{"id":77639,"nodeType":"ParameterList","parameters":[],"src":"14357:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77688,"nodeType":"FunctionDefinition","src":"14802:208:161","nodes":[],"body":{"id":77687,"nodeType":"Block","src":"14867:143:161","nodes":[],"statements":[{"assignments":[null,77677],"declarations":[null,{"constant":false,"id":77677,"mutability":"mutable","name":"success","nameLocation":"14885:7:161","nodeType":"VariableDeclaration","scope":77687,"src":"14880:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77676,"name":"bool","nodeType":"ElementaryTypeName","src":"14880:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":77680,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":77678,"name":"_transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77950,"src":"14896:31:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint128_$_t_bool_$","typeString":"function () returns (uint128,bool)"}},"id":77679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14896:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"nodeType":"VariableDeclarationStatement","src":"14877:52:161"},{"expression":{"arguments":[{"id":77682,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77677,"src":"14947:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77683,"name":"TransferLockedValueToInheritorExternalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74277,"src":"14956:44:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14956:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77681,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14939:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14939:64:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77686,"nodeType":"ExpressionStatement","src":"14939:64:161"}]},"baseFunctions":[74373],"documentation":{"id":77671,"nodeType":"StructuredDocumentation","src":"14562:235:161","text":" @dev Transfers locked value to the inheritor.\n Note that this function can be called only after program exited.\n As result of execution, the `LockedValueTransferRequested` event will be emitted."},"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":77674,"kind":"modifierInvocation","modifierName":{"id":77673,"name":"whenNotPaused","nameLocations":["14853:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"14853:13:161"},"nodeType":"ModifierInvocation","src":"14853:13:161"}],"name":"transferLockedValueToInheritor","nameLocation":"14811:30:161","parameters":{"id":77672,"nodeType":"ParameterList","parameters":[],"src":"14841:2:161"},"returnParameters":{"id":77675,"nodeType":"ParameterList","parameters":[],"src":"14867:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77767,"nodeType":"FunctionDefinition","src":"16008:749:161","nodes":[],"body":{"id":77766,"nodeType":"Block","src":"16163:594:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77703,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77318,"src":"16181:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16204:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16196:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77704,"name":"address","nodeType":"ElementaryTypeName","src":"16196:7:161","typeDescriptions":{}}},"id":77707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16196:10:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16181:25:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77709,"name":"InitializerAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74279,"src":"16208:21:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16208:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77702,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16173:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16173:59:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77712,"nodeType":"ExpressionStatement","src":"16173:59:161"},{"expression":{"arguments":[{"id":77715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16251:8:161","subExpression":{"id":77714,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77321,"src":"16252:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77716,"name":"IsSmallAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74281,"src":"16261:17:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16261:19:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77713,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16243:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16243:38:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77719,"nodeType":"ExpressionStatement","src":"16243:38:161"},{"assignments":[77724],"declarations":[{"constant":false,"id":77724,"mutability":"mutable","name":"implementationSlot","nameLocation":"16324:18:161","nodeType":"VariableDeclaration","scope":77766,"src":"16292:50:161","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":77723,"nodeType":"UserDefinedTypeName","pathNode":{"id":77722,"name":"StorageSlot.AddressSlot","nameLocations":["16292:11:161","16304:11:161"],"nodeType":"IdentifierPath","referencedDeclaration":48971,"src":"16292:23:161"},"referencedDeclaration":48971,"src":"16292:23:161","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"id":77730,"initialValue":{"arguments":[{"expression":{"id":77727,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"16384:12:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":77728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16397:19:161","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":45422,"src":"16384:32:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77725,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"16357:11:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":77726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16369:14:161","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":49000,"src":"16357:26:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$48971_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":77729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16357:60:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16292:125:161"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77732,"name":"implementationSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77724,"src":"16436:18:161","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":77733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16455:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48970,"src":"16436:24:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16472:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16464:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77734,"name":"address","nodeType":"ElementaryTypeName","src":"16464:7:161","typeDescriptions":{}}},"id":77737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16464:10:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16436:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77739,"name":"AbiInterfaceAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74283,"src":"16476:22:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16476:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77731,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16428:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16428:73:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77742,"nodeType":"ExpressionStatement","src":"16428:73:161"},{"expression":{"id":77745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77743,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77318,"src":"16512:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77744,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77691,"src":"16526:12:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16512:26:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77746,"nodeType":"ExpressionStatement","src":"16512:26:161"},{"expression":{"id":77749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77747,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77321,"src":"16548:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77748,"name":"_isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77695,"src":"16558:8:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16548:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77750,"nodeType":"ExpressionStatement","src":"16548:18:161"},{"expression":{"id":77755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77751,"name":"implementationSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77724,"src":"16576:18:161","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":77753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16595:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48970,"src":"16576:24:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77754,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77693,"src":"16603:13:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16576:40:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77756,"nodeType":"ExpressionStatement","src":"16576:40:161"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":77759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77757,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77697,"src":"16631:25:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":77758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16660:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16631:30:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77765,"nodeType":"IfStatement","src":"16627:124:161","trueBody":{"id":77764,"nodeType":"Block","src":"16663:88:161","statements":[{"eventCall":{"arguments":[{"id":77761,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77697,"src":"16714:25:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77760,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"16682:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16682:58:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77763,"nodeType":"EmitStatement","src":"16677:63:161"}]}}]},"baseFunctions":[74385],"documentation":{"id":77689,"nodeType":"StructuredDocumentation","src":"15070:933:161","text":" @dev Initializes the contract with the given parameters.\n Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default,\n so we do the initialization separately after creating `Mirror` in this method.\n @param _initializer The address of the initializer. Only this address will be able to send the first (init) message.\n @param _abiInterface The address of the ABI interface. This address will be displayed as \"proxy implementation\"\n and is necessary to show the available methods of `Mirror` smart contract on Etherscan.\n In case it is a Sails framework smart contract, the user can set his own ABI.\n @param _isSmall The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details.\n @param _initialExecutableBalance The initial executable balance to be transferred to the program."},"functionSelector":"bfa28576","implemented":true,"kind":"function","modifiers":[{"id":77700,"kind":"modifierInvocation","modifierName":{"id":77699,"name":"onlyRouter","nameLocations":["16148:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":77426,"src":"16148:10:161"},"nodeType":"ModifierInvocation","src":"16148:10:161"}],"name":"initialize","nameLocation":"16017:10:161","parameters":{"id":77698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77691,"mutability":"mutable","name":"_initializer","nameLocation":"16036:12:161","nodeType":"VariableDeclaration","scope":77767,"src":"16028:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77690,"name":"address","nodeType":"ElementaryTypeName","src":"16028:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77693,"mutability":"mutable","name":"_abiInterface","nameLocation":"16058:13:161","nodeType":"VariableDeclaration","scope":77767,"src":"16050:21:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77692,"name":"address","nodeType":"ElementaryTypeName","src":"16050:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77695,"mutability":"mutable","name":"_isSmall","nameLocation":"16078:8:161","nodeType":"VariableDeclaration","scope":77767,"src":"16073:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77694,"name":"bool","nodeType":"ElementaryTypeName","src":"16073:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":77697,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"16096:25:161","nodeType":"VariableDeclaration","scope":77767,"src":"16088:33:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77696,"name":"uint128","nodeType":"ElementaryTypeName","src":"16088:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"16027:95:161"},"returnParameters":{"id":77701,"nodeType":"ParameterList","parameters":[],"src":"16163:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77867,"nodeType":"FunctionDefinition","src":"16971:1748:161","nodes":[],"body":{"id":77866,"nodeType":"Block","src":"17143:1576:161","nodes":[],"statements":[{"documentation":" @dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77779,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17254:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17266:7:161","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":83107,"src":"17254:19:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":77783,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17285:4:161","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$78718","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$78718","typeString":"contract Mirror"}],"id":77782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17277:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77781,"name":"address","nodeType":"ElementaryTypeName","src":"17277:7:161","typeDescriptions":{}}},"id":77784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17277:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17254:36:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77786,"name":"InvalidActorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74285,"src":"17292:14:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17292:16:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77778,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17246:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17246:63:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77789,"nodeType":"ExpressionStatement","src":"17246:63:161"},{"condition":{"expression":{"id":77790,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17442:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17454:26:161","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":83122,"src":"17442:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Transfer value to router if valueToReceive is non-zero and has negative sign.","id":77798,"nodeType":"IfStatement","src":"17438:113:161","trueBody":{"id":77797,"nodeType":"Block","src":"17482:69:161","statements":[{"expression":{"arguments":[{"expression":{"id":77793,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17513:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17525:14:161","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":83119,"src":"17513:26:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77792,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77532,"src":"17496:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17496:44:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77796,"nodeType":"ExpressionStatement","src":"17496:44:161"}]}},{"assignments":[77801],"declarations":[{"constant":false,"id":77801,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"17637:18:161","nodeType":"VariableDeclaration","scope":77866,"src":"17629:26:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77800,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17629:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Send all outgoing messages.","id":77806,"initialValue":{"arguments":[{"expression":{"id":77803,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17672:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17684:8:161","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":83132,"src":"17672:20:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$83067_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":77802,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78048,"src":"17658:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$83067_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":77805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17658:35:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17629:64:161"},{"assignments":[77809],"declarations":[{"constant":false,"id":77809,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"17779:15:161","nodeType":"VariableDeclaration","scope":77866,"src":"17771:23:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17771:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Send value for each claim.","id":77814,"initialValue":{"arguments":[{"expression":{"id":77811,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17810:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17822:11:161","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":83127,"src":"17810:23:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":77810,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78556,"src":"17797:12:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$83173_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":77813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17797:37:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17771:63:161"},{"condition":{"expression":{"id":77815,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17914:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17926:6:161","memberName":"exited","nodeType":"MemberAccess","referencedDeclaration":83113,"src":"17914:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Set inheritor if exited.","falseBody":{"id":77835,"nodeType":"Block","src":"18001:92:161","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77824,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18023:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18035:9:161","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":83116,"src":"18023:21:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18056:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18048:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77826,"name":"address","nodeType":"ElementaryTypeName","src":"18048:7:161","typeDescriptions":{}}},"id":77829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18048:10:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18023:35:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77831,"name":"InheritorMustBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74287,"src":"18060:19:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18060:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77823,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18015:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18015:67:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77834,"nodeType":"ExpressionStatement","src":"18015:67:161"}]},"id":77836,"nodeType":"IfStatement","src":"17910:183:161","trueBody":{"id":77822,"nodeType":"Block","src":"17934:61:161","statements":[{"expression":{"arguments":[{"expression":{"id":77818,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"17962:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17974:9:161","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":83116,"src":"17962:21:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77817,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78589,"src":"17948:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":77820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17948:36:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77821,"nodeType":"ExpressionStatement","src":"17948:36:161"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":77840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77837,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77306,"src":"18181:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":77838,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18194:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18206:12:161","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":83110,"src":"18194:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18181:37:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Update the state hash if changed.","id":77847,"nodeType":"IfStatement","src":"18177:110:161","trueBody":{"id":77846,"nodeType":"Block","src":"18220:67:161","statements":[{"expression":{"arguments":[{"expression":{"id":77842,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18251:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18263:12:161","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":83110,"src":"18251:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":77841,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78604,"src":"18234:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":77844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18234:42:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77845,"nodeType":"ExpressionStatement","src":"18234:42:161"}]}},{"documentation":" @dev Return hash of performed state transition.","expression":{"arguments":[{"expression":{"id":77850,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18425:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18437:7:161","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":83107,"src":"18425:19:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77852,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18458:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18470:12:161","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":83110,"src":"18458:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77854,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18496:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18508:6:161","memberName":"exited","nodeType":"MemberAccess","referencedDeclaration":83113,"src":"18496:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":77856,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18528:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18540:9:161","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":83116,"src":"18528:21:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77858,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18563:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18575:14:161","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":83119,"src":"18563:26:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":77860,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77771,"src":"18603:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18615:26:161","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":83122,"src":"18603:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":77862,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77809,"src":"18655:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":77863,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77801,"src":"18684:18:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77848,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"18387:4:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":77849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18392:19:161","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":83409,"src":"18387:24:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bool_$_t_address_$_t_uint128_$_t_bool_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bool,address,uint128,bool,bytes32,bytes32) pure returns (bytes32)"}},"id":77864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18387:325:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77777,"id":77865,"nodeType":"Return","src":"18380:332:161"}]},"baseFunctions":[74394],"documentation":{"id":77768,"nodeType":"StructuredDocumentation","src":"16763:203:161","text":" @dev Performs state transition for the `Mirror` contract.\n @param _transition The state transition data.\n @return transitionHash The hash of the performed state transition."},"functionSelector":"084f443a","implemented":true,"kind":"function","modifiers":[{"id":77774,"kind":"modifierInvocation","modifierName":{"id":77773,"name":"onlyRouter","nameLocations":["17087:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":77426,"src":"17087:10:161"},"nodeType":"ModifierInvocation","src":"17087:10:161"}],"name":"performStateTransition","nameLocation":"16980:22:161","parameters":{"id":77772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77771,"mutability":"mutable","name":"_transition","nameLocation":"17033:11:161","nodeType":"VariableDeclaration","scope":77867,"src":"17003:41:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":77770,"nodeType":"UserDefinedTypeName","pathNode":{"id":77769,"name":"Gear.StateTransition","nameLocations":["17003:4:161","17008:15:161"],"nodeType":"IdentifierPath","referencedDeclaration":83133,"src":"17003:20:161"},"referencedDeclaration":83133,"src":"17003:20:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"17002:43:161"},"returnParameters":{"id":77777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77776,"mutability":"mutable","name":"transitionHash","nameLocation":"17123:14:161","nodeType":"VariableDeclaration","scope":77867,"src":"17115:22:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17115:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17114:24:161"},"scope":78718,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77917,"nodeType":"FunctionDefinition","src":"19152:760:161","nodes":[],"body":{"id":77916,"nodeType":"Block","src":"19335:577:161","nodes":[],"statements":[{"assignments":[77882],"declarations":[{"constant":false,"id":77882,"mutability":"mutable","name":"_value","nameLocation":"19353:6:161","nodeType":"VariableDeclaration","scope":77916,"src":"19345:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77881,"name":"uint128","nodeType":"ElementaryTypeName","src":"19345:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":77888,"initialValue":{"arguments":[{"expression":{"id":77885,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19370:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19374:5:161","memberName":"value","nodeType":"MemberAccess","src":"19370:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19362:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":77883,"name":"uint128","nodeType":"ElementaryTypeName","src":"19362:7:161","typeDescriptions":{}}},"id":77887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19362:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"19345:35:161"},{"expression":{"arguments":[{"id":77890,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77882,"src":"19408:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77889,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77532,"src":"19391:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19391:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77892,"nodeType":"ExpressionStatement","src":"19391:24:161"},{"assignments":[77894],"declarations":[{"constant":false,"id":77894,"mutability":"mutable","name":"_nonce","nameLocation":"19434:6:161","nodeType":"VariableDeclaration","scope":77916,"src":"19426:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77893,"name":"uint256","nodeType":"ElementaryTypeName","src":"19426:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77896,"initialValue":{"id":77895,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"19443:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19426:22:161"},{"assignments":[77899],"declarations":[{"constant":false,"id":77899,"mutability":"mutable","name":"id","nameLocation":"19617:2:161","nodeType":"VariableDeclaration","scope":77916,"src":"19609:10:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19609:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Generate unique message ID by formula:\n - `keccak256(abi.encodePacked(address(this), nonce++))`","id":77900,"nodeType":"VariableDeclarationStatement","src":"19609:10:161"},{"AST":{"nativeSrc":"19654:129:161","nodeType":"YulBlock","src":"19654:129:161","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19675:4:161","nodeType":"YulLiteral","src":"19675:4:161","type":"","value":"0x00"},{"arguments":[{"kind":"number","nativeSrc":"19685:2:161","nodeType":"YulLiteral","src":"19685:2:161","type":"","value":"96"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"19689:7:161","nodeType":"YulIdentifier","src":"19689:7:161"},"nativeSrc":"19689:9:161","nodeType":"YulFunctionCall","src":"19689:9:161"}],"functionName":{"name":"shl","nativeSrc":"19681:3:161","nodeType":"YulIdentifier","src":"19681:3:161"},"nativeSrc":"19681:18:161","nodeType":"YulFunctionCall","src":"19681:18:161"}],"functionName":{"name":"mstore","nativeSrc":"19668:6:161","nodeType":"YulIdentifier","src":"19668:6:161"},"nativeSrc":"19668:32:161","nodeType":"YulFunctionCall","src":"19668:32:161"},"nativeSrc":"19668:32:161","nodeType":"YulExpressionStatement","src":"19668:32:161"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19720:4:161","nodeType":"YulLiteral","src":"19720:4:161","type":"","value":"0x14"},{"name":"_nonce","nativeSrc":"19726:6:161","nodeType":"YulIdentifier","src":"19726:6:161"}],"functionName":{"name":"mstore","nativeSrc":"19713:6:161","nodeType":"YulIdentifier","src":"19713:6:161"},"nativeSrc":"19713:20:161","nodeType":"YulFunctionCall","src":"19713:20:161"},"nativeSrc":"19713:20:161","nodeType":"YulExpressionStatement","src":"19713:20:161"},{"nativeSrc":"19746:27:161","nodeType":"YulAssignment","src":"19746:27:161","value":{"arguments":[{"kind":"number","nativeSrc":"19762:4:161","nodeType":"YulLiteral","src":"19762:4:161","type":"","value":"0x00"},{"kind":"number","nativeSrc":"19768:4:161","nodeType":"YulLiteral","src":"19768:4:161","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"19752:9:161","nodeType":"YulIdentifier","src":"19752:9:161"},"nativeSrc":"19752:21:161","nodeType":"YulFunctionCall","src":"19752:21:161"},"variableNames":[{"name":"id","nativeSrc":"19746:2:161","nodeType":"YulIdentifier","src":"19746:2:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":77894,"isOffset":false,"isSlot":false,"src":"19726:6:161","valueSize":1},{"declaration":77899,"isOffset":false,"isSlot":false,"src":"19746:2:161","valueSize":1}],"flags":["memory-safe"],"id":77901,"nodeType":"InlineAssembly","src":"19629:154:161"},{"expression":{"id":77903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19792:7:161","subExpression":{"id":77902,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"19792:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77904,"nodeType":"ExpressionStatement","src":"19792:7:161"},{"eventCall":{"arguments":[{"id":77906,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77899,"src":"19840:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77907,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19844:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19848:6:161","memberName":"sender","nodeType":"MemberAccess","src":"19844:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77909,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77870,"src":"19856:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":77910,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77882,"src":"19866:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":77911,"name":"_callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77872,"src":"19874:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":77905,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74154,"src":"19815:24:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128,bool)"}},"id":77912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19815:70:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77913,"nodeType":"EmitStatement","src":"19810:75:161"},{"expression":{"id":77914,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77899,"src":"19903:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77880,"id":77915,"nodeType":"Return","src":"19896:9:161"}]},"documentation":{"id":77868,"nodeType":"StructuredDocumentation","src":"18783:364:161","text":" @dev Internal implementation of `sendMessage` function.\n This function is used to send message to the program and emit `MessageQueueingRequested` event.\n @param _payload The payload of the message.\n @param _callReply Whether to set `call` flag in the reply message.\n @return messageId Message ID of the sent message."},"implemented":true,"kind":"function","modifiers":[{"id":77875,"kind":"modifierInvocation","modifierName":{"id":77874,"name":"onlyIfActive","nameLocations":["19240:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77387,"src":"19240:12:161"},"nodeType":"ModifierInvocation","src":"19240:12:161"},{"id":77877,"kind":"modifierInvocation","modifierName":{"id":77876,"name":"onlyAfterInitMessageOrInitializer","nameLocations":["19261:33:161"],"nodeType":"IdentifierPath","referencedDeclaration":77361,"src":"19261:33:161"},"nodeType":"ModifierInvocation","src":"19261:33:161"}],"name":"_sendMessage","nameLocation":"19161:12:161","parameters":{"id":77873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77870,"mutability":"mutable","name":"_payload","nameLocation":"19189:8:161","nodeType":"VariableDeclaration","scope":77917,"src":"19174:23:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":77869,"name":"bytes","nodeType":"ElementaryTypeName","src":"19174:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":77872,"mutability":"mutable","name":"_callReply","nameLocation":"19204:10:161","nodeType":"VariableDeclaration","scope":77917,"src":"19199:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77871,"name":"bool","nodeType":"ElementaryTypeName","src":"19199:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19173:42:161"},"returnParameters":{"id":77880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77879,"mutability":"mutable","name":"messageId","nameLocation":"19320:9:161","nodeType":"VariableDeclaration","scope":77917,"src":"19312:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19312:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19311:19:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":77950,"nodeType":"FunctionDefinition","src":"20241:470:161","nodes":[],"body":{"id":77949,"nodeType":"Block","src":"20390:321:161","nodes":[],"statements":[{"assignments":[77928],"declarations":[{"constant":false,"id":77928,"mutability":"mutable","name":"balance","nameLocation":"20408:7:161","nodeType":"VariableDeclaration","scope":77949,"src":"20400:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77927,"name":"uint256","nodeType":"ElementaryTypeName","src":"20400:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77934,"initialValue":{"expression":{"arguments":[{"id":77931,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20426:4:161","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$78718","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$78718","typeString":"contract Mirror"}],"id":77930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20418:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77929,"name":"address","nodeType":"ElementaryTypeName","src":"20418:7:161","typeDescriptions":{}}},"id":77932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20418:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20432:7:161","memberName":"balance","nodeType":"MemberAccess","src":"20418:21:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20400:39:161"},{"assignments":[77936],"declarations":[{"constant":false,"id":77936,"mutability":"mutable","name":"balance128","nameLocation":"20607:10:161","nodeType":"VariableDeclaration","scope":77949,"src":"20599:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77935,"name":"uint128","nodeType":"ElementaryTypeName","src":"20599:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":77941,"initialValue":{"arguments":[{"id":77939,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77928,"src":"20628:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20620:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":77937,"name":"uint128","nodeType":"ElementaryTypeName","src":"20620:7:161","typeDescriptions":{}}},"id":77940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20620:16:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"20599:37:161"},{"expression":{"components":[{"id":77942,"name":"balance128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77936,"src":"20654:10:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":77944,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77315,"src":"20681:9:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77945,"name":"balance128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77936,"src":"20692:10:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77943,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78656,"src":"20666:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":77946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20666:37:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77947,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20653:51:161","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"functionReturnParameters":77926,"id":77948,"nodeType":"Return","src":"20646:58:161"}]},"documentation":{"id":77918,"nodeType":"StructuredDocumentation","src":"19918:318:161","text":" @dev Internal implementation of `transferLockedValueToInheritor` function.\n Note that this function can be called only after program exited.\n @return valueTransferred The amount of WVARA transferred.\n @return transferSuccess The flag indicating if the transfer was successful."},"implemented":true,"kind":"function","modifiers":[{"id":77921,"kind":"modifierInvocation","modifierName":{"id":77920,"name":"onlyIfExited","nameLocations":["20308:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77407,"src":"20308:12:161"},"nodeType":"ModifierInvocation","src":"20308:12:161"}],"name":"_transferLockedValueToInheritor","nameLocation":"20250:31:161","parameters":{"id":77919,"nodeType":"ParameterList","parameters":[],"src":"20281:2:161"},"returnParameters":{"id":77926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77923,"mutability":"mutable","name":"valueTransferred","nameLocation":"20346:16:161","nodeType":"VariableDeclaration","scope":77950,"src":"20338:24:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77922,"name":"uint128","nodeType":"ElementaryTypeName","src":"20338:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":77925,"mutability":"mutable","name":"transferSuccess","nameLocation":"20369:15:161","nodeType":"VariableDeclaration","scope":77950,"src":"20364:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77924,"name":"bool","nodeType":"ElementaryTypeName","src":"20364:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20337:48:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78048,"nodeType":"FunctionDefinition","src":"21279:1232:161","nodes":[],"body":{"id":78047,"nodeType":"Block","src":"21363:1148:161","nodes":[],"statements":[{"assignments":[77961],"declarations":[{"constant":false,"id":77961,"mutability":"mutable","name":"messagesLen","nameLocation":"21381:11:161","nodeType":"VariableDeclaration","scope":78047,"src":"21373:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77960,"name":"uint256","nodeType":"ElementaryTypeName","src":"21373:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77964,"initialValue":{"expression":{"id":77962,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77955,"src":"21395:9:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":77963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21405:6:161","memberName":"length","nodeType":"MemberAccess","src":"21395:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21373:38:161"},{"assignments":[77966],"declarations":[{"constant":false,"id":77966,"mutability":"mutable","name":"messagesHashesSize","nameLocation":"21429:18:161","nodeType":"VariableDeclaration","scope":78047,"src":"21421:26:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77965,"name":"uint256","nodeType":"ElementaryTypeName","src":"21421:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77970,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77967,"name":"messagesLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77961,"src":"21450:11:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":77968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21464:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21450:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21421:45:161"},{"assignments":[77972],"declarations":[{"constant":false,"id":77972,"mutability":"mutable","name":"messagesHashesMemPtr","nameLocation":"21484:20:161","nodeType":"VariableDeclaration","scope":78047,"src":"21476:28:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77971,"name":"uint256","nodeType":"ElementaryTypeName","src":"21476:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77977,"initialValue":{"arguments":[{"id":77975,"name":"messagesHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77966,"src":"21523:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77973,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"21507:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":77974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21514:8:161","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"21507:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":77976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21507:35:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21476:66:161"},{"assignments":[77979],"declarations":[{"constant":false,"id":77979,"mutability":"mutable","name":"offset","nameLocation":"21560:6:161","nodeType":"VariableDeclaration","scope":78047,"src":"21552:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77978,"name":"uint256","nodeType":"ElementaryTypeName","src":"21552:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77981,"initialValue":{"hexValue":"30","id":77980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21569:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21552:18:161"},{"body":{"id":78038,"nodeType":"Block","src":"21623:785:161","statements":[{"assignments":[77996],"declarations":[{"constant":false,"id":77996,"mutability":"mutable","name":"message","nameLocation":"21659:7:161","nodeType":"VariableDeclaration","scope":78038,"src":"21637:29:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":77995,"nodeType":"UserDefinedTypeName","pathNode":{"id":77994,"name":"Gear.Message","nameLocations":["21637:4:161","21642:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"21637:12:161"},"referencedDeclaration":83067,"src":"21637:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":78000,"initialValue":{"baseExpression":{"id":77997,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77955,"src":"21669:9:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":77999,"indexExpression":{"id":77998,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77983,"src":"21679:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21669:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"21637:44:161"},{"assignments":[78003],"declarations":[{"constant":false,"id":78003,"mutability":"mutable","name":"messageHash","nameLocation":"21787:11:161","nodeType":"VariableDeclaration","scope":78038,"src":"21779:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21779:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Generate hash for the message.","id":78008,"initialValue":{"arguments":[{"id":78006,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"21818:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":78004,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"21801:4:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":78005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21806:11:161","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":83350,"src":"21801:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$83067_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":78007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21801:25:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"21779:47:161"},{"documentation":" @dev Store the message hash in memory at messagesHashes[offset : offset+32].","expression":{"arguments":[{"id":78012,"name":"messagesHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77972,"src":"21990:20:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78013,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77979,"src":"22012:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78014,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78003,"src":"22020:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":78009,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"21964:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21971:18:161","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"21964:25:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":78015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21964:68:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78016,"nodeType":"ExpressionStatement","src":"21964:68:161"},{"id":78021,"nodeType":"UncheckedBlock","src":"22046:55:161","statements":[{"expression":{"id":78019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78017,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77979,"src":"22074:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":78018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22084:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22074:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78020,"nodeType":"ExpressionStatement","src":"22074:12:161"}]},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78022,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22240:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22248:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"22240:20:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22261:2:161","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":83099,"src":"22240:23:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22267:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22240:28:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Send the message based on its type (`Gear.Message` or `Gear.Reply`).","falseBody":{"id":78036,"nodeType":"Block","src":"22339:59:161","statements":[{"expression":{"arguments":[{"id":78033,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22375:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":78032,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78443,"src":"22357:17:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$83067_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":78034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22357:26:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78035,"nodeType":"ExpressionStatement","src":"22357:26:161"}]},"id":78037,"nodeType":"IfStatement","src":"22236:162:161","trueBody":{"id":78031,"nodeType":"Block","src":"22270:63:161","statements":[{"expression":{"arguments":[{"id":78028,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77996,"src":"22310:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":78027,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78102,"src":"22288:21:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$83067_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":78029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22288:30:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78030,"nodeType":"ExpressionStatement","src":"22288:30:161"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77986,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77983,"src":"21601:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":77987,"name":"messagesLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77961,"src":"21605:11:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21601:15:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78039,"initializationExpression":{"assignments":[77983],"declarations":[{"constant":false,"id":77983,"mutability":"mutable","name":"i","nameLocation":"21594:1:161","nodeType":"VariableDeclaration","scope":78039,"src":"21586:9:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77982,"name":"uint256","nodeType":"ElementaryTypeName","src":"21586:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77985,"initialValue":{"hexValue":"30","id":77984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21598:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"21586:13:161"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":77990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"21618:3:161","subExpression":{"id":77989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77983,"src":"21618:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77991,"nodeType":"ExpressionStatement","src":"21618:3:161"},"nodeType":"ForStatement","src":"21581:827:161"},{"expression":{"arguments":[{"id":78042,"name":"messagesHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77972,"src":"22460:20:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":78043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22482:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":78044,"name":"messagesHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77966,"src":"22485:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78040,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"22425:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":78041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22432:27:161","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"22425:34:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":78045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22425:79:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77959,"id":78046,"nodeType":"Return","src":"22418:86:161"}]},"documentation":{"id":77951,"nodeType":"StructuredDocumentation","src":"20981:293:161","text":" @dev Internal implementation of `_sendMessages` function.\n It sends all outgoing messages from the `Mirror` contract and emits appropriate events.\n @param _messages The array of messages to be sent.\n @return messagesHash The hash of the sent messages."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"21288:13:161","parameters":{"id":77956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77955,"mutability":"mutable","name":"_messages","nameLocation":"21326:9:161","nodeType":"VariableDeclaration","scope":78048,"src":"21302:33:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":77953,"nodeType":"UserDefinedTypeName","pathNode":{"id":77952,"name":"Gear.Message","nameLocations":["21302:4:161","21307:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"21302:12:161"},"referencedDeclaration":83067,"src":"21302:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"id":77954,"nodeType":"ArrayTypeName","src":"21302:14:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$83067_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"21301:35:161"},"returnParameters":{"id":77959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78048,"src":"21354:7:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77957,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21354:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21353:9:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78102,"nodeType":"FunctionDefinition","src":"23021:1125:161","nodes":[],"body":{"id":78101,"nodeType":"Block","src":"23092:1054:161","nodes":[],"statements":[{"condition":{"id":78058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23278:37:161","subExpression":{"arguments":[{"id":78056,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23306:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":78055,"name":"_tryParseAndEmitSailsEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78312,"src":"23279:26:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$83067_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct Gear.Message calldata) returns (bool)"}},"id":78057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23279:36:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev First, we'll try to parse event from the Sails framework\n and then emit it on behalf of the `Mirror` smart contract.","id":78100,"nodeType":"IfStatement","src":"23274:866:161","trueBody":{"id":78099,"nodeType":"Block","src":"23317:823:161","statements":[{"condition":{"expression":{"id":78059,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23585:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23594:4:161","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":83066,"src":"23585:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78087,"nodeType":"IfStatement","src":"23581:453:161","trueBody":{"id":78086,"nodeType":"Block","src":"23600:434:161","statements":[{"assignments":[78062,null],"declarations":[{"constant":false,"id":78062,"mutability":"mutable","name":"success","nameLocation":"23624:7:161","nodeType":"VariableDeclaration","scope":78086,"src":"23619:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78061,"name":"bool","nodeType":"ElementaryTypeName","src":"23619:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":78071,"initialValue":{"arguments":[{"expression":{"id":78068,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23676:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23685:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"23676:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":78063,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23636:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23645:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"23636:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23657:4:161","memberName":"call","nodeType":"MemberAccess","src":"23636:25:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":78066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23667:7:161","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"23636:39:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23636:57:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"23618:75:161"},{"condition":{"id":78073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"23716:8:161","subExpression":{"id":78072,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78062,"src":"23717:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78085,"nodeType":"IfStatement","src":"23712:308:161","trueBody":{"id":78084,"nodeType":"Block","src":"23726:294:161","statements":[{"documentation":" @dev In case of failed call, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"expression":{"id":78075,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23923:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23932:2:161","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":83050,"src":"23923:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78077,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23936:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23945:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"23936:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78079,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"23958:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23967:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"23958:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78074,"name":"MessageCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"23905:17:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128)"}},"id":78081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23905:68:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78082,"nodeType":"EmitStatement","src":"23900:73:161"},{"functionReturnParameters":78054,"id":78083,"nodeType":"Return","src":"23995:7:161"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":78089,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"24061:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24070:2:161","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":83050,"src":"24061:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78091,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"24074:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24083:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"24074:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78093,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"24096:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24105:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"24096:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":78095,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78052,"src":"24114:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24123:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"24114:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78088,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74193,"src":"24053:7:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":78097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24053:76:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78098,"nodeType":"EmitStatement","src":"24048:81:161"}]}}]},"documentation":{"id":78049,"nodeType":"StructuredDocumentation","src":"22517:499:161","text":" @dev Internal function to send message that goes to mailbox.\n Value never sent since goes to mailbox.\n Emits `Message` event if it is not event from Sails framework.\n If `_message.call = true`, then call will be made to `_message.destination`\n with _message.payload and gas limit of 500_000 to prevent DoS attacks.\n If call fails, then `MessageCallFailed` event will be emitted.\n @param _message The message to be sent."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"23030:21:161","parameters":{"id":78053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78052,"mutability":"mutable","name":"_message","nameLocation":"23074:8:161","nodeType":"VariableDeclaration","scope":78102,"src":"23052:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78051,"nodeType":"UserDefinedTypeName","pathNode":{"id":78050,"name":"Gear.Message","nameLocations":["23052:4:161","23057:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"23052:12:161"},"referencedDeclaration":83067,"src":"23052:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"23051:32:161"},"returnParameters":{"id":78054,"nodeType":"ParameterList","parameters":[],"src":"23092:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78312,"nodeType":"FunctionDefinition","src":"27225:3845:161","nodes":[],"body":{"id":78311,"nodeType":"Block","src":"27329:3741:161","nodes":[],"statements":[{"assignments":[78112],"declarations":[{"constant":false,"id":78112,"mutability":"mutable","name":"payload","nameLocation":"27354:7:161","nodeType":"VariableDeclaration","scope":78311,"src":"27339:22:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":78111,"name":"bytes","nodeType":"ElementaryTypeName","src":"27339:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":78115,"initialValue":{"expression":{"id":78113,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78106,"src":"27364:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27373:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"27364:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"27339:41:161"},{"condition":{"id":78131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"27395:86:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":78119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78116,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78106,"src":"27397:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27406:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"27397:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":78118,"name":"ETH_EVENT_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77300,"src":"27421:14:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27397:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":78123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78120,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78106,"src":"27439:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27448:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"27439:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27457:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27439:19:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27397:61:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78125,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78112,"src":"27462:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27470:6:161","memberName":"length","nodeType":"MemberAccess","src":"27462:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27479:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"27462:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27397:83:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27396:85:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78135,"nodeType":"IfStatement","src":"27391:129:161","trueBody":{"id":78134,"nodeType":"Block","src":"27483:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27504:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78110,"id":78133,"nodeType":"Return","src":"27497:12:161"}]}},{"assignments":[78137],"declarations":[{"constant":false,"id":78137,"mutability":"mutable","name":"topicsLength","nameLocation":"27538:12:161","nodeType":"VariableDeclaration","scope":78311,"src":"27530:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78136,"name":"uint256","nodeType":"ElementaryTypeName","src":"27530:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78138,"nodeType":"VariableDeclarationStatement","src":"27530:20:161"},{"AST":{"nativeSrc":"27585:224:161","nodeType":"YulBlock","src":"27585:224:161","statements":[{"nativeSrc":"27745:54:161","nodeType":"YulAssignment","src":"27745:54:161","value":{"arguments":[{"kind":"number","nativeSrc":"27765:3:161","nodeType":"YulLiteral","src":"27765:3:161","type":"","value":"248"},{"arguments":[{"name":"payload.offset","nativeSrc":"27783:14:161","nodeType":"YulIdentifier","src":"27783:14:161"}],"functionName":{"name":"calldataload","nativeSrc":"27770:12:161","nodeType":"YulIdentifier","src":"27770:12:161"},"nativeSrc":"27770:28:161","nodeType":"YulFunctionCall","src":"27770:28:161"}],"functionName":{"name":"shr","nativeSrc":"27761:3:161","nodeType":"YulIdentifier","src":"27761:3:161"},"nativeSrc":"27761:38:161","nodeType":"YulFunctionCall","src":"27761:38:161"},"variableNames":[{"name":"topicsLength","nativeSrc":"27745:12:161","nodeType":"YulIdentifier","src":"27745:12:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78112,"isOffset":true,"isSlot":false,"src":"27783:14:161","suffix":"offset","valueSize":1},{"declaration":78137,"isOffset":false,"isSlot":false,"src":"27745:12:161","valueSize":1}],"flags":["memory-safe"],"id":78139,"nodeType":"InlineAssembly","src":"27560:249:161"},{"condition":{"id":78148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"27823:41:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78140,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"27825:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":78141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27841:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27825:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78143,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"27846:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"34","id":78144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27862:1:161","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27846:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27825:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78147,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27824:40:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78152,"nodeType":"IfStatement","src":"27819:84:161","trueBody":{"id":78151,"nodeType":"Block","src":"27866:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27887:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78110,"id":78150,"nodeType":"Return","src":"27880:12:161"}]}},{"assignments":[78154],"declarations":[{"constant":false,"id":78154,"mutability":"mutable","name":"topicsLengthInBytes","nameLocation":"27921:19:161","nodeType":"VariableDeclaration","scope":78311,"src":"27913:27:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78153,"name":"uint256","nodeType":"ElementaryTypeName","src":"27913:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78155,"nodeType":"VariableDeclarationStatement","src":"27913:27:161"},{"id":78164,"nodeType":"UncheckedBlock","src":"27950:78:161","statements":[{"expression":{"id":78162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78156,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78154,"src":"27974:19:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":78157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27996:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78158,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"28000:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":78159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28015:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"28000:17:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27996:21:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27974:43:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78163,"nodeType":"ExpressionStatement","src":"27974:43:161"}]},{"condition":{"id":78170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28042:40:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78165,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78112,"src":"28044:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28052:6:161","memberName":"length","nodeType":"MemberAccess","src":"28044:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":78167,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78154,"src":"28062:19:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28044:37:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28043:39:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78174,"nodeType":"IfStatement","src":"28038:83:161","trueBody":{"id":78173,"nodeType":"Block","src":"28084:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28105:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78110,"id":78172,"nodeType":"Return","src":"28098:12:161"}]}},{"assignments":[78177],"declarations":[{"constant":false,"id":78177,"mutability":"mutable","name":"topic1","nameLocation":"28224:6:161","nodeType":"VariableDeclaration","scope":78311,"src":"28216:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"28216:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev We use offset 1 to skip `uint8 topicsLength`","id":78178,"nodeType":"VariableDeclarationStatement","src":"28216:14:161"},{"AST":{"nativeSrc":"28265:70:161","nodeType":"YulBlock","src":"28265:70:161","statements":[{"nativeSrc":"28279:46:161","nodeType":"YulAssignment","src":"28279:46:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"28306:14:161","nodeType":"YulIdentifier","src":"28306:14:161"},{"kind":"number","nativeSrc":"28322:1:161","nodeType":"YulLiteral","src":"28322:1:161","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28302:3:161","nodeType":"YulIdentifier","src":"28302:3:161"},"nativeSrc":"28302:22:161","nodeType":"YulFunctionCall","src":"28302:22:161"}],"functionName":{"name":"calldataload","nativeSrc":"28289:12:161","nodeType":"YulIdentifier","src":"28289:12:161"},"nativeSrc":"28289:36:161","nodeType":"YulFunctionCall","src":"28289:36:161"},"variableNames":[{"name":"topic1","nativeSrc":"28279:6:161","nodeType":"YulIdentifier","src":"28279:6:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78112,"isOffset":true,"isSlot":false,"src":"28306:14:161","suffix":"offset","valueSize":1},{"declaration":78177,"isOffset":false,"isSlot":false,"src":"28279:6:161","valueSize":1}],"flags":["memory-safe"],"id":78179,"nodeType":"InlineAssembly","src":"28240:95:161"},{"condition":{"id":78250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28891:763:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78180,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"28906:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78181,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"28916:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":78182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28929:8:161","memberName":"selector","nodeType":"MemberAccess","src":"28916:21:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"28906:31:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78184,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"28953:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78185,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74154,"src":"28963:24:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128,bool)"}},"id":78186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28988:8:161","memberName":"selector","nodeType":"MemberAccess","src":"28963:33:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"28953:43:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:90:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78189,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29012:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78190,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74165,"src":"29022:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":78191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29045:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29022:31:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29012:41:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:147:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78194,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29069:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78195,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74172,"src":"29079:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":78196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29102:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29079:31:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29069:41:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:204:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78199,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29126:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78200,"name":"OwnedBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74177,"src":"29136:26:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":78201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29163:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29136:35:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29126:45:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:265:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78204,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29187:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78205,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"29197:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":78206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29229:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29197:40:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29187:50:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:331:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78209,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29253:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78210,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74193,"src":"29263:7:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":78211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29271:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29263:16:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29253:26:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:373:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78214,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29295:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78215,"name":"MessageCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"29305:17:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128)"}},"id":78216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29323:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29305:26:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29295:36:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:425:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78219,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29347:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78220,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74213,"src":"29357:5:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":78221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29363:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29357:14:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29347:24:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:465:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78224,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29387:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78225,"name":"ReplyCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74222,"src":"29397:15:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (uint128,bytes32,bytes4)"}},"id":78226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29413:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29397:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29387:34:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:515:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78229,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29437:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78230,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74229,"src":"29447:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29460:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29447:21:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29437:31:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:562:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78234,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29484:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78235,"name":"TransferLockedValueToInheritorFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74236,"src":"29494:36:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29531:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29494:45:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29484:55:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:633:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78239,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29555:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78240,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"29565:19:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29585:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29565:28:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29555:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:687:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78244,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78177,"src":"29609:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78245,"name":"ValueClaimFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74250,"src":"29619:16:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29636:8:161","memberName":"selector","nodeType":"MemberAccess","src":"29619:25:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29609:35:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28906:738:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78249,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28892:762:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev SECURITY:\n Very important check because custom events can match our hashes!\n If we miss even 1 event that is emitted by Mirror, user will be able to fake protocol logic!\n Command to re-generate selectors check:\n ```bash\n grep -Po \" event\\s+\\K[^(]+\" ethexe/contracts/src/IMirror.sol | xargs -I{} echo \" topic1 != {}.selector &&\" | sed '$ s/ &&$//'\n ```","id":78254,"nodeType":"IfStatement","src":"28887:806:161","trueBody":{"id":78253,"nodeType":"Block","src":"29656:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29677:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78110,"id":78252,"nodeType":"Return","src":"29670:12:161"}]}},{"assignments":[78256],"declarations":[{"constant":false,"id":78256,"mutability":"mutable","name":"size","nameLocation":"29744:4:161","nodeType":"VariableDeclaration","scope":78311,"src":"29736:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78255,"name":"uint256","nodeType":"ElementaryTypeName","src":"29736:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78257,"nodeType":"VariableDeclarationStatement","src":"29736:12:161"},{"id":78265,"nodeType":"UncheckedBlock","src":"29758:78:161","statements":[{"expression":{"id":78263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78258,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78256,"src":"29782:4:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78259,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78112,"src":"29789:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29797:6:161","memberName":"length","nodeType":"MemberAccess","src":"29789:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78261,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78154,"src":"29806:19:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29789:36:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29782:43:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78264,"nodeType":"ExpressionStatement","src":"29782:43:161"}]},{"assignments":[78267],"declarations":[{"constant":false,"id":78267,"mutability":"mutable","name":"memPtr","nameLocation":"29854:6:161","nodeType":"VariableDeclaration","scope":78311,"src":"29846:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78266,"name":"uint256","nodeType":"ElementaryTypeName","src":"29846:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78272,"initialValue":{"arguments":[{"id":78270,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78256,"src":"29879:4:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78268,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"29863:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29870:8:161","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"29863:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":78271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29863:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29846:38:161"},{"AST":{"nativeSrc":"29919:92:161","nodeType":"YulBlock","src":"29919:92:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"29946:6:161","nodeType":"YulIdentifier","src":"29946:6:161"},{"arguments":[{"name":"payload.offset","nativeSrc":"29958:14:161","nodeType":"YulIdentifier","src":"29958:14:161"},{"name":"topicsLengthInBytes","nativeSrc":"29974:19:161","nodeType":"YulIdentifier","src":"29974:19:161"}],"functionName":{"name":"add","nativeSrc":"29954:3:161","nodeType":"YulIdentifier","src":"29954:3:161"},"nativeSrc":"29954:40:161","nodeType":"YulFunctionCall","src":"29954:40:161"},{"name":"size","nativeSrc":"29996:4:161","nodeType":"YulIdentifier","src":"29996:4:161"}],"functionName":{"name":"calldatacopy","nativeSrc":"29933:12:161","nodeType":"YulIdentifier","src":"29933:12:161"},"nativeSrc":"29933:68:161","nodeType":"YulFunctionCall","src":"29933:68:161"},"nativeSrc":"29933:68:161","nodeType":"YulExpressionStatement","src":"29933:68:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78267,"isOffset":false,"isSlot":false,"src":"29946:6:161","valueSize":1},{"declaration":78112,"isOffset":true,"isSlot":false,"src":"29958:14:161","suffix":"offset","valueSize":1},{"declaration":78256,"isOffset":false,"isSlot":false,"src":"29996:4:161","valueSize":1},{"declaration":78154,"isOffset":false,"isSlot":false,"src":"29974:19:161","valueSize":1}],"flags":["memory-safe"],"id":78273,"nodeType":"InlineAssembly","src":"29894:117:161"},{"assignments":[78276],"declarations":[{"constant":false,"id":78276,"mutability":"mutable","name":"topic2","nameLocation":"30166:6:161","nodeType":"VariableDeclaration","scope":78311,"src":"30158:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30158:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev We use offset 1 to skip `uint8 topicsLength`.\n Regular offsets: `32`, `64`, `96`.","id":78277,"nodeType":"VariableDeclarationStatement","src":"30158:14:161"},{"assignments":[78279],"declarations":[{"constant":false,"id":78279,"mutability":"mutable","name":"topic3","nameLocation":"30190:6:161","nodeType":"VariableDeclaration","scope":78311,"src":"30182:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78278,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30182:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78280,"nodeType":"VariableDeclarationStatement","src":"30182:14:161"},{"assignments":[78282],"declarations":[{"constant":false,"id":78282,"mutability":"mutable","name":"topic4","nameLocation":"30214:6:161","nodeType":"VariableDeclaration","scope":78311,"src":"30206:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30206:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78283,"nodeType":"VariableDeclarationStatement","src":"30206:14:161"},{"AST":{"nativeSrc":"30255:191:161","nodeType":"YulBlock","src":"30255:191:161","statements":[{"nativeSrc":"30269:47:161","nodeType":"YulAssignment","src":"30269:47:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"30296:14:161","nodeType":"YulIdentifier","src":"30296:14:161"},{"kind":"number","nativeSrc":"30312:2:161","nodeType":"YulLiteral","src":"30312:2:161","type":"","value":"33"}],"functionName":{"name":"add","nativeSrc":"30292:3:161","nodeType":"YulIdentifier","src":"30292:3:161"},"nativeSrc":"30292:23:161","nodeType":"YulFunctionCall","src":"30292:23:161"}],"functionName":{"name":"calldataload","nativeSrc":"30279:12:161","nodeType":"YulIdentifier","src":"30279:12:161"},"nativeSrc":"30279:37:161","nodeType":"YulFunctionCall","src":"30279:37:161"},"variableNames":[{"name":"topic2","nativeSrc":"30269:6:161","nodeType":"YulIdentifier","src":"30269:6:161"}]},{"nativeSrc":"30329:47:161","nodeType":"YulAssignment","src":"30329:47:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"30356:14:161","nodeType":"YulIdentifier","src":"30356:14:161"},{"kind":"number","nativeSrc":"30372:2:161","nodeType":"YulLiteral","src":"30372:2:161","type":"","value":"65"}],"functionName":{"name":"add","nativeSrc":"30352:3:161","nodeType":"YulIdentifier","src":"30352:3:161"},"nativeSrc":"30352:23:161","nodeType":"YulFunctionCall","src":"30352:23:161"}],"functionName":{"name":"calldataload","nativeSrc":"30339:12:161","nodeType":"YulIdentifier","src":"30339:12:161"},"nativeSrc":"30339:37:161","nodeType":"YulFunctionCall","src":"30339:37:161"},"variableNames":[{"name":"topic3","nativeSrc":"30329:6:161","nodeType":"YulIdentifier","src":"30329:6:161"}]},{"nativeSrc":"30389:47:161","nodeType":"YulAssignment","src":"30389:47:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"30416:14:161","nodeType":"YulIdentifier","src":"30416:14:161"},{"kind":"number","nativeSrc":"30432:2:161","nodeType":"YulLiteral","src":"30432:2:161","type":"","value":"97"}],"functionName":{"name":"add","nativeSrc":"30412:3:161","nodeType":"YulIdentifier","src":"30412:3:161"},"nativeSrc":"30412:23:161","nodeType":"YulFunctionCall","src":"30412:23:161"}],"functionName":{"name":"calldataload","nativeSrc":"30399:12:161","nodeType":"YulIdentifier","src":"30399:12:161"},"nativeSrc":"30399:37:161","nodeType":"YulFunctionCall","src":"30399:37:161"},"variableNames":[{"name":"topic4","nativeSrc":"30389:6:161","nodeType":"YulIdentifier","src":"30389:6:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78112,"isOffset":true,"isSlot":false,"src":"30296:14:161","suffix":"offset","valueSize":1},{"declaration":78112,"isOffset":true,"isSlot":false,"src":"30356:14:161","suffix":"offset","valueSize":1},{"declaration":78112,"isOffset":true,"isSlot":false,"src":"30416:14:161","suffix":"offset","valueSize":1},{"declaration":78276,"isOffset":false,"isSlot":false,"src":"30269:6:161","valueSize":1},{"declaration":78279,"isOffset":false,"isSlot":false,"src":"30329:6:161","valueSize":1},{"declaration":78282,"isOffset":false,"isSlot":false,"src":"30389:6:161","valueSize":1}],"flags":["memory-safe"],"id":78284,"nodeType":"InlineAssembly","src":"30230:216:161"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78285,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"30460:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":78286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30476:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30460:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78290,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"30596:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":78291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30612:1:161","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"30596:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78295,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"30740:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":78296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30756:1:161","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"30740:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78300,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78137,"src":"30892:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"34","id":78301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30908:1:161","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30892:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78305,"nodeType":"IfStatement","src":"30888:154:161","trueBody":{"id":78304,"nodeType":"Block","src":"30911:131:161","statements":[{"AST":{"nativeSrc":"30950:82:161","nodeType":"YulBlock","src":"30950:82:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"30973:6:161","nodeType":"YulIdentifier","src":"30973:6:161"},{"name":"size","nativeSrc":"30981:4:161","nodeType":"YulIdentifier","src":"30981:4:161"},{"name":"topic1","nativeSrc":"30987:6:161","nodeType":"YulIdentifier","src":"30987:6:161"},{"name":"topic2","nativeSrc":"30995:6:161","nodeType":"YulIdentifier","src":"30995:6:161"},{"name":"topic3","nativeSrc":"31003:6:161","nodeType":"YulIdentifier","src":"31003:6:161"},{"name":"topic4","nativeSrc":"31011:6:161","nodeType":"YulIdentifier","src":"31011:6:161"}],"functionName":{"name":"log4","nativeSrc":"30968:4:161","nodeType":"YulIdentifier","src":"30968:4:161"},"nativeSrc":"30968:50:161","nodeType":"YulFunctionCall","src":"30968:50:161"},"nativeSrc":"30968:50:161","nodeType":"YulExpressionStatement","src":"30968:50:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78267,"isOffset":false,"isSlot":false,"src":"30973:6:161","valueSize":1},{"declaration":78256,"isOffset":false,"isSlot":false,"src":"30981:4:161","valueSize":1},{"declaration":78177,"isOffset":false,"isSlot":false,"src":"30987:6:161","valueSize":1},{"declaration":78276,"isOffset":false,"isSlot":false,"src":"30995:6:161","valueSize":1},{"declaration":78279,"isOffset":false,"isSlot":false,"src":"31003:6:161","valueSize":1},{"declaration":78282,"isOffset":false,"isSlot":false,"src":"31011:6:161","valueSize":1}],"flags":["memory-safe"],"id":78303,"nodeType":"InlineAssembly","src":"30925:107:161"}]}},"id":78306,"nodeType":"IfStatement","src":"30736:306:161","trueBody":{"id":78299,"nodeType":"Block","src":"30759:123:161","statements":[{"AST":{"nativeSrc":"30798:74:161","nodeType":"YulBlock","src":"30798:74:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"30821:6:161","nodeType":"YulIdentifier","src":"30821:6:161"},{"name":"size","nativeSrc":"30829:4:161","nodeType":"YulIdentifier","src":"30829:4:161"},{"name":"topic1","nativeSrc":"30835:6:161","nodeType":"YulIdentifier","src":"30835:6:161"},{"name":"topic2","nativeSrc":"30843:6:161","nodeType":"YulIdentifier","src":"30843:6:161"},{"name":"topic3","nativeSrc":"30851:6:161","nodeType":"YulIdentifier","src":"30851:6:161"}],"functionName":{"name":"log3","nativeSrc":"30816:4:161","nodeType":"YulIdentifier","src":"30816:4:161"},"nativeSrc":"30816:42:161","nodeType":"YulFunctionCall","src":"30816:42:161"},"nativeSrc":"30816:42:161","nodeType":"YulExpressionStatement","src":"30816:42:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78267,"isOffset":false,"isSlot":false,"src":"30821:6:161","valueSize":1},{"declaration":78256,"isOffset":false,"isSlot":false,"src":"30829:4:161","valueSize":1},{"declaration":78177,"isOffset":false,"isSlot":false,"src":"30835:6:161","valueSize":1},{"declaration":78276,"isOffset":false,"isSlot":false,"src":"30843:6:161","valueSize":1},{"declaration":78279,"isOffset":false,"isSlot":false,"src":"30851:6:161","valueSize":1}],"flags":["memory-safe"],"id":78298,"nodeType":"InlineAssembly","src":"30773:99:161"}]}},"id":78307,"nodeType":"IfStatement","src":"30592:450:161","trueBody":{"id":78294,"nodeType":"Block","src":"30615:115:161","statements":[{"AST":{"nativeSrc":"30654:66:161","nodeType":"YulBlock","src":"30654:66:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"30677:6:161","nodeType":"YulIdentifier","src":"30677:6:161"},{"name":"size","nativeSrc":"30685:4:161","nodeType":"YulIdentifier","src":"30685:4:161"},{"name":"topic1","nativeSrc":"30691:6:161","nodeType":"YulIdentifier","src":"30691:6:161"},{"name":"topic2","nativeSrc":"30699:6:161","nodeType":"YulIdentifier","src":"30699:6:161"}],"functionName":{"name":"log2","nativeSrc":"30672:4:161","nodeType":"YulIdentifier","src":"30672:4:161"},"nativeSrc":"30672:34:161","nodeType":"YulFunctionCall","src":"30672:34:161"},"nativeSrc":"30672:34:161","nodeType":"YulExpressionStatement","src":"30672:34:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78267,"isOffset":false,"isSlot":false,"src":"30677:6:161","valueSize":1},{"declaration":78256,"isOffset":false,"isSlot":false,"src":"30685:4:161","valueSize":1},{"declaration":78177,"isOffset":false,"isSlot":false,"src":"30691:6:161","valueSize":1},{"declaration":78276,"isOffset":false,"isSlot":false,"src":"30699:6:161","valueSize":1}],"flags":["memory-safe"],"id":78293,"nodeType":"InlineAssembly","src":"30629:91:161"}]}},"id":78308,"nodeType":"IfStatement","src":"30456:586:161","trueBody":{"id":78289,"nodeType":"Block","src":"30479:107:161","statements":[{"AST":{"nativeSrc":"30518:58:161","nodeType":"YulBlock","src":"30518:58:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"30541:6:161","nodeType":"YulIdentifier","src":"30541:6:161"},{"name":"size","nativeSrc":"30549:4:161","nodeType":"YulIdentifier","src":"30549:4:161"},{"name":"topic1","nativeSrc":"30555:6:161","nodeType":"YulIdentifier","src":"30555:6:161"}],"functionName":{"name":"log1","nativeSrc":"30536:4:161","nodeType":"YulIdentifier","src":"30536:4:161"},"nativeSrc":"30536:26:161","nodeType":"YulFunctionCall","src":"30536:26:161"},"nativeSrc":"30536:26:161","nodeType":"YulExpressionStatement","src":"30536:26:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78267,"isOffset":false,"isSlot":false,"src":"30541:6:161","valueSize":1},{"declaration":78256,"isOffset":false,"isSlot":false,"src":"30549:4:161","valueSize":1},{"declaration":78177,"isOffset":false,"isSlot":false,"src":"30555:6:161","valueSize":1}],"flags":["memory-safe"],"id":78288,"nodeType":"InlineAssembly","src":"30493:83:161"}]}},{"expression":{"hexValue":"74727565","id":78309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31059:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":78110,"id":78310,"nodeType":"Return","src":"31052:11:161"}]},"documentation":{"id":78103,"nodeType":"StructuredDocumentation","src":"24152:3068:161","text":" @dev Tries to parse an event from the Sails framework and emit it in Solidity notation.\n User writes WASM smart contract on Sails framework called \"Counter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n Example of defining Solidity events in WASM contract based on Sails framework:\n ```rust\n #[event]\n #[derive(Clone, Debug, PartialEq, Encode, TypeInfo)]\n #[codec(crate = scale_codec)]\n #[scale_info(crate = scale_info)]\n pub enum CounterEvents {\n Added {\n #[indexed]\n source: ActorId,\n value: u32,\n },\n }\n ```\n User also generates \"Solidity ABI interface\" that allows services like Etherscan to decode events from `Mirror`\n (since we use the ABI interface as \"proxy implementation\"):\n ```solidity\n interface ICounter {\n event Added(address indexed source, uint32 value);\n // ... other events\n }\n ```\n Now let's imagine that the user wants to calculate something in WASM contract and send it to Ethereum as event,\n which will then be emitted by `Mirror` smart contract as showed on services like Etherscan:\n ```rust\n #[service(events = CounterEvents)]\n impl CounterService<'_> {\n #[export]\n pub fn add(&mut self, value: u32) -> u32 {\n let mut data_mut = self.data.borrow_mut();\n data_mut.counter = data_mut.counter.checked_add(value).expect(\"failed to add\");\n let source = Syscall::message_source();\n self.emit_eth_event(CounterEvents::Added { source, value })\n .expect(\"failed to emit eth event\");\n data_mut.counter\n }\n }\n ```\n All the `emit_eth_event` method in the Sails framework does is call the syscall\n `gcore::msg::send(destination=ETH_EVENT_ADDR, payload, value=0)`, where `payload`\n is encoded in Solidity notation as described below.\n Format in which the Sails framework sends events:\n - `uint8 topicsLength` (can be `1`, `2`, `3`, `4`).\n specifies which opcode (`log1`, `log2`, `log3`, `log4`) should be called.\n - `bytes32 topic1` (required)\n should never match our event selectors!\n - `bytes32 topic2` (optional)\n - `bytes32 topic3` (optional)\n - `bytes32 topic4` (optional)\n - `bytes payload` (optional)\n contains encoded data of event in form of `abi.encode(...)`.\n @param _message The message to be parsed and emitted as Solidity event.\n @return isSailsEvent `true` in case of success and `false` in case of error (no matching event found)."},"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseAndEmitSailsEvent","nameLocation":"27234:26:161","parameters":{"id":78107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78106,"mutability":"mutable","name":"_message","nameLocation":"27283:8:161","nodeType":"VariableDeclaration","scope":78312,"src":"27261:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78105,"nodeType":"UserDefinedTypeName","pathNode":{"id":78104,"name":"Gear.Message","nameLocations":["27261:4:161","27266:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"27261:12:161"},"referencedDeclaration":83067,"src":"27261:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"27260:32:161"},"returnParameters":{"id":78110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78109,"mutability":"mutable","name":"isSailsEvent","nameLocation":"27315:12:161","nodeType":"VariableDeclaration","scope":78312,"src":"27310:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78108,"name":"bool","nodeType":"ElementaryTypeName","src":"27310:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"27309:19:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78443,"nodeType":"FunctionDefinition","src":"37037:1645:161","nodes":[],"body":{"id":78442,"nodeType":"Block","src":"37104:1578:161","nodes":[],"statements":[{"condition":{"expression":{"id":78319,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37118:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37127:4:161","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":83066,"src":"37118:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78440,"nodeType":"Block","src":"38333:343:161","statements":[{"assignments":[78408],"declarations":[{"constant":false,"id":78408,"mutability":"mutable","name":"transferSuccess","nameLocation":"38352:15:161","nodeType":"VariableDeclaration","scope":78440,"src":"38347:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78407,"name":"bool","nodeType":"ElementaryTypeName","src":"38347:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78415,"initialValue":{"arguments":[{"expression":{"id":78410,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38385:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38394:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"38385:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78412,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38407:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38416:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"38407:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78409,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78656,"src":"38370:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":78414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38370:52:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"38347:75:161"},{"condition":{"id":78417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"38440:16:161","subExpression":{"id":78416,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78408,"src":"38441:15:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78426,"nodeType":"IfStatement","src":"38436:117:161","trueBody":{"id":78425,"nodeType":"Block","src":"38458:95:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78419,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38501:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38510:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"38501:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78421,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38523:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38532:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"38523:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78418,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"38481:19:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38481:57:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78424,"nodeType":"EmitStatement","src":"38476:62:161"}]}},{"eventCall":{"arguments":[{"expression":{"id":78428,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38578:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38587:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"38578:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":78430,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38596:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38605:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"38596:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":78432,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38612:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38621:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"38612:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38634:2:161","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":83099,"src":"38612:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":78435,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38638:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38647:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"38638:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38660:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":83102,"src":"38638:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":78427,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74213,"src":"38572:5:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":78438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38572:93:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78439,"nodeType":"EmitStatement","src":"38567:98:161"}]},"id":78441,"nodeType":"IfStatement","src":"37114:1562:161","trueBody":{"id":78406,"nodeType":"Block","src":"37133:1194:161","statements":[{"assignments":[78322],"declarations":[{"constant":false,"id":78322,"mutability":"mutable","name":"isSuccessReply","nameLocation":"37152:14:161","nodeType":"VariableDeclaration","scope":78406,"src":"37147:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78321,"name":"bool","nodeType":"ElementaryTypeName","src":"37147:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78330,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":78329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":78323,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37169:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37178:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"37169:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37191:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":83102,"src":"37169:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":78327,"indexExpression":{"hexValue":"30","id":78326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37196:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"37169:29:161","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37202:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37169:34:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"37147:56:161"},{"assignments":[78332],"declarations":[{"constant":false,"id":78332,"mutability":"mutable","name":"payload","nameLocation":"37231:7:161","nodeType":"VariableDeclaration","scope":78406,"src":"37218:20:161","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":78331,"name":"bytes","nodeType":"ElementaryTypeName","src":"37218:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":78333,"nodeType":"VariableDeclarationStatement","src":"37218:20:161"},{"condition":{"id":78334,"name":"isSuccessReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78322,"src":"37257:14:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78357,"nodeType":"Block","src":"37338:348:161","statements":[{"expression":{"id":78355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78341,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78332,"src":"37508:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":78344,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73742,"src":"37562:10:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICallbacks_$73742_$","typeString":"type(contract ICallbacks)"}},"id":78345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"37573:12:161","memberName":"onErrorReply","nodeType":"MemberAccess","referencedDeclaration":73741,"src":"37562:23:161","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_bytes32_$_t_bytes_calldata_ptr_$_t_bytes4_$returns$__$","typeString":"function ICallbacks.onErrorReply(bytes32,bytes calldata,bytes4) payable"}},"id":78346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"37586:8:161","memberName":"selector","nodeType":"MemberAccess","src":"37562:32:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":78347,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37596:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37605:2:161","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":83050,"src":"37596:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78349,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37609:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37618:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"37609:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":78351,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37627:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37636:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"37627:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37649:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":83102,"src":"37627:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":78342,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"37518:3:161","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":78343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"37522:18:161","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"37518:22:161","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":78354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37518:153:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"37508:163:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":78356,"nodeType":"ExpressionStatement","src":"37508:163:161"}]},"id":78358,"nodeType":"IfStatement","src":"37253:433:161","trueBody":{"id":78340,"nodeType":"Block","src":"37273:59:161","statements":[{"expression":{"id":78338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78335,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78332,"src":"37291:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":78336,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37301:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37310:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":83056,"src":"37301:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"37291:26:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":78339,"nodeType":"ExpressionStatement","src":"37291:26:161"}]}},{"assignments":[78360,null],"declarations":[{"constant":false,"id":78360,"mutability":"mutable","name":"success","nameLocation":"37706:7:161","nodeType":"VariableDeclaration","scope":78406,"src":"37701:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78359,"name":"bool","nodeType":"ElementaryTypeName","src":"37701:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":78370,"initialValue":{"arguments":[{"id":78368,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78332,"src":"37781:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"id":78361,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37718:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37727:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"37718:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37739:4:161","memberName":"call","nodeType":"MemberAccess","src":"37718:25:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas","value"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":78364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37749:7:161","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"},{"expression":{"id":78365,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37765:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37774:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"37765:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"37718:62:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gasvalue","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37718:71:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"37700:89:161"},{"condition":{"id":78372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"37808:8:161","subExpression":{"id":78371,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78360,"src":"37809:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78405,"nodeType":"IfStatement","src":"37804:513:161","trueBody":{"id":78404,"nodeType":"Block","src":"37818:499:161","statements":[{"assignments":[78374],"declarations":[{"constant":false,"id":78374,"mutability":"mutable","name":"transferSuccess","nameLocation":"37841:15:161","nodeType":"VariableDeclaration","scope":78404,"src":"37836:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78373,"name":"bool","nodeType":"ElementaryTypeName","src":"37836:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78381,"initialValue":{"arguments":[{"expression":{"id":78376,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37874:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37883:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"37874:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78378,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37896:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37905:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"37896:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78375,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78656,"src":"37859:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":78380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37859:52:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"37836:75:161"},{"condition":{"id":78383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"37933:16:161","subExpression":{"id":78382,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78374,"src":"37934:15:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78392,"nodeType":"IfStatement","src":"37929:125:161","trueBody":{"id":78391,"nodeType":"Block","src":"37951:103:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78385,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"37998:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38007:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83053,"src":"37998:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78387,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38020:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38029:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"38020:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78384,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"37978:19:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37978:57:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78390,"nodeType":"EmitStatement","src":"37973:62:161"}]}},{"documentation":" @dev In case of failed call, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"expression":{"id":78394,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38233:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38242:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83059,"src":"38233:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":78396,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38249:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38258:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"38249:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38271:2:161","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":83099,"src":"38249:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":78399,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78316,"src":"38275:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38284:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":83063,"src":"38275:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$83103_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38297:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":83102,"src":"38275:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":78393,"name":"ReplyCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74222,"src":"38217:15:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (uint128,bytes32,bytes4)"}},"id":78402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38217:85:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78403,"nodeType":"EmitStatement","src":"38212:90:161"}]}}]}}]},"documentation":{"id":78313,"nodeType":"StructuredDocumentation","src":"31076:5956:161","text":" @dev Internal function to send reply message.\n Non-zero value always sent since never goes to mailbox.\n Emits `Reply` event if `_message.call = false`.\n If `_message.call = true`, the call will be made to `_message.destination` with\n gas limit of 500_000 to prevent DoS attacks and with `_message.value`.\n The `_message.replyDetails` will also be evaluated to determine the reply's success.\n If `gear_core::message::ReplyCode` is successful, `_message.payload` will be used.\n If unsuccessful, `payload = ICallbacks.onErrorReply(_message.id, _message.payload, _message.replyDetails.code)`\n will be used and the appropriate method on `_message.destination` will be called.\n Function will also always attempt to send `_message.value`. If this fails for some reason,\n the `ReplyTransferFailed` event will be emitted.\n If call fails, then `ReplyCallFailed` event will be emitted.\n User writes WASM smart contract on Sails framework called \"Counter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n All the contract method does is return `u32` as result (reply):\n ```rust\n #[service(events = CounterEvents)]\n impl CounterService<'_> {\n #[export]\n pub fn add(&mut self, value: u32) -> u32 {\n let mut data_mut = self.data.borrow_mut();\n data_mut.counter = data_mut.counter.checked_add(value).expect(\"failed to add\");\n let source = Syscall::message_source();\n self.emit_eth_event(CounterEvents::Added { source, value })\n .expect(\"failed to emit eth event\");\n data_mut.counter\n }\n }\n User also generates \"Solidity ABI Interface\" to allow incrementing counter or calling other methods within WASM smart contract.\n Next, we assume user uploads `CounterAbi` smart contract to Ethereum:\n ```solidity\n interface ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId);\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId);\n // ... other methods\n }\n contract CounterAbi is ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {}\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {}\n }\n ```\n User also generates \"Solidity Callback Interface\" and implements own `CounterCaller` smart contract,\n which will handle reply hooks in methods starting with `replyOn_`:\n ```solidity\n interface ICounterCallbacks {\n function replyOn_init(bytes32 messageId) external;\n function replyOn_counterAdd(bytes32 messageId, uint32 reply) external;\n // ... other methods\n function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode) external payable;\n }\n contract CounterCaller is ICounterCallbacks {\n ICounter public immutable MIRROR;\n constructor(ICounter _mirror) {\n MIRROR = _mirror;\n }\n modifier onlyMirror() {\n _onlyMirror();\n _;\n }\n function _onlyMirror() internal view {\n require(msg.sender == address(MIRROR));\n }\n // Call `Counter` constructor on our platform\n function init(uint32 counter) external {\n // `bool _callReply = true`\n bytes32 _messageId = MIRROR.init(true, counter);\n }\n function replyOn_init(bytes32 messageId) external onlyMirror {\n // ...\n }\n // Compute `Counter.add(uint32 value) -> uint32 reply` on our platform\n mapping(bytes32 messageId => bool knownMessage) public counterAddInputs;\n mapping(bytes32 messageId => uint32 output) public counterAddResults;\n function counterAdd(uint32 value) external returns (bytes32 messageId) {\n // `bool _callReply = true`\n bytes32 _messageId = MIRROR.counterAdd(true, value);\n counterAddInputs[_messageId] = true;\n messageId = _messageId;\n }\n function replyOn_counterAdd(bytes32 messageId, uint32 reply) external onlyMirror {\n counterAddResults[messageId] = reply;\n }\n // Handle `Counter` errors on our platform\n event ErrorReply(bytes32 messageId, bytes payload, bytes4 replyCode);\n function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode)\n external\n payable\n onlyMirror\n {\n emit ErrorReply(messageId, payload, replyCode);\n }\n }\n ```\n User calls `CounterCaller.counterAdd(uint32 value)`, and the smart contract calls `ICounter.counterAdd(bool _callReply=true, uint32 value)`.\n Result calculated in WASM smart contract on Sails framework in `Counter.add(uint32 value) -> uint32 reply` method will be passed to\n `replyOn_counterAdd(bytes32 messageId, uint32 reply)`.\n @param _message The reply message to be sent."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"37046:17:161","parameters":{"id":78317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78316,"mutability":"mutable","name":"_message","nameLocation":"37086:8:161","nodeType":"VariableDeclaration","scope":78443,"src":"37064:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78315,"nodeType":"UserDefinedTypeName","pathNode":{"id":78314,"name":"Gear.Message","nameLocations":["37064:4:161","37069:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":83067,"src":"37064:12:161"},"referencedDeclaration":83067,"src":"37064:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$83067_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"37063:32:161"},"returnParameters":{"id":78318,"nodeType":"ParameterList","parameters":[],"src":"37104:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78556,"nodeType":"FunctionDefinition","src":"39220:1028:161","nodes":[],"body":{"id":78555,"nodeType":"Block","src":"39315:933:161","nodes":[],"statements":[{"assignments":[78454],"declarations":[{"constant":false,"id":78454,"mutability":"mutable","name":"claimsLen","nameLocation":"39333:9:161","nodeType":"VariableDeclaration","scope":78555,"src":"39325:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78453,"name":"uint256","nodeType":"ElementaryTypeName","src":"39325:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78457,"initialValue":{"expression":{"id":78455,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78448,"src":"39345:7:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":78456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39353:6:161","memberName":"length","nodeType":"MemberAccess","src":"39345:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39325:34:161"},{"assignments":[78459],"declarations":[{"constant":false,"id":78459,"mutability":"mutable","name":"claimsHashesSize","nameLocation":"39377:16:161","nodeType":"VariableDeclaration","scope":78555,"src":"39369:24:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78458,"name":"uint256","nodeType":"ElementaryTypeName","src":"39369:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78463,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78460,"name":"claimsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78454,"src":"39396:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":78461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39408:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"39396:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39369:41:161"},{"assignments":[78465],"declarations":[{"constant":false,"id":78465,"mutability":"mutable","name":"claimsHashesMemPtr","nameLocation":"39428:18:161","nodeType":"VariableDeclaration","scope":78555,"src":"39420:26:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78464,"name":"uint256","nodeType":"ElementaryTypeName","src":"39420:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78470,"initialValue":{"arguments":[{"id":78468,"name":"claimsHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78459,"src":"39465:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78466,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"39449:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39456:8:161","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"39449:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":78469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39449:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"39420:62:161"},{"assignments":[78472],"declarations":[{"constant":false,"id":78472,"mutability":"mutable","name":"offset","nameLocation":"39500:6:161","nodeType":"VariableDeclaration","scope":78555,"src":"39492:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78471,"name":"uint256","nodeType":"ElementaryTypeName","src":"39492:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78474,"initialValue":{"hexValue":"30","id":78473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39509:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"39492:18:161"},{"body":{"id":78546,"nodeType":"Block","src":"39561:588:161","statements":[{"assignments":[78489],"declarations":[{"constant":false,"id":78489,"mutability":"mutable","name":"claim","nameLocation":"39600:5:161","nodeType":"VariableDeclaration","scope":78546,"src":"39575:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":78488,"nodeType":"UserDefinedTypeName","pathNode":{"id":78487,"name":"Gear.ValueClaim","nameLocations":["39575:4:161","39580:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":83173,"src":"39575:15:161"},"referencedDeclaration":83173,"src":"39575:15:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":78493,"initialValue":{"baseExpression":{"id":78490,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78448,"src":"39608:7:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":78492,"indexExpression":{"id":78491,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78476,"src":"39616:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39608:10:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"39575:43:161"},{"assignments":[78495],"declarations":[{"constant":false,"id":78495,"mutability":"mutable","name":"claimHash","nameLocation":"39640:9:161","nodeType":"VariableDeclaration","scope":78546,"src":"39632:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39632:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78505,"initialValue":{"arguments":[{"expression":{"id":78498,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"39672:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39678:9:161","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":83168,"src":"39672:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78500,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"39689:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39695:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83170,"src":"39689:17:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78502,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"39708:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39714:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83172,"src":"39708:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":78496,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"39652:4:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":78497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39657:14:161","memberName":"valueClaimHash","nodeType":"MemberAccess","referencedDeclaration":83372,"src":"39652:19:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$_t_uint128_$returns$_t_bytes32_$","typeString":"function (bytes32,address,uint128) pure returns (bytes32)"}},"id":78504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39652:68:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"39632:88:161"},{"expression":{"arguments":[{"id":78509,"name":"claimsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78465,"src":"39760:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78510,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78472,"src":"39780:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78511,"name":"claimHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78495,"src":"39788:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":78506,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"39734:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39741:18:161","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"39734:25:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":78512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39734:64:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78513,"nodeType":"ExpressionStatement","src":"39734:64:161"},{"id":78518,"nodeType":"UncheckedBlock","src":"39812:55:161","statements":[{"expression":{"id":78516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78514,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78472,"src":"39840:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":78515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39850:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"39840:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78517,"nodeType":"ExpressionStatement","src":"39840:12:161"}]},{"assignments":[78520],"declarations":[{"constant":false,"id":78520,"mutability":"mutable","name":"success","nameLocation":"39886:7:161","nodeType":"VariableDeclaration","scope":78546,"src":"39881:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78519,"name":"bool","nodeType":"ElementaryTypeName","src":"39881:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78527,"initialValue":{"arguments":[{"expression":{"id":78522,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"39911:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39917:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":83170,"src":"39911:17:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78524,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"39930:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39936:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83172,"src":"39930:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78521,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78656,"src":"39896:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":78526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39896:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"39881:61:161"},{"condition":{"id":78528,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78520,"src":"39960:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78544,"nodeType":"Block","src":"40055:84:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78538,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"40095:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40101:9:161","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":83168,"src":"40095:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78540,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"40112:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40118:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83172,"src":"40112:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78537,"name":"ValueClaimFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74250,"src":"40078:16:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40078:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78543,"nodeType":"EmitStatement","src":"40073:51:161"}]},"id":78545,"nodeType":"IfStatement","src":"39956:183:161","trueBody":{"id":78536,"nodeType":"Block","src":"39969:80:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78530,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"40005:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40011:9:161","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":83168,"src":"40005:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78532,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78489,"src":"40022:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40028:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":83172,"src":"40022:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78529,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74229,"src":"39992:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39992:42:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78535,"nodeType":"EmitStatement","src":"39987:47:161"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78476,"src":"39541:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":78480,"name":"claimsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78454,"src":"39545:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"39541:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78547,"initializationExpression":{"assignments":[78476],"declarations":[{"constant":false,"id":78476,"mutability":"mutable","name":"i","nameLocation":"39534:1:161","nodeType":"VariableDeclaration","scope":78547,"src":"39526:9:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78475,"name":"uint256","nodeType":"ElementaryTypeName","src":"39526:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78478,"initialValue":{"hexValue":"30","id":78477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39538:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"39526:13:161"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":78483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"39556:3:161","subExpression":{"id":78482,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78476,"src":"39556:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78484,"nodeType":"ExpressionStatement","src":"39556:3:161"},"nodeType":"ForStatement","src":"39521:628:161"},{"expression":{"arguments":[{"id":78550,"name":"claimsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78465,"src":"40201:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":78551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40221:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":78552,"name":"claimsHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78459,"src":"40224:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78548,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"40166:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":78549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40173:27:161","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"40166:34:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":78553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40166:75:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":78452,"id":78554,"nodeType":"Return","src":"40159:82:161"}]},"documentation":{"id":78444,"nodeType":"StructuredDocumentation","src":"38787:428:161","text":" @dev Internal function to claim values from messages in mailbox.\n It transfers value to each claim destination and emits appropriate events:\n - `ValueClaimed` event is emitted if transfer is successful\n - `ValueClaimFailed` event is emitted if transfer fails\n @param _claims The array of value claims to be claimed.\n @return claimsHash The hash of the claimed values."},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"39229:12:161","parameters":{"id":78449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78448,"mutability":"mutable","name":"_claims","nameLocation":"39269:7:161","nodeType":"VariableDeclaration","scope":78556,"src":"39242:34:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":78446,"nodeType":"UserDefinedTypeName","pathNode":{"id":78445,"name":"Gear.ValueClaim","nameLocations":["39242:4:161","39247:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":83173,"src":"39242:15:161"},"referencedDeclaration":83173,"src":"39242:15:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$83173_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":78447,"nodeType":"ArrayTypeName","src":"39242:17:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$83173_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"39241:36:161"},"returnParameters":{"id":78452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78451,"mutability":"mutable","name":"claimsHash","nameLocation":"39303:10:161","nodeType":"VariableDeclaration","scope":78556,"src":"39295:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39295:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"39294:20:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78589,"nodeType":"FunctionDefinition","src":"40514:586:161","nodes":[],"body":{"id":78588,"nodeType":"Block","src":"40578:522:161","nodes":[],"statements":[{"documentation":" @dev Set inheritor.","expression":{"id":78566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78564,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77312,"src":"40643:6:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":78565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"40652:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"40643:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78567,"nodeType":"ExpressionStatement","src":"40643:13:161"},{"expression":{"id":78570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78568,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77315,"src":"40666:9:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78569,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78559,"src":"40678:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"40666:22:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78571,"nodeType":"ExpressionStatement","src":"40666:22:161"},{"assignments":[78573,78575],"declarations":[{"constant":false,"id":78573,"mutability":"mutable","name":"value","nameLocation":"40797:5:161","nodeType":"VariableDeclaration","scope":78588,"src":"40789:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78572,"name":"uint128","nodeType":"ElementaryTypeName","src":"40789:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":78575,"mutability":"mutable","name":"success","nameLocation":"40809:7:161","nodeType":"VariableDeclaration","scope":78588,"src":"40804:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78574,"name":"bool","nodeType":"ElementaryTypeName","src":"40804:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"documentation":" @dev Transfer all available balance to the inheritor.","id":78578,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78576,"name":"_transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77950,"src":"40820:31:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint128_$_t_bool_$","typeString":"function () returns (uint128,bool)"}},"id":78577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40820:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"nodeType":"VariableDeclarationStatement","src":"40788:65:161"},{"condition":{"id":78580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40867:8:161","subExpression":{"id":78579,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78575,"src":"40868:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78587,"nodeType":"IfStatement","src":"40863:231:161","trueBody":{"id":78586,"nodeType":"Block","src":"40877:217:161","statements":[{"documentation":" @dev In case of failed transfer, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"id":78582,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78559,"src":"41065:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78573,"src":"41077:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78581,"name":"TransferLockedValueToInheritorFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74236,"src":"41028:36:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41028:55:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78585,"nodeType":"EmitStatement","src":"41023:60:161"}]}}]},"documentation":{"id":78557,"nodeType":"StructuredDocumentation","src":"40311:198:161","text":" @dev Sets the inheritor address, sets exited flag to `true` and\n transfer all available balance to the inheritor.\n @param _inheritor The address of the inheritor."},"implemented":true,"kind":"function","modifiers":[{"id":78562,"kind":"modifierInvocation","modifierName":{"id":78561,"name":"onlyIfActive","nameLocations":["40565:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77387,"src":"40565:12:161"},"nodeType":"ModifierInvocation","src":"40565:12:161"}],"name":"_setInheritor","nameLocation":"40523:13:161","parameters":{"id":78560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78559,"mutability":"mutable","name":"_inheritor","nameLocation":"40545:10:161","nodeType":"VariableDeclaration","scope":78589,"src":"40537:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78558,"name":"address","nodeType":"ElementaryTypeName","src":"40537:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"40536:20:161"},"returnParameters":{"id":78563,"nodeType":"ParameterList","parameters":[],"src":"40578:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78604,"nodeType":"FunctionDefinition","src":"41203:281:161","nodes":[],"body":{"id":78603,"nodeType":"Block","src":"41257:227:161","nodes":[],"statements":[{"documentation":" @dev Set state hash.","expression":{"id":78597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78595,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77306,"src":"41323:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78596,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78592,"src":"41335:10:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"41323:22:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":78598,"nodeType":"ExpressionStatement","src":"41323:22:161"},{"documentation":" @dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":78600,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77306,"src":"41467:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":78599,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"41454:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":78601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41454:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78602,"nodeType":"EmitStatement","src":"41449:28:161"}]},"documentation":{"id":78590,"nodeType":"StructuredDocumentation","src":"41106:92:161","text":" @dev Updates the state hash.\n @param _stateHash The new state hash."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"41212:16:161","parameters":{"id":78593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78592,"mutability":"mutable","name":"_stateHash","nameLocation":"41237:10:161","nodeType":"VariableDeclaration","scope":78604,"src":"41229:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41229:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"41228:20:161"},"returnParameters":{"id":78594,"nodeType":"ParameterList","parameters":[],"src":"41257:0:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78626,"nodeType":"FunctionDefinition","src":"41658:182:161","nodes":[],"body":{"id":78625,"nodeType":"Block","src":"41730:110:161","nodes":[],"statements":[{"assignments":[78614],"declarations":[{"constant":false,"id":78614,"mutability":"mutable","name":"wvaraAddr","nameLocation":"41748:9:161","nodeType":"VariableDeclaration","scope":78625,"src":"41740:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78613,"name":"address","nodeType":"ElementaryTypeName","src":"41740:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":78620,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":78616,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78607,"src":"41768:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78615,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"41760:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$74985_$","typeString":"type(contract IRouter)"}},"id":78617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41760:19:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":78618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41780:11:161","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":74679,"src":"41760:31:161","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":78619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41760:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"41740:53:161"},{"expression":{"arguments":[{"id":78622,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78614,"src":"41823:9:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78621,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"41810:12:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":78623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41810:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"functionReturnParameters":78612,"id":78624,"nodeType":"Return","src":"41803:30:161"}]},"documentation":{"id":78605,"nodeType":"StructuredDocumentation","src":"41526:127:161","text":" @dev Get the `WrappedVara` contract instance.\n @param routerAddr The address of the `Router` contract."},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"41667:6:161","parameters":{"id":78608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78607,"mutability":"mutable","name":"routerAddr","nameLocation":"41682:10:161","nodeType":"VariableDeclaration","scope":78626,"src":"41674:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78606,"name":"address","nodeType":"ElementaryTypeName","src":"41674:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41673:20:161"},"returnParameters":{"id":78612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78626,"src":"41716:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":78610,"nodeType":"UserDefinedTypeName","pathNode":{"id":78609,"name":"IWrappedVara","nameLocations":["41716:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"41716:12:161"},"referencedDeclaration":75001,"src":"41716:12:161","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"41715:14:161"},"scope":78718,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":78656,"nodeType":"FunctionDefinition","src":"42082:253:161","nodes":[],"body":{"id":78655,"nodeType":"Block","src":"42165:170:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":78638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78631,"src":"42179:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42188:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42179:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78652,"nodeType":"IfStatement","src":"42175:133:161","trueBody":{"id":78651,"nodeType":"Block","src":"42191:117:161","statements":[{"assignments":[78640,null],"declarations":[{"constant":false,"id":78640,"mutability":"mutable","name":"success","nameLocation":"42211:7:161","nodeType":"VariableDeclaration","scope":78651,"src":"42206:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78639,"name":"bool","nodeType":"ElementaryTypeName","src":"42206:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":78648,"initialValue":{"arguments":[{"hexValue":"","id":78646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"42266:2:161","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":78641,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78629,"src":"42223:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42235:4:161","memberName":"call","nodeType":"MemberAccess","src":"42223:16:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas","value"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"355f303030","id":78643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42245:5:161","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5_000"},{"id":78644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78631,"src":"42259:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"42223:42:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gasvalue","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42223:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"42205:64:161"},{"expression":{"id":78649,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78640,"src":"42290:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":78635,"id":78650,"nodeType":"Return","src":"42283:14:161"}]}},{"expression":{"hexValue":"74727565","id":78653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42324:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":78635,"id":78654,"nodeType":"Return","src":"42317:11:161"}]},"documentation":{"id":78627,"nodeType":"StructuredDocumentation","src":"41846:231:161","text":" @dev Transfer ETH to destination address.\n It has gas limit of 5_000 to prevent DoS attacks.\n @param destination The address to transfer ETH to.\n @param value The amount of ETH to transfer."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferEther","nameLocation":"42091:14:161","parameters":{"id":78632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78629,"mutability":"mutable","name":"destination","nameLocation":"42114:11:161","nodeType":"VariableDeclaration","scope":78656,"src":"42106:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78628,"name":"address","nodeType":"ElementaryTypeName","src":"42106:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":78631,"mutability":"mutable","name":"value","nameLocation":"42135:5:161","nodeType":"VariableDeclaration","scope":78656,"src":"42127:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78630,"name":"uint128","nodeType":"ElementaryTypeName","src":"42127:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"42105:36:161"},"returnParameters":{"id":78635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78656,"src":"42159:4:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78633,"name":"bool","nodeType":"ElementaryTypeName","src":"42159:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"42158:6:161"},"scope":78718,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78717,"nodeType":"FunctionDefinition","src":"42636:1106:161","nodes":[],"body":{"id":78716,"nodeType":"Block","src":"42678:1064:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78662,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"42692:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42696:5:161","memberName":"value","nodeType":"MemberAccess","src":"42692:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42704:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42692:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78666,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"42709:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42713:4:161","memberName":"data","nodeType":"MemberAccess","src":"42709:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42718:6:161","memberName":"length","nodeType":"MemberAccess","src":"42709:15:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42728:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42709:20:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"42692:37:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"42853:8:161","subExpression":{"id":78685,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77321,"src":"42854:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78687,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"42865:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42869:4:161","memberName":"data","nodeType":"MemberAccess","src":"42865:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42874:6:161","memberName":"length","nodeType":"MemberAccess","src":"42865:15:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783234","id":78690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42884:4:161","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"src":"42865:23:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"42853:35:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78713,"nodeType":"Block","src":"43683:53:161","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":78710,"name":"InvalidFallbackCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74289,"src":"43704:19:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":78711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43704:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":78712,"nodeType":"RevertStatement","src":"43697:28:161"}]},"id":78714,"nodeType":"IfStatement","src":"42849:887:161","trueBody":{"id":78709,"nodeType":"Block","src":"42890:787:161","statements":[{"assignments":[78695],"declarations":[{"constant":false,"id":78695,"mutability":"mutable","name":"callReply","nameLocation":"43353:9:161","nodeType":"VariableDeclaration","scope":78709,"src":"43345:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78694,"name":"uint256","nodeType":"ElementaryTypeName","src":"43345:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"documentation":" @dev We only allow arbitrary calls to `!isSmall` `Mirror` contracts,\n which are more likely to come from their ABI interfaces.\n The minimum call data length is 0x24 (36 bytes) because:\n - 0x04 (4 bytes) for the function selector [0x00..0x04)\n - 0x20 (32 bytes) for the bool `callReply` [0x04..0x24)","id":78696,"nodeType":"VariableDeclarationStatement","src":"43345:17:161"},{"AST":{"nativeSrc":"43402:63:161","nodeType":"YulBlock","src":"43402:63:161","statements":[{"nativeSrc":"43420:31:161","nodeType":"YulAssignment","src":"43420:31:161","value":{"arguments":[{"kind":"number","nativeSrc":"43446:4:161","nodeType":"YulLiteral","src":"43446:4:161","type":"","value":"0x04"}],"functionName":{"name":"calldataload","nativeSrc":"43433:12:161","nodeType":"YulIdentifier","src":"43433:12:161"},"nativeSrc":"43433:18:161","nodeType":"YulFunctionCall","src":"43433:18:161"},"variableNames":[{"name":"callReply","nativeSrc":"43420:9:161","nodeType":"YulIdentifier","src":"43420:9:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78695,"isOffset":false,"isSlot":false,"src":"43420:9:161","valueSize":1}],"flags":["memory-safe"],"id":78697,"nodeType":"InlineAssembly","src":"43377:88:161"},{"assignments":[78699],"declarations":[{"constant":false,"id":78699,"mutability":"mutable","name":"messageId","nameLocation":"43487:9:161","nodeType":"VariableDeclaration","scope":78709,"src":"43479:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78698,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43479:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78707,"initialValue":{"arguments":[{"expression":{"id":78701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"43512:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43516:4:161","memberName":"data","nodeType":"MemberAccess","src":"43512:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78703,"name":"callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78695,"src":"43522:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43535:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"43522:14:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":78700,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77917,"src":"43499:12:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes calldata,bool) returns (bytes32)"}},"id":78706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43499:38:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43479:58:161"},{"AST":{"nativeSrc":"43577:90:161","nodeType":"YulBlock","src":"43577:90:161","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"43602:4:161","nodeType":"YulLiteral","src":"43602:4:161","type":"","value":"0x00"},{"name":"messageId","nativeSrc":"43608:9:161","nodeType":"YulIdentifier","src":"43608:9:161"}],"functionName":{"name":"mstore","nativeSrc":"43595:6:161","nodeType":"YulIdentifier","src":"43595:6:161"},"nativeSrc":"43595:23:161","nodeType":"YulFunctionCall","src":"43595:23:161"},"nativeSrc":"43595:23:161","nodeType":"YulExpressionStatement","src":"43595:23:161"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"43642:4:161","nodeType":"YulLiteral","src":"43642:4:161","type":"","value":"0x00"},{"kind":"number","nativeSrc":"43648:4:161","nodeType":"YulLiteral","src":"43648:4:161","type":"","value":"0x20"}],"functionName":{"name":"return","nativeSrc":"43635:6:161","nodeType":"YulIdentifier","src":"43635:6:161"},"nativeSrc":"43635:18:161","nodeType":"YulFunctionCall","src":"43635:18:161"},"nativeSrc":"43635:18:161","nodeType":"YulExpressionStatement","src":"43635:18:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78699,"isOffset":false,"isSlot":false,"src":"43608:9:161","valueSize":1}],"flags":["memory-safe"],"id":78708,"nodeType":"InlineAssembly","src":"43552:115:161"}]}},"id":78715,"nodeType":"IfStatement","src":"42688:1048:161","trueBody":{"id":78684,"nodeType":"Block","src":"42731:112:161","statements":[{"assignments":[78673],"declarations":[{"constant":false,"id":78673,"mutability":"mutable","name":"value","nameLocation":"42753:5:161","nodeType":"VariableDeclaration","scope":78684,"src":"42745:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78672,"name":"uint128","nodeType":"ElementaryTypeName","src":"42745:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":78679,"initialValue":{"arguments":[{"expression":{"id":78676,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"42769:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42773:5:161","memberName":"value","nodeType":"MemberAccess","src":"42769:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"42761:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":78674,"name":"uint128","nodeType":"ElementaryTypeName","src":"42761:7:161","typeDescriptions":{}}},"id":78678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42761:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"42745:34:161"},{"eventCall":{"arguments":[{"id":78681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78673,"src":"42826:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78680,"name":"OwnedBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74177,"src":"42799:26:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":78682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42799:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78683,"nodeType":"EmitStatement","src":"42794:38:161"}]}}]},"documentation":{"id":78657,"nodeType":"StructuredDocumentation","src":"42341:290:161","text":" @dev Fallback function for top-up owned balance in native currency (ETH)\n and for sending arbitrary calls to `!isSmall` `Mirror` contracts\n as messages to Sails framework.\n See the description of `Mirror.isSmall` field for details."},"implemented":true,"kind":"fallback","modifiers":[{"id":78660,"kind":"modifierInvocation","modifierName":{"id":78659,"name":"whenNotPaused","nameLocations":["42664:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77448,"src":"42664:13:161"},"nodeType":"ModifierInvocation","src":"42664:13:161"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":78658,"nodeType":"ParameterList","parameters":[],"src":"42644:2:161"},"returnParameters":{"id":78661,"nodeType":"ParameterList","parameters":[],"src":"42678:0:161"},"scope":78718,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":77295,"name":"IMirror","nameLocations":["2640:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"2640:7:161"},"id":77296,"nodeType":"InheritanceSpecifier","src":"2640:7:161"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","documentation":{"id":77294,"nodeType":"StructuredDocumentation","src":"621:1999:161","text":" @dev Mirror smart contract is responsible for storing the minimal state of programs on our platform\n and transitioning from one state to another by calling `performStateTransition(...)`. It's built\n on actor-model architecture, and in Ethereum, we implement this through \"request-response\" model.\n This means we have two types of events:\n - \"Requested\" events - when user calls one of the methods marked as \"Primary Gear logic\" we emit such an event,\n and all our nodes process it off-chain\n - \"Responded\" events - when we receive response from our nodes and transmit it back to Ethereum.\n All logic called within `performStateTransition(...)` and leading to methods marked as\n \"Private calls related to performStateTransition\" are such events.\n It's important not to confuse these two, as this is how we implement the actor model in Ethereum.\n Mirror economic model has two balances:\n - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`.\n This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`.\n - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain.\n It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform.\n You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the\n Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users\n can use it for free. This is called the \"reverse-gas model\". Developer can also require the presence of `value` in\n the owned balance when calling methods in a WASM smart contract to protect their program from spam."},"fullyImplemented":true,"linearizedBaseContracts":[78718,74395],"name":"Mirror","nameLocation":"2630:6:161","scope":78719,"usedErrors":[74253,74256,74259,74262,74265,74268,74271,74274,74277,74279,74281,74283,74285,74287,74289],"usedEvents":[74141,74154,74165,74172,74177,74182,74193,74202,74213,74222,74229,74236,74243,74250]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":161} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUpWithPermit","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exited","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"},{"name":"_isSmall","type":"bool","internalType":"bool"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"exited","type":"bool","internalType":"bool"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueToReceiveNegativeSign","type":"bool","internalType":"bool"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]},{"name":"call","type":"bool","internalType":"bool"}]}]}],"outputs":[{"name":"transitionHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_callReply","type":"bool","internalType":"bool"}],"outputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DebugEvent","inputs":[{"name":"topic0","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":true},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageCallFailed","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"callReply","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnedBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyCallFailed","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ReplyTransferFailed","inputs":[{"name":"destination","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TransferLockedValueToInheritorFailed","inputs":[{"name":"inheritor","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimFailed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AbiInterfaceAlreadySet","inputs":[]},{"type":"error","name":"CallerNotRouter","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"EtherTransferToRouterFailed","inputs":[]},{"type":"error","name":"InheritorMustBeZero","inputs":[]},{"type":"error","name":"InitMessageNotCreated","inputs":[]},{"type":"error","name":"InitMessageNotCreatedAndCallerNotInitializer","inputs":[]},{"type":"error","name":"InitializerAlreadySet","inputs":[]},{"type":"error","name":"InvalidActorId","inputs":[]},{"type":"error","name":"InvalidFallbackCall","inputs":[]},{"type":"error","name":"IsSmallAlreadySet","inputs":[]},{"type":"error","name":"ProgramExited","inputs":[]},{"type":"error","name":"ProgramNotExited","inputs":[]},{"type":"error","name":"TransferLockedValueToInheritorExternalFailed","inputs":[]},{"type":"error","name":"WVaraTransferFailed","inputs":[]}],"bytecode":{"object":"0x60a03461008d57601f611d8138819003918201601f19168301916001600160401b038311848410176100915780849260209460405283398101031261008d57516001600160a01b038116810361008d57608052604051611cdb90816100a682396080518181816102390152818161031d015281816113e90152818161148a0152818161152d01526115e30152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561017f575b610016611518565b34151580610177575b15610059577f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620660206040516001600160801b0334168152a1005b60ff60035460a01c16158061016c575b1561015d576100766115b5565b60015415801590610149575b1561013a576001600160801b03341661009a81611472565b600154903060601b5f528160145260345f20915f198114610126576001016001557f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5460405183815260806020820152602060808201368152365f838301375f823683010152601f19601f3601160101926040820152600435151560608201528033930390a25f5260205ff35b634e487b7160e01b5f52601160045260245ffd5b634bfa3a2d60e01b5f5260045ffd5b506003546001600160a01b03163314610082565b6399dd405f60e01b5f5260045ffd5b506024361015610069565b50361561001f565b5f5f3560e01c8063084f443a1461086a57806336a52a181461083d57806342129d001461071b5780635ce6c327146106f8578063701da98e146106db578063704ed542146106855780637a8e0cdd146105ef57806391d5a64c146105945780639ce110d71461056b578063affed0e01461054d578063bfa28576146103f6578063c6049692146102d6578063e43f34331461026b5763f887ea4014610224575061000e565b346102685780600319360112610268576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034610268578060031936011261026857610284611518565b60025460ff8116156102c7576102b090476001600160801b03169060081c6001600160a01b03166118cc565b156102b85780f35b63085fbdef60e21b8152600490fd5b63463a5c5f60e01b8252600482fd5b50346102685760a0366003190112610268576102f061132d565b6044359060ff82168092036103f257610307611518565b61030f6115b5565b826001600160a01b036103417f00000000000000000000000000000000000000000000000000000000000000006116aa565b16803b156103ee57819060e46040518094819363d505accf60e01b83523360048401523060248401526001600160801b038816988960448501526024356064850152608484015260643560a484015260843560c48401525af16103c4575b505f516020611cbb5f395f51905f52916103ba6020926115d0565b604051908152a180f35b916103ba846103e4602094965f516020611cbb5f395f51905f52966113c6565b949250509161039f565b5080fd5b8280fd5b5034610268576080366003190112610268576004356001600160a01b038116908190036103ee576024356001600160a01b038116908190036103f25760443580151580910361054957606435926001600160801b0384168094036105455761045c6113e7565b600354906001600160a01b0382166105365760ff8260a01c16610527577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54926001600160a01b038416610518576001600160a81b03199092161760a09190911b60ff60a01b16176003556001600160a01b031916177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806104fd575080f35b60205f516020611cbb5f395f51905f5291604051908152a180f35b638778dcd360e01b8752600487fd5b6325f368db60e11b8652600486fd5b63f20d240560e01b8652600486fd5b8480fd5b8380fd5b50346102685780600319360112610268576020600154604051908152f35b50346102685780600319360112610268576003546040516001600160a01b039091168152602090f35b5034610268576020366003190112610268576105ae611518565b6105b66115b5565b6105be611691565b60405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203392a280f35b506040366003190112610268576024356001600160401b0381116103ee5761063c7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f913690600401611300565b610647929192611518565b61064f6115b5565b610657611691565b6001600160801b0334169061066b82611472565b61067f604051928392339660043585611398565b0390a280f35b5034610268576020366003190112610268575f516020611cbb5f395f51905f5260206106af61132d565b6106b7611518565b6106bf6115b5565b6106c8816115d0565b6001600160801b0360405191168152a180f35b503461026857806003193601126102685760209054604051908152f35b5034610268578060031936011261026857602060ff600254166040519015158152f35b506040366003190112610268576004356001600160401b0381116103ee57610747903690600401611300565b91906024358015158091036103f25761075e611518565b6107666115b5565b60015415801590610829575b1561081a576001600160801b0334169161078b83611472565b6001543060601b85528060145260348520945f1982146108065750916107ed6020969260017f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c549501600155604051938785526080898601526080850191611378565b93604083015260608201528033930390a2604051908152f35b634e487b7160e01b81526011600452602490fd5b634bfa3a2d60e01b8352600483fd5b506003546001600160a01b03163314610772565b503461026857806003193601126102685760025460405160089190911c6001600160a01b03168152602090f35b506020366003190112610f08576001600160401b0360043511610f08576004353603610100600319820112610f08576108a16113e7565b6108af600435600401611343565b306001600160a01b03909116036112f1576108ce60a460043501611357565b6112d6575b60043560e401356022198201811215610f08576001600160401b03600482813501013511610f0857600481813501013560051b3603602482600435010113610f08576004803582010135600581901b8190046020149015171561012657610943600482813501013560051b61172a565b5f93845b6004848135010135861015610f2057600586901b600435850190810160240135969036036101021901871215610f085760e06023196004358701890136030112610f08576040519160c083018381106001600160401b03821117610f0c57604052600435860188016024810135845260440135906001600160a01b0382168203610f085760208401918252606460043588018a0101356001600160401b038111610f085760209060048b8a8235010101010136601f82011215610f0857610a159036906020813591016114ca565b6040850190815291608460043589018b0101356001600160801b0381168103610f085760608601908152604060a3196004358b018d0136030112610f085760405195604087018781106001600160401b03821117610f0c576040526004358a018c0160a4810135885260c40135906001600160e01b031982168203610f0857602088019182526080810188905260e46004358c018e01013580151596878203610f0857600199602098610b43958560549560a060359801525198519351975192519063ffffffff60e01b905116908b604051998a968288019c8d526001600160601b03199060601b1660408801528051918291018888015e8501936001600160801b03199060801b16868501526064840152608483015260f81b6088820152030160158101845201826113c6565b51902086820152019660a4600435870182010135610b765760206004610b6f9288823501010101611796565b0194610947565b610b8860e46004358801830101611357565b15610dd9576001600160f81b0319610ba860c46004358901840101611781565b5f1a60f81b161586826060925f14610d51575f9250610be160606004610be893869582350101010160206004878d82350101010161174f565b36916114ca565b886001600160801b03610c166080600488610c0a604483358801830101611343565b95823501010101611364565b16602083519301916207a120f1610c2b611443565b5015610c38575b50610b6f565b610c65610c4d60446004358901840101611343565b610c5f60846004358a01850101611364565b906118cc565b15610ce2575b7f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c36040610ca060846004358a01850101611364565b60a060046001600160e01b0319610cbe60c483358e01890101611781565b16956001600160801b038551941684528b823501010101356020820152a25f610c32565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610d1560446004358901840101611343565b610d2760846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610c6b565b5f928392610dd491610db7610d7360043584018601606481019060240161174f565b610d8560c46004358701890101611781565b9360206004604051998a98634a646c7f60e01b848b015282350101010135602487015260448601526084850191611378565b9063ffffffff60e01b16606483015203601f1981018352826113c6565b610be8565b610dee610c4d60446004358901840101611343565b15610e99575b7fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6610e2c60043588018301606481019060240161174f565b610e3e60846004358b01860101611364565b60a060046001600160e01b0319610e5c60c483358f018a0101611781565b16966001600160801b03610e7d604051978897606089526060890191611378565b941660208601528c8235010101013560408301520390a2610b6f565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610ecc60446004358901840101611343565b610ede60846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610df4565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b509291600490813501013560051b90209060c460043501359060221901811215610f085760043501916004830135916001600160401b038311610f08576060830236036024850113610f08578260051b908382046020148415171561012657610f8c829594939261172a565b915f955f965b858810156110c957610fca949596976001916004606083028b01019061102c611023602080850135938c816060604089019e8f611343565b980197610fd689611364565b60405190868201928a84526001600160601b03199060601b1660408301526001600160801b03199060801b166054820152604481526110166064826113c6565b5190209101520199611343565b610c5f84611364565b156110805761105b7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578392611364565b604080519283526001600160801b0391909116602083015290a15b0196959493610f92565b6110aa7f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed92611364565b604080519283526001600160801b0391909116602083015290a1611076565b50832091604460043501916110dd83611357565b156112a35750916020926110f5606460043501611343565b916110fe6115b5565b600280546001600160a81b031916600885811b610100600160a81b031691909117600117918290555f9491476001600160801b0316916111499183911c6001600160a01b03166118cc565b15611256575b50505b8254602460043501359384809203611225575b505061117e611178600435600401611343565b94611357565b61118c606460043501611343565b61119a608460043501611364565b906111a960a460043501611357565b9260405196898801986001600160601b03199060601b1689526034880152151560f81b60548701526001600160601b03199060601b1660558601526001600160801b03199060801b166069850152151560f81b6079840152607a830152609a820152609a815261121a60ba826113c6565b519020604051908152f35b557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093085604051858152a18286611165565b604080516001600160a01b039390931683526001600160801b039190911660208301527f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f391a1858061114f565b906001600160a01b036112ba600435606401611343565b166112c757602093611152565b6304c3c7a160e41b5f5260045ffd5b6112ec6112e7608460043501611364565b611472565b6108d3565b63ed488aa360e01b5f5260045ffd5b9181601f84011215610f08578235916001600160401b038311610f085760208381860195010111610f0857565b600435906001600160801b0382168203610f0857565b356001600160a01b0381168103610f085790565b358015158103610f085790565b356001600160801b0381168103610f085790565b908060209392818452848401375f828201840152601f01601f1916010190565b926040926113bf916001600160801b03939796978652606060208701526060860191611378565b9416910152565b90601f801991011681019081106001600160401b03821117610f0c57604052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361141957565b6375f48d7160e11b5f5260045ffd5b6001600160401b038111610f0c57601f01601f191660200190565b3d1561146d573d9061145482611428565b9161146260405193846113c6565b82523d5f602084013e565b606090565b6001600160801b0316806114835750565b5f808080937f00000000000000000000000000000000000000000000000000000000000000005af16114b3611443565b50156114bb57565b6308eb200360e41b5f5260045ffd5b9291926114d682611428565b916114e460405193846113c6565b829481845281830111610f08578281602093845f960137010152565b90816020910312610f0857518015158103610f085790565b604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156115aa575f9161157b575b5061156c57565b63d93c066560e01b5f5260045ffd5b61159d915060203d6020116115a3575b61159581836113c6565b810190611500565b5f611565565b503d61158b565b6040513d5f823e3d90fd5b60ff600254166115c157565b630d304b8160e31b5f5260045ffd5b6001600160801b0316806115e15750565b7f00000000000000000000000000000000000000000000000000000000000000009060209060646001600160a01b03611619856116aa565b6040516323b872dd60e01b81523360048201526001600160a01b0390961660248701526044860193909352849283915f91165af19081156115aa575f91611672575b501561166357565b6303a25d1960e31b5f5260045ffd5b61168b915060203d6020116115a35761159581836113c6565b5f61165b565b6001541561169b57565b631a2efd3560e31b5f5260045ffd5b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa9081156115aa575f916116e8575b506001600160a01b031690565b90506020813d602011611722575b81611703602093836113c6565b81010312610f0857516001600160a01b0381168103610f08575f6116db565b3d91506116f6565b6040519190601f01601f191682016001600160401b03811183821017610f0857604052565b903590601e1981360301821215610f0857018035906001600160401b038211610f0857602001918136038313610f0857565b356001600160e01b031981168103610f085790565b61179f816118f9565b156117a75750565b6117b360c08201611357565b611820575b7f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177361181b6117e860208401611343565b6117f5604085018561174f565b61180460608795939501611364565b9060405194859460018060a01b0316973585611398565b0390a2565b602081015f8061182f83611343565b8161183d604087018761174f565b9190826040519384928337810182815203926207a120f161185c611443565b501561186857506117b8565b6118927f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f891611343565b61189e60608401611364565b60408051943585526001600160801b0390911660208501526001600160a01b0390911692908190810161181b565b906001600160801b031690816118e3575050600190565b5f8080938193611388f16118f5611443565b5090565b611906604082018261174f565b90916001600160a01b038061191d60208401611343565b16149081611c9c575b5080611c93575b15611c8d5781358060f81c90600182101580611c82575b15611c7a5760f31c611fe016600181018310611c7a576001840135927f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093084141580611c50575b80611c26575b80611bfc575b80611bd2575b80611bbb575b80611b91575b80611b67575b80611b3d575b80611b13575b80611ae9575b80611abf575b80611a95575b80611a6b575b15611a62578190035f1901918260016119ea8261172a565b93870101833760218501359460418101359160018103611a115750505090919250a1600190565b60028103611a2257505050a2600190565b600381979593969497145f14611a3e57505090919293a3600190565b600414611a51575b505050505050600190565b6061013594a45f8080808080611a46565b50505050505f90565b507f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed8414156119d2565b507f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a8414156119cc565b507f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f38414156119c6565b507fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd657838414156119c0565b507f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c38414156119ba565b507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68414156119b4565b507f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f88414156119ae565b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738414156119a8565b505f516020611cbb5f395f51905f528414156119a2565b507f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620684141561199c565b507f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c4978841415611996565b507fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f841415611990565b507f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5484141561198a565b505050505f90565b506004821115611944565b50505f90565b5080151561192d565b6001600160801b0391506060611cb29101611364565b16155f61192656fe85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667","sourceMap":"2621:43439:161:-:0;;;;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;8828:16;;2621:43439;;;;;;;;8828:16;2621:43439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2621:43439:161;;;;;;-1:-1:-1;2621:43439:161;;;;;-1:-1:-1;2621:43439:161","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561017f575b610016611518565b34151580610177575b15610059577f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620660206040516001600160801b0334168152a1005b60ff60035460a01c16158061016c575b1561015d576100766115b5565b60015415801590610149575b1561013a576001600160801b03341661009a81611472565b600154903060601b5f528160145260345f20915f198114610126576001016001557f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5460405183815260806020820152602060808201368152365f838301375f823683010152601f19601f3601160101926040820152600435151560608201528033930390a25f5260205ff35b634e487b7160e01b5f52601160045260245ffd5b634bfa3a2d60e01b5f5260045ffd5b506003546001600160a01b03163314610082565b6399dd405f60e01b5f5260045ffd5b506024361015610069565b50361561001f565b5f5f3560e01c8063084f443a1461086a57806336a52a181461083d57806342129d001461071b5780635ce6c327146106f8578063701da98e146106db578063704ed542146106855780637a8e0cdd146105ef57806391d5a64c146105945780639ce110d71461056b578063affed0e01461054d578063bfa28576146103f6578063c6049692146102d6578063e43f34331461026b5763f887ea4014610224575061000e565b346102685780600319360112610268576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b5034610268578060031936011261026857610284611518565b60025460ff8116156102c7576102b090476001600160801b03169060081c6001600160a01b03166118cc565b156102b85780f35b63085fbdef60e21b8152600490fd5b63463a5c5f60e01b8252600482fd5b50346102685760a0366003190112610268576102f061132d565b6044359060ff82168092036103f257610307611518565b61030f6115b5565b826001600160a01b036103417f00000000000000000000000000000000000000000000000000000000000000006116aa565b16803b156103ee57819060e46040518094819363d505accf60e01b83523360048401523060248401526001600160801b038816988960448501526024356064850152608484015260643560a484015260843560c48401525af16103c4575b505f516020611cbb5f395f51905f52916103ba6020926115d0565b604051908152a180f35b916103ba846103e4602094965f516020611cbb5f395f51905f52966113c6565b949250509161039f565b5080fd5b8280fd5b5034610268576080366003190112610268576004356001600160a01b038116908190036103ee576024356001600160a01b038116908190036103f25760443580151580910361054957606435926001600160801b0384168094036105455761045c6113e7565b600354906001600160a01b0382166105365760ff8260a01c16610527577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54926001600160a01b038416610518576001600160a81b03199092161760a09190911b60ff60a01b16176003556001600160a01b031916177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806104fd575080f35b60205f516020611cbb5f395f51905f5291604051908152a180f35b638778dcd360e01b8752600487fd5b6325f368db60e11b8652600486fd5b63f20d240560e01b8652600486fd5b8480fd5b8380fd5b50346102685780600319360112610268576020600154604051908152f35b50346102685780600319360112610268576003546040516001600160a01b039091168152602090f35b5034610268576020366003190112610268576105ae611518565b6105b66115b5565b6105be611691565b60405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203392a280f35b506040366003190112610268576024356001600160401b0381116103ee5761063c7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f913690600401611300565b610647929192611518565b61064f6115b5565b610657611691565b6001600160801b0334169061066b82611472565b61067f604051928392339660043585611398565b0390a280f35b5034610268576020366003190112610268575f516020611cbb5f395f51905f5260206106af61132d565b6106b7611518565b6106bf6115b5565b6106c8816115d0565b6001600160801b0360405191168152a180f35b503461026857806003193601126102685760209054604051908152f35b5034610268578060031936011261026857602060ff600254166040519015158152f35b506040366003190112610268576004356001600160401b0381116103ee57610747903690600401611300565b91906024358015158091036103f25761075e611518565b6107666115b5565b60015415801590610829575b1561081a576001600160801b0334169161078b83611472565b6001543060601b85528060145260348520945f1982146108065750916107ed6020969260017f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c549501600155604051938785526080898601526080850191611378565b93604083015260608201528033930390a2604051908152f35b634e487b7160e01b81526011600452602490fd5b634bfa3a2d60e01b8352600483fd5b506003546001600160a01b03163314610772565b503461026857806003193601126102685760025460405160089190911c6001600160a01b03168152602090f35b506020366003190112610f08576001600160401b0360043511610f08576004353603610100600319820112610f08576108a16113e7565b6108af600435600401611343565b306001600160a01b03909116036112f1576108ce60a460043501611357565b6112d6575b60043560e401356022198201811215610f08576001600160401b03600482813501013511610f0857600481813501013560051b3603602482600435010113610f08576004803582010135600581901b8190046020149015171561012657610943600482813501013560051b61172a565b5f93845b6004848135010135861015610f2057600586901b600435850190810160240135969036036101021901871215610f085760e06023196004358701890136030112610f08576040519160c083018381106001600160401b03821117610f0c57604052600435860188016024810135845260440135906001600160a01b0382168203610f085760208401918252606460043588018a0101356001600160401b038111610f085760209060048b8a8235010101010136601f82011215610f0857610a159036906020813591016114ca565b6040850190815291608460043589018b0101356001600160801b0381168103610f085760608601908152604060a3196004358b018d0136030112610f085760405195604087018781106001600160401b03821117610f0c576040526004358a018c0160a4810135885260c40135906001600160e01b031982168203610f0857602088019182526080810188905260e46004358c018e01013580151596878203610f0857600199602098610b43958560549560a060359801525198519351975192519063ffffffff60e01b905116908b604051998a968288019c8d526001600160601b03199060601b1660408801528051918291018888015e8501936001600160801b03199060801b16868501526064840152608483015260f81b6088820152030160158101845201826113c6565b51902086820152019660a4600435870182010135610b765760206004610b6f9288823501010101611796565b0194610947565b610b8860e46004358801830101611357565b15610dd9576001600160f81b0319610ba860c46004358901840101611781565b5f1a60f81b161586826060925f14610d51575f9250610be160606004610be893869582350101010160206004878d82350101010161174f565b36916114ca565b886001600160801b03610c166080600488610c0a604483358801830101611343565b95823501010101611364565b16602083519301916207a120f1610c2b611443565b5015610c38575b50610b6f565b610c65610c4d60446004358901840101611343565b610c5f60846004358a01850101611364565b906118cc565b15610ce2575b7f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c36040610ca060846004358a01850101611364565b60a060046001600160e01b0319610cbe60c483358e01890101611781565b16956001600160801b038551941684528b823501010101356020820152a25f610c32565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610d1560446004358901840101611343565b610d2760846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610c6b565b5f928392610dd491610db7610d7360043584018601606481019060240161174f565b610d8560c46004358701890101611781565b9360206004604051998a98634a646c7f60e01b848b015282350101010135602487015260448601526084850191611378565b9063ffffffff60e01b16606483015203601f1981018352826113c6565b610be8565b610dee610c4d60446004358901840101611343565b15610e99575b7fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6610e2c60043588018301606481019060240161174f565b610e3e60846004358b01860101611364565b60a060046001600160e01b0319610e5c60c483358f018a0101611781565b16966001600160801b03610e7d604051978897606089526060890191611378565b941660208601528c8235010101013560408301520390a2610b6f565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610ecc60446004358901840101611343565b610ede60846004358a01850101611364565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610df4565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b509291600490813501013560051b90209060c460043501359060221901811215610f085760043501916004830135916001600160401b038311610f08576060830236036024850113610f08578260051b908382046020148415171561012657610f8c829594939261172a565b915f955f965b858810156110c957610fca949596976001916004606083028b01019061102c611023602080850135938c816060604089019e8f611343565b980197610fd689611364565b60405190868201928a84526001600160601b03199060601b1660408301526001600160801b03199060801b166054820152604481526110166064826113c6565b5190209101520199611343565b610c5f84611364565b156110805761105b7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd6578392611364565b604080519283526001600160801b0391909116602083015290a15b0196959493610f92565b6110aa7f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed92611364565b604080519283526001600160801b0391909116602083015290a1611076565b50832091604460043501916110dd83611357565b156112a35750916020926110f5606460043501611343565b916110fe6115b5565b600280546001600160a81b031916600885811b610100600160a81b031691909117600117918290555f9491476001600160801b0316916111499183911c6001600160a01b03166118cc565b15611256575b50505b8254602460043501359384809203611225575b505061117e611178600435600401611343565b94611357565b61118c606460043501611343565b61119a608460043501611364565b906111a960a460043501611357565b9260405196898801986001600160601b03199060601b1689526034880152151560f81b60548701526001600160601b03199060601b1660558601526001600160801b03199060801b166069850152151560f81b6079840152607a830152609a820152609a815261121a60ba826113c6565b519020604051908152f35b557f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093085604051858152a18286611165565b604080516001600160a01b039390931683526001600160801b039190911660208301527f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f391a1858061114f565b906001600160a01b036112ba600435606401611343565b166112c757602093611152565b6304c3c7a160e41b5f5260045ffd5b6112ec6112e7608460043501611364565b611472565b6108d3565b63ed488aa360e01b5f5260045ffd5b9181601f84011215610f08578235916001600160401b038311610f085760208381860195010111610f0857565b600435906001600160801b0382168203610f0857565b356001600160a01b0381168103610f085790565b358015158103610f085790565b356001600160801b0381168103610f085790565b908060209392818452848401375f828201840152601f01601f1916010190565b926040926113bf916001600160801b03939796978652606060208701526060860191611378565b9416910152565b90601f801991011681019081106001600160401b03821117610f0c57604052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361141957565b6375f48d7160e11b5f5260045ffd5b6001600160401b038111610f0c57601f01601f191660200190565b3d1561146d573d9061145482611428565b9161146260405193846113c6565b82523d5f602084013e565b606090565b6001600160801b0316806114835750565b5f808080937f00000000000000000000000000000000000000000000000000000000000000005af16114b3611443565b50156114bb57565b6308eb200360e41b5f5260045ffd5b9291926114d682611428565b916114e460405193846113c6565b829481845281830111610f08578281602093845f960137010152565b90816020910312610f0857518015158103610f085790565b604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156115aa575f9161157b575b5061156c57565b63d93c066560e01b5f5260045ffd5b61159d915060203d6020116115a3575b61159581836113c6565b810190611500565b5f611565565b503d61158b565b6040513d5f823e3d90fd5b60ff600254166115c157565b630d304b8160e31b5f5260045ffd5b6001600160801b0316806115e15750565b7f00000000000000000000000000000000000000000000000000000000000000009060209060646001600160a01b03611619856116aa565b6040516323b872dd60e01b81523360048201526001600160a01b0390961660248701526044860193909352849283915f91165af19081156115aa575f91611672575b501561166357565b6303a25d1960e31b5f5260045ffd5b61168b915060203d6020116115a35761159581836113c6565b5f61165b565b6001541561169b57565b631a2efd3560e31b5f5260045ffd5b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa9081156115aa575f916116e8575b506001600160a01b031690565b90506020813d602011611722575b81611703602093836113c6565b81010312610f0857516001600160a01b0381168103610f08575f6116db565b3d91506116f6565b6040519190601f01601f191682016001600160401b03811183821017610f0857604052565b903590601e1981360301821215610f0857018035906001600160401b038211610f0857602001918136038313610f0857565b356001600160e01b031981168103610f085790565b61179f816118f9565b156117a75750565b6117b360c08201611357565b611820575b7f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177361181b6117e860208401611343565b6117f5604085018561174f565b61180460608795939501611364565b9060405194859460018060a01b0316973585611398565b0390a2565b602081015f8061182f83611343565b8161183d604087018761174f565b9190826040519384928337810182815203926207a120f161185c611443565b501561186857506117b8565b6118927f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f891611343565b61189e60608401611364565b60408051943585526001600160801b0390911660208501526001600160a01b0390911692908190810161181b565b906001600160801b031690816118e3575050600190565b5f8080938193611388f16118f5611443565b5090565b611906604082018261174f565b90916001600160a01b038061191d60208401611343565b16149081611c9c575b5080611c93575b15611c8d5781358060f81c90600182101580611c82575b15611c7a5760f31c611fe016600181018310611c7a576001840135927f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093084141580611c50575b80611c26575b80611bfc575b80611bd2575b80611bbb575b80611b91575b80611b67575b80611b3d575b80611b13575b80611ae9575b80611abf575b80611a95575b80611a6b575b15611a62578190035f1901918260016119ea8261172a565b93870101833760218501359460418101359160018103611a115750505090919250a1600190565b60028103611a2257505050a2600190565b600381979593969497145f14611a3e57505090919293a3600190565b600414611a51575b505050505050600190565b6061013594a45f8080808080611a46565b50505050505f90565b507f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed8414156119d2565b507f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a8414156119cc565b507f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f38414156119c6565b507fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd657838414156119c0565b507f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c38414156119ba565b507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68414156119b4565b507f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f88414156119ae565b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738414156119a8565b505f516020611cbb5f395f51905f528414156119a2565b507f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620684141561199c565b507f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c4978841415611996565b507fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f841415611990565b507f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5484141561198a565b505050505f90565b506004821115611944565b50505f90565b5080151561192d565b6001600160801b0391506060611cb29101611364565b16155f61192656fe85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667","sourceMap":"2621:43439:161:-:0;;;;;;;;;-1:-1:-1;11086:69:161;;:::i;:::-;45008:9;:13;;:37;;;-1:-1:-1;45004:1048:161;;;45115:33;2621:43439;;;-1:-1:-1;;;;;45008:9:161;2621:43439;;;45115:33;2621:43439;45004:1048;2621:43439;45170:7;2621:43439;;;;45169:8;:35;;;45004:1048;45165:887;;;10002:67;;:::i;:::-;9797:5;2621:43439;9797:9;;;:38;;;45165:887;2621:43439;;;-1:-1:-1;;;;;45008:9:161;2621:43439;21724:6;;;:::i;:::-;9797:5;2621:43439;21945:154;;;;45020:1;21945:154;;;;;45020:1;21945:154;2621:43439;;;;;;;9797:5;2621:43439;9797:5;2621:43439;22131:70;2621:43439;;;;;;;;;;;;;;;;;;45020:1;2621:43439;;;;45020:1;2621:43439;;;;;;;;;;;;;;;;;;;;45693:88;45838:14;;21945:154;2621:43439;;;22160:10;;22131:70;;;;45020:1;45868:115;2621:43439;45020:1;45868:115;2621:43439;;;;45020:1;2621:43439;;;;;45020:1;2621:43439;;;;;45020:1;2621:43439;;45020:1;2621:43439;9797:38;-1:-1:-1;45170:7:161;2621:43439;-1:-1:-1;;;;;2621:43439:161;9810:10;:25;9797:38;;45165:887;46020:21;;;45020:1;46020:21;2621:43439;45020:1;46020:21;45169:35;2621:43439;45200:4;2621:43439;45181:23;;45169:35;;45008:37;2621:43439;;45025:20;45008:37;;2621:43439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3228:31;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;11086:69;;:::i;:::-;10567:6;2621:43439;;;;;;;22982:37;;22734:21;-1:-1:-1;;;;;2621:43439:161;;;;-1:-1:-1;;;;;2621:43439:161;22982:37;:::i;:::-;2621:43439;;;;;;-1:-1:-1;;;2621:43439:161;;;;;;-1:-1:-1;;;2621:43439:161;;;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;;;:::i;:::-;;;;;;;;;;;;11086:69;;:::i;:::-;10002:67;;:::i;:::-;2621:43439;-1:-1:-1;;;;;15575:14:161;15582:6;15575:14;:::i;:::-;2621:43439;15575:79;;;;;2621:43439;;15575:79;2621:43439;;;;;;;;;15575:79;;15597:10;2621:43439;15575:79;;2621:43439;15617:4;2621:43439;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15575:79;;;;2621:43439;15691:6;-1:-1:-1;;;;;;;;;;;15691:6:161;;2621:43439;15691:6;;:::i;:::-;2621:43439;;;;;15714:39;2621:43439;;15575:79;;15691:6;15575:79;;2621:43439;15575:79;;-1:-1:-1;;;;;;;;;;;15575:79:161;;:::i;:::-;;;;;;;;;2621:43439;;;;;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;10707:63;;:::i;:::-;17385:11;2621:43439;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;811:66:53;2621:43439:161;;-1:-1:-1;;;;;2621:43439:161;;811:66:53;;-1:-1:-1;;;;;;811:66:53;;;;;;;;;-1:-1:-1;;;811:66:53;;17385:11:161;811:66:53;-1:-1:-1;;;;;;811:66:53;;;;17835:30:161;17831:124;;2621:43439;;;17831:124;2621:43439;-1:-1:-1;;;;;;;;;;;2621:43439:161;;;;;;17886:58;2621:43439;;811:66:53;-1:-1:-1;;;811:66:53;;2621:43439:161;811:66:53;;2621:43439:161;-1:-1:-1;;;2621:43439:161;;;;;;-1:-1:-1;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:20;2621:43439;;;;;;;;;;;;;;;;;;;;4050:26;2621:43439;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;11086:69;;:::i;:::-;10002:67;;:::i;:::-;9008:83;;:::i;:::-;2621:43439;;;;;;14157:46;2621:43439;14192:10;14157:46;;2621:43439;;;-1:-1:-1;2621:43439:161;;-1:-1:-1;;2621:43439:161;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;13684:64;2621:43439;;;;;;:::i;:::-;11086:69;;;;;:::i;:::-;10002:67;;:::i;:::-;9008:83;;:::i;:::-;-1:-1:-1;;;;;13623:9:161;2621:43439;13661:6;;;;:::i;:::-;13684:64;2621:43439;;13719:10;;;;2621:43439;;;13684:64;;:::i;:::-;;;;2621:43439;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;-1:-1:-1;;;;;;;;;;;2621:43439:161;;;:::i;:::-;11086:69;;:::i;:::-;10002:67;;:::i;:::-;11558:5;;;:::i;:::-;-1:-1:-1;;;;;2621:43439:161;;;;;;14633:39;2621:43439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3668:18;2621:43439;;;;;;;;;;;-1:-1:-1;2621:43439:161;;-1:-1:-1;;2621:43439:161;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11086:69;;:::i;:::-;10002:67;;:::i;:::-;9797:5;2621:43439;9797:9;;;:38;;;2621:43439;;;;-1:-1:-1;;;;;21686:9:161;2621:43439;21724:6;;;;:::i;:::-;9797:5;2621:43439;21945:154;;;;;;;;;;;2621:43439;;;;;;;;;;;;;9797:5;22131:70;2621:43439;;9797:5;2621:43439;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;21945:154;2621:43439;;;22160:10;;22131:70;;;;2621:43439;;;;;;;-1:-1:-1;;;2621:43439:161;;;;;;;;;-1:-1:-1;;;2621:43439:161;;;;;9797:38;-1:-1:-1;9824:11:161;2621:43439;-1:-1:-1;;;;;2621:43439:161;9810:10;:25;9797:38;;2621:43439;;;;;;;;;;;;;3940:24;2621:43439;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;-1:-1:-1;2621:43439:161;;-1:-1:-1;;2621:43439:161;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;;10707:63;;:::i;:::-;18535:19;2621:43439;;;;18535:19;:::i;:::-;18566:4;-1:-1:-1;;;;;2621:43439:161;;;18535:36;2621:43439;;18875:38;;2621:43439;;18875:38;;:::i;:::-;18871:113;;2621:43439;;;19255:20;;2621:43439;-1:-1:-1;;2621:43439:161;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23823:35;2621:43439;;;;;;;;;23823:35;:::i;:::-;2621:43439;;;23934:3;2621:43439;;;;;;;23917:15;;;;;2621:43439;;;;;;;;;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;;;;-1:-1:-1;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;-1:-1:-1;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20173:273:171;2621:43439:161;;;;18875:38;2621:43439;;;;;;;20272:15:171;;2621:43439:161;;;;;;;;;;;;;;;20173:273:171;;;;;;2621:43439:161;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;20173:273:171;;;;;;;;;;:::i;:::-;2621:43439:161;20150:306:171;;4093:83:22;;;;2621:43439:161;;;;;;;;;;;18875:38;;2621:43439;;24626:7;2621:43439;;;;;;;;24626:7;:::i;:::-;2621:43439;23902:13;;;24552:162;39434:13;2621:43439;;;;;;;;39434:13;:::i;:::-;2621:43439;;;-1:-1:-1;;;;;;39485:26:161;2621:43439;;;;;;;;39485:26;:::i;:::-;2621:43439;39485:29;2621:43439;;;39485:34;39534:20;;2621:43439;39569:433;;;;;2621:43439;;;39617:16;2621:43439;;;;;;;;;;;;;;;;;;;;;;39617:16;:::i;:::-;2621:43439;;;:::i;:::-;;-1:-1:-1;;;;;40081:14:161;2621:43439;;;40034:20;2621:43439;;;;;;;;40034:20;:::i;:::-;2621:43439;;;;;;;40081:14;:::i;:::-;2621:43439;;40034:71;;;;;40065:7;40034:71;;;:::i;:::-;;40124:8;40120:513;;39569:433;39430:1562;24552:162;;40120:513;40175:52;40190:20;2621:43439;;;;;;;;40190:20;:::i;:::-;40212:14;2621:43439;;;;;;;;40212:14;:::i;:::-;40175:52;;:::i;:::-;40249:16;40245:125;;40120:513;40533:85;2621:43439;40549:14;2621:43439;;;;;;;;40549:14;:::i;:::-;18875:38;2621:43439;-1:-1:-1;;;;;;40591:26:161;2621:43439;;;;;;;;40591:26;:::i;:::-;2621:43439;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;40533:85;40120:513;;;40245:125;40294:57;40314:20;2621:43439;;;;;;;;40314:20;:::i;:::-;40336:14;2621:43439;;;;;;;;40336:14;:::i;:::-;2621:43439;;;-1:-1:-1;;;;;2621:43439:161;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;40294:57;40245:125;;39569:433;2621:43439;;;;39834:153;;2621:43439;39925:16;2621:43439;;;;;;;;;;;;39925:16;:::i;:::-;39943:26;2621:43439;;;;;;;;39943:26;:::i;:::-;2621:43439;;;;;39878:32;;;;;;39834:153;;;;2621:43439;;;;;;;39834:153;;;2621:43439;;;;;;;;;;:::i;:::-;;;;;;;;;;39834:153;2621:43439;;39834:153;;;;;;:::i;:::-;39569:433;;39430:1562;40686:52;40701:20;2621:43439;;;;;;;;40701:20;:::i;40686:52::-;40756:16;40752:117;;39430:1562;40888:93;40894:16;2621:43439;;;;;;;;;;;;40894:16;:::i;:::-;40912:14;2621:43439;;;;;;;;40912:14;:::i;:::-;18875:38;2621:43439;-1:-1:-1;;;;;;40954:26:161;2621:43439;;;;;;;;40954:26;:::i;:::-;2621:43439;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40888:93;;;24552:162;;40752:117;40797:57;40817:20;2621:43439;;;;;;;;40817:20;:::i;:::-;40839:14;2621:43439;;;;;;;;40839:14;:::i;:::-;2621:43439;;;-1:-1:-1;;;;;2621:43439:161;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;40797:57;40752:117;;2621:43439;;;;;;;;;;;;;;;;23917:15;;;;2621:43439;23917:15;2621:43439;;;;;;;1083:131:25;;2621:43439:161;19541:23;2621:43439;;19541:23;2621:43439;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41765:33;;;;;;;:::i;:::-;41808:18;2621:43439;41842:13;2621:43439;41837:628;41872:3;41857:13;;;;;;42005:17;2621:43439;;;;;;;;;;;;;;42212:46;42227:17;2621:43439;;;;;42005:17;;;2621:43439;;42005:17;;;;;:::i;:::-;42024:11;;;;;;:::i;:::-;2621:43439;;20811:50:171;;;;2621:43439:161;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;20811:50:171;;;;;;:::i;:::-;2621:43439:161;20801:61:171;;4093:83:22;;;2621:43439:161;42227:17;;:::i;:::-;42246:11;;;:::i;42212:46::-;42246:11;;;42338;42308:42;42338:11;;:::i;:::-;2621:43439;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;42308:42;42272:183;2621:43439;41842:13;;;;;;42272:183;42428:11;42394:46;42428:11;;:::i;:::-;2621:43439;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;42394:46;42272:183;;41857:13;;;1083:131:25;2621:43439:161;;;;19793:18;;;;;:::i;:::-;;;;2621:43439;;;;19841:21;20811:50:171;2621:43439:161;;19841:21;;:::i;:::-;10002:67;;;:::i;:::-;42959:13;2621:43439;;-1:-1:-1;;;;;;2621:43439:161;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;-1:-1:-1;;2621:43439:161;22734:21;-1:-1:-1;;;;;2621:43439:161;;22982:37;;2621:43439;;;-1:-1:-1;;;;;2621:43439:161;22982:37;:::i;:::-;43183:8;43179:231;;19789:183;;;;2621:43439;;20226:24;2621:43439;;20226:24;2621:43439;20213:37;;;;;20209:110;;19789:183;2621:43439;;20703:18;20632:19;2621:43439;;;;20632:19;:::i;:::-;20703:18;;:::i;:::-;20735:21;20811:50:171;2621:43439:161;;20735:21;;:::i;:::-;20770:26;;2621:43439;;20770:26;;:::i;:::-;2621:43439;20810:38;18875;2621:43439;;18875:38;20810;:::i;:::-;2621:43439;;;21723:279:171;;;;2621:43439:161;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;;;;;;;;;21723:279:171;;;;;;:::i;:::-;2621:43439:161;21700:312:171;;2621:43439:161;;;;;;20209:110;2621:43439;43770:23;2621:43439;;;;;;43770:23;20209:110;;;;43179:231;2621:43439;;;-1:-1:-1;;;;;2621:43439:161;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;43344:55;;;43179:231;;;;19789:183;2621:43439;-1:-1:-1;;;;;19902:21:161;2621:43439;;20811:50:171;19902:21:161;;:::i;:::-;2621:43439;;;;19789:183;;;2621:43439;;;;;;;;;18871:113;18946:26;;;2621:43439;;18946:26;;:::i;:::-;;:::i;:::-;18871:113;;2621:43439;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;:::o;:::-;;-1:-1:-1;;;;;2621:43439:161;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;2621:43439:161;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;2621:43439:161;;;;;;;;-1:-1:-1;;2621:43439:161;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;:::o;10862:102::-;10931:6;-1:-1:-1;;;;;2621:43439:161;10917:10;:20;2621:43439;;10862:102::o;2621:43439::-;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;-1:-1:-1;;2621:43439:161;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2621:43439:161;;;;:::o;:::-;;;:::o;12058:215::-;-1:-1:-1;;;;;2621:43439:161;12122:10;12118:149;;12058:215;:::o;12118:149::-;12131:1;12166:6;;;;;:29;;;;:::i;:::-;;2621:43439;;;12058:215::o;2621:43439::-;;;;12131:1;2621:43439;;12131:1;2621:43439;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2621:43439:161;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;11247:108::-;2621:43439;;-1:-1:-1;;;11306:24:161;;;2621:43439;11306:24;2621:43439;11314:6;-1:-1:-1;;;;;2621:43439:161;11306:24;;;;;;;-1:-1:-1;11306:24:161;;;11247:108;11305:25;2621:43439;;11247:108::o;2621:43439::-;;;;-1:-1:-1;2621:43439:161;11306:24;-1:-1:-1;2621:43439:161;11306:24;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2621:43439;;;;;;;;;10156:89;2621:43439;10214:6;2621:43439;;;;10156:89::o;2621:43439::-;;;;-1:-1:-1;2621:43439:161;;-1:-1:-1;2621:43439:161;11691:228;-1:-1:-1;;;;;2621:43439:161;11754:10;11750:163;;11691:228;:::o;11750:163::-;11802:6;;2621:43439;;11795:54;-1:-1:-1;;;;;11795:14:161;11802:6;11795:14;:::i;:::-;2621:43439;;-1:-1:-1;;;11795:54:161;;11823:10;11795:54;;;2621:43439;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;;;;;11763:1;;2621:43439;11795:54;;;;;;;11763:1;11795:54;;;11750:163;2621:43439;;;;11691:228::o;2621:43439::-;;;;11763:1;2621:43439;11795:54;11763:1;2621:43439;11795:54;;;;2621:43439;11795:54;2621:43439;11795:54;;;;;;;:::i;:::-;;;;9197:107;9262:5;2621:43439;9262:9;2621:43439;;9197:107::o;2621:43439::-;;;;-1:-1:-1;2621:43439:161;;-1:-1:-1;2621:43439:161;43974:182;2621:43439;;-1:-1:-1;;;44076:33:161;;2621:43439;44076:33;;2621:43439;;44076:33;;2621:43439;;-1:-1:-1;;;;;2621:43439:161;44076:33;;;;;;;-1:-1:-1;44076:33:161;;;43974:182;-1:-1:-1;;;;;;2621:43439:161;;43974:182::o;44076:33::-;;;;;;;;;;;;;;;;;:::i;:::-;;;2621:43439;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;44076:33;;;;;;-1:-1:-1;44076:33:161;;863:809:22;1052:614;;;863:809;1052:614;;-1:-1:-1;;1052:614:22;;;-1:-1:-1;;;;;1052:614:22;;;;;;;;;;863:809::o;2621:43439:161:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;2621:43439:161;;;;;;;:::o;25337:1125::-;25595:36;;;:::i;:::-;25594:37;25590:866;;25337:1125;:::o;25590:866::-;25901:13;;;;;:::i;:::-;25897:453;;25590:866;26369:76;;26390:20;;;;;:::i;:::-;26412:16;;;;;;:::i;:::-;26430:14;;;;;;;;:::i;:::-;2621:43439;26412:16;2621:43439;;;;;;;;;;;;26369:76;;:::i;:::-;;;;25337:1125::o;25897:453::-;25952:20;;;-1:-1:-1;25952:20:161;;;;:::i;:::-;25992:16;;;;;;;:::i;:::-;2621:43439;;;25992:16;2621:43439;;;;;;;;;;;25952:57;;25983:7;25952:57;;;:::i;:::-;;26032:8;26028:308;;25897:453;;;26028:308;26252:20;26221:68;26252:20;;:::i;:::-;26274:14;;;;;:::i;:::-;25992:16;2621:43439;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;-1:-1:-1;;;;;2621:43439:161;;;;;;;;;26221:68;2621:43439;44398:253;;-1:-1:-1;;;;;2621:43439:161;44495:10;;44491:133;;44633:11;;44640:4;44398:253;:::o;44491:133::-;2621:43439;44539:46;;;;;44561:5;44539:46;;;:::i;:::-;;44599:14;:::o;29541:3845::-;29680:16;;;;;;:::i;:::-;2621:43439;;-1:-1:-1;;;;;2621:43439:161;29713:20;;;;;:::i;:::-;2621:43439;29713:38;:61;;;;29541:3845;29713:83;;;;29541:3845;29711:86;29707:129;;29876:249;;;;;30141:17;30157:1;30141:17;;;:38;;;29541:3845;30139:41;30135:84;;2943:42;;;;30157:1;2621:43439;;30360:37;;30354:83;;30157:1;30556:95;;;31222:31;31232:21;31222:31;;;:90;;;29541:3845;31222:147;;;29541:3845;31222:204;;;29541:3845;31222:265;;;29541:3845;31222:331;;;29541:3845;31222:373;;;29541:3845;31222:425;;;29541:3845;31222:465;;;29541:3845;31222:515;;;29541:3845;31222:562;;;29541:3845;31222:633;;;29541:3845;31222:687;;;29541:3845;31222:738;;;29541:3845;31207:763;31203:806;;2943:42;;;-1:-1:-1;;2943:42:161;;;30157:1;32179:21;2943:42;32179:21;:::i;:::-;32210:117;;;;;;32546:216;;;;;;;;;;30157:1;32776:17;;30157:1;;32809:83;;;;;;;;30157:1;29541:3845;:::o;32772:586::-;32928:1;32912:17;;32928:1;;32945:91;;;;30157:1;29541:3845;:::o;32908:450::-;33072:1;33056:17;;;;;;;;33052:306;33072:1;;;33089:99;;;;;;;30157:1;29541:3845;:::o;33052:306::-;33224:1;33208:17;33204:154;;33052:306;;;;;;;30157:1;29541:3845;:::o;33204:154::-;32546:216;;;33241:107;;33204:154;;;;;;;;31203:806;31986:12;;;;;2621:43439;31986:12;:::o;31222:738::-;31925:35;31935:25;31925:35;;;31222:738;;:687;31871:38;31881:28;31871:38;;;31222:687;;:633;31800:55;31810:45;31800:55;;;31222:633;;:562;31753:31;31763:21;31753:31;;;31222:562;;:515;31703:34;31713:24;31703:34;;;31222:515;;:465;31663:24;31673:14;31663:24;;;31222:465;;:425;31611:36;31621:26;31611:36;;;31222:425;;:373;31569:26;31579:16;31569:26;;;31222:373;;:331;31503:50;-1:-1:-1;;;;;;;;;;;31503:50:161;;;31222:331;;:265;31442:45;31452:35;31442:45;;;31222:265;;:204;31385:41;31395:31;31385:41;;;31222:204;;:147;31328:41;31338:31;31328:41;;;31222:147;;:90;31269:43;31279:33;31269:43;;;31222:90;;30354:83;30414:12;;;;2621:43439;30414:12;:::o;30141:38::-;30162:17;30178:1;30162:17;;;30141:38;;29707:129;29813:12;;2621:43439;29813:12;:::o;29713:83::-;29778:18;;;;29713:83;;:61;-1:-1:-1;;;;;29755:14:161;;;;;;;:::i;:::-;2621:43439;29755:19;29713:61;;","linkReferences":{},"immutableReferences":{"77303":[{"start":569,"length":32},{"start":797,"length":32},{"start":5097,"length":32},{"start":5258,"length":32},{"start":5421,"length":32},{"start":5603,"length":32}]}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","executableBalanceTopUp(uint128)":"704ed542","executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)":"c6049692","exited()":"5ce6c327","inheritor()":"36a52a18","initialize(address,address,bool,uint128)":"bfa28576","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))":"084f443a","router()":"f887ea40","sendMessage(bytes,bool)":"42129d00","sendReply(bytes32,bytes)":"7a8e0cdd","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AbiInterfaceAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EtherTransferToRouterFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InheritorMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitMessageNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitMessageNotCreatedAndCallerNotInitializer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitializerAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidActorId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFallbackCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IsSmallAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProgramExited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProgramNotExited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferLockedValueToInheritorExternalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WVaraTransferFailed\",\"type\":\"error\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic0\",\"type\":\"uint256\"}],\"name\":\"DebugEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageCallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"callReply\",\"type\":\"bool\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"OwnedBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"ReplyCallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyTransferFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"TransferLockedValueToInheritorFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"executableBalanceTopUpWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exited\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isSmall\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"exited\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"valueToReceiveNegativeSign\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"call\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"transitionHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_callReply\",\"type\":\"bool\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Mirror smart contract is responsible for storing the minimal state of programs on our platform and transitioning from one state to another by calling `performStateTransition(...)`. It's built on actor-model architecture, and in Ethereum, we implement this through \\\"request-response\\\" model. This means we have two types of events: - \\\"Requested\\\" events - when user calls one of the methods marked as \\\"Primary Gear logic\\\" we emit such an event, and all our nodes process it off-chain - \\\"Responded\\\" events - when we receive response from our nodes and transmit it back to Ethereum. All logic called within `performStateTransition(...)` and leading to methods marked as \\\"Private calls related to performStateTransition\\\" are such events. It's important not to confuse these two, as this is how we implement the actor model in Ethereum. Mirror economic model has two balances: - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`. This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`. - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain. It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform. You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users can use it for free. This is called the \\\"reverse-gas model\\\". Developer can also require the presence of `value` in the owned balance when calling methods in a WASM smart contract to protect their program from spam.\",\"errors\":{\"CallerNotRouter()\":[{\"details\":\"Thrown when the caller is not the `Router`.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the `Router` contract is paused and pause-protected Mirror call is attempted.\"}],\"EtherTransferToRouterFailed()\":[{\"details\":\"Thrown when the transfer of Ether to the `Router` fails.\"}],\"InitMessageNotCreated()\":[{\"details\":\"Thrown when the first (init) message is not created by the initializer.\"}],\"InitMessageNotCreatedAndCallerNotInitializer()\":[{\"details\":\"Thrown when the first (init) message is not created and the caller is not the initializer.\"}],\"ProgramExited()\":[{\"details\":\"Thrown when the program is exited and the call is attempted.\"}],\"ProgramNotExited()\":[{\"details\":\"Thrown when the program is not exited and the call is attempted.\"}],\"TransferLockedValueToInheritorExternalFailed()\":[{\"details\":\"Thrown when the transfer of locked value to the inheritor fails (in external call).\"}],\"WVaraTransferFailed()\":[{\"details\":\"Thrown when the transfer of Vara to the `Router` fails.\"}]},\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens.\",\"params\":{\"value\":\"The amount of tokens the user wants to top up. NOTE: It's event for NODES: it requires to top up balance of the program.\"}},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message.\",\"params\":{\"destination\":\"Message destination address.\",\"id\":\"Message ID.\",\"payload\":\"Message payload.\",\"value\":\"Message value. NOTE: It's event for USERS: it informs about new message sent from program.\"}},\"MessageCallFailed(bytes32,address,uint128)\":{\"details\":\"Emitted when the program fails to call outgoing message to other contracts.\",\"params\":{\"destination\":\"Message destination address.\",\"id\":\"Message ID.\",\"value\":\"Message value. NOTE: It's event for USERS: it informs about failed message call from program.\"}},\"MessageQueueingRequested(bytes32,address,bytes,uint128,bool)\":{\"details\":\"Emitted when a new message is sent to be queued.\",\"params\":{\"callReply\":\"Indicates whether the message is sent with callReply flag. NOTE: It's event for NODES: it requires to insert message in the program's queue.\",\"id\":\"Message ID.\",\"payload\":\"Message payload.\",\"source\":\"Message source address.\",\"value\":\"Message value.\"}},\"OwnedBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's owned balance top up with his Ether.\",\"params\":{\"value\":\"The amount of Ether the user wants to top up. NOTE: It's event for NODES: it requires to top up balance of the program (in Ether).\"}},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message.\",\"params\":{\"payload\":\"Reply message payload.\",\"replyCode\":\"The code of the reply, which can be used to identify the type of reply. NOTE: It's event for USERS: it informs about new reply sent from program.\",\"replyTo\":\"The ID of the message being replied to.\",\"value\":\"Reply message value.\"}},\"ReplyCallFailed(uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program fails to call reply message to other contracts.\",\"params\":{\"replyCode\":\"The code of the reply, which can be used to identify the type of reply. NOTE: It's event for USERS: it informs about failed reply call from program.\",\"replyTo\":\"The ID of the message being replied to.\",\"value\":\"Reply message value.\"}},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued.\",\"params\":{\"payload\":\"The payload of the reply.\",\"repliedTo\":\"The ID of the message being replied to.\",\"source\":\"The address of the reply sender.\",\"value\":\"The value of the reply. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"}},\"ReplyTransferFailed(address,uint128)\":{\"details\":\"Emitted when the program fails to transfer value to destination after failed call\",\"params\":{\"destination\":\"The address of the destination.\",\"value\":\"The amount of value that failed to transfer. NOTE: It's event for USERS: it informs about failed transfer of value to destination after failed call.\"}},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed.\",\"params\":{\"stateHash\":\"The new state hash of the program. NOTE: It's event for USERS: it informs about state changes.\"}},\"TransferLockedValueToInheritorFailed(address,uint128)\":{\"details\":\"Emitted when the program fails to transfer locked value to inheritor after exit.\",\"params\":{\"inheritor\":\"The address of the inheritor.\",\"value\":\"The amount of locked value that failed to transfer. NOTE: It's event for USERS: it informs about failed transfer of locked value to inheritor after exit.\"}},\"ValueClaimFailed(bytes32,uint128)\":{\"details\":\"Emitted when a user fails in claiming value request and doesn't receive balance.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"value\":\"The amount of value that failed to claim. NOTE: It's event for USERS: it informs about failed value claim.\"}},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"value\":\"The amount of value claimed. NOTE: It's event for USERS: it informs about value claimed.\"}},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"source\":\"The address of the claim sender. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}}},\"kind\":\"dev\",\"methods\":{\"claimValue(bytes32)\":{\"details\":\"Claim value from message in mailbox. As result of execution, the `ValueClaimingRequested` event will be emitted.\",\"params\":{\"_claimedId\":\"Message ID of the value to be claimed.\"}},\"constructor\":{\"details\":\"Minimal constructor that only sets the immutable `Router` address.\",\"params\":{\"_router\":\"The address of the `Router` contract.\"}},\"executableBalanceTopUp(uint128)\":{\"details\":\"Tops up the executable balance of the program. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\",\"params\":{\"_value\":\"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\"}},\"executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Tops up the executable balance of the program. Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` using permit signature, which can save one transaction for user. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\",\"params\":{\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_v\":\"ECDSA signature parameter.\",\"_value\":\"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\"}},\"initialize(address,address,bool,uint128)\":{\"details\":\"Initializes the contract with the given parameters. Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, so we do the initialization separately after creating `Mirror` in this method.\",\"params\":{\"_abiInterface\":\"The address of the ABI interface. This address will be displayed as \\\"proxy implementation\\\" and is necessary to show the available methods of `Mirror` smart contract on Etherscan. In case it is a Sails framework smart contract, the user can set his own ABI.\",\"_initialExecutableBalance\":\"The initial executable balance to be transferred to the program.\",\"_initializer\":\"The address of the initializer. Only this address will be able to send the first (init) message.\",\"_isSmall\":\"The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details.\"}},\"performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))\":{\"details\":\"Performs state transition for the `Mirror` contract.\",\"params\":{\"_transition\":\"The state transition data.\"},\"returns\":{\"transitionHash\":\"The hash of the performed state transition.\"}},\"sendMessage(bytes,bool)\":{\"details\":\"Sends message to the program. As result of execution, the `MessageQueueingRequested` event will be emitted.\",\"params\":{\"_callReply\":\"Whether to set `call` flag in the reply message.\",\"_payload\":\"The payload of the message.\"},\"returns\":{\"messageId\":\"Message ID of the sent message.\"}},\"sendReply(bytes32,bytes)\":{\"details\":\"Sends reply message to the program. Note that this function does not return `bytes32 messageId` of the sent message, if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` or use SDK in `ethexe/sdk/src/mirror.rs`. As result of execution, the `ReplyQueueingRequested` event will be emitted.\",\"params\":{\"_payload\":\"The payload of the reply message.\",\"_repliedTo\":\"Message ID to which the reply is sent.\"}},\"transferLockedValueToInheritor()\":{\"details\":\"Transfers locked value to the inheritor. Note that this function can be called only after program exited. As result of execution, the `LockedValueTransferRequested` event will be emitted.\"}},\"stateVariables\":{\"ETH_EVENT_ADDR\":{\"details\":\"Special address to which Sails contract sends messages so that Mirror can decode events and re-remit then as Solidity events: - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs\"},\"exited\":{\"details\":\"The bool flag indicates whether the program is exited.\"},\"inheritor\":{\"details\":\"The address of the inheritor, which is set by the program on exit. Inheritor specifies the address to which all available program value should be transferred.\"},\"initializer\":{\"details\":\"The address eligible to send first (init) message.\"},\"isSmall\":{\"details\":\"Flag that indicates what type this `Mirror` smart contract is: - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation (which is usually more expensive in terms of gas to create). This is generally the more popular way and is the one you will most likely use if you are writing programs using the Sails framework. This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`. User writes WASM smart contract on Sails framework called \\\"\\u0421ounter\\\": - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)` and waits for the code to be validated. User also generates \\\"Solidity ABI Interface\\\" to allow incrementing counter or calling other methods within WASM smart contract. Next, we assume user uploads `CounterAbi` smart contract to Ethereum: ```solidity interface ICounter { function init(bool _callReply, uint32 counter) external returns (bytes32 messageId); function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId); // ... other methods } contract CounterAbi is ICounter { function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {} function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {} } ``` User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`, where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as \\\"proxy implementation\\\", and Etherscan will think that `Mirror` has `CounterAbi` methods. User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract: `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror` to create new message and pass the Solidity call to the WASM smart contract on the Sails framework. WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`. - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation (which is usually less expensive in terms of gas to create). This case is suitable if the user develops WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`.\"},\"nonce\":{\"details\":\"Source for message ids unique generation. In-fact represents amount of messages received from Ethereum. Zeroed nonce is always represent init message.\"},\"router\":{\"details\":\"Address of the `Router` contract, which is the sole authority to modify the state of this contract and transfer funds from it. forge-lint: disable-next-item(screaming-snake-case-immutable)\"},\"stateHash\":{\"details\":\"Program's current state hash.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/ICallbacks.sol\":{\"keccak256\":\"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf\",\"dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x0a334bf18c55b6667d5e2921ad9153e831df64ed7332d2967e7e4a37f64de933\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://b04ea446802c4c48a538b945f1a90c2ac9649bdce2e8e7b571497ec2aecb6bfc\",\"dweb:/ipfs/Qmdqr2EjwXCSQs3xeTiwSxf8P1M3GZp6xeZTiQQZbtNErn\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AbiInterfaceAlreadySet"},{"inputs":[],"type":"error","name":"CallerNotRouter"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"EtherTransferToRouterFailed"},{"inputs":[],"type":"error","name":"InheritorMustBeZero"},{"inputs":[],"type":"error","name":"InitMessageNotCreated"},{"inputs":[],"type":"error","name":"InitMessageNotCreatedAndCallerNotInitializer"},{"inputs":[],"type":"error","name":"InitializerAlreadySet"},{"inputs":[],"type":"error","name":"InvalidActorId"},{"inputs":[],"type":"error","name":"InvalidFallbackCall"},{"inputs":[],"type":"error","name":"IsSmallAlreadySet"},{"inputs":[],"type":"error","name":"ProgramExited"},{"inputs":[],"type":"error","name":"ProgramNotExited"},{"inputs":[],"type":"error","name":"TransferLockedValueToInheritorExternalFailed"},{"inputs":[],"type":"error","name":"WVaraTransferFailed"},{"inputs":[{"internalType":"uint256","name":"topic0","type":"uint256","indexed":true}],"type":"event","name":"DebugEvent","anonymous":true},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageCallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bool","name":"callReply","type":"bool","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"OwnedBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"ReplyCallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"destination","type":"address","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyTransferFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"inheritor","type":"address","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"TransferLockedValueToInheritorFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUpWithPermit"},{"inputs":[],"stateMutability":"view","type":"function","name":"exited","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"},{"internalType":"bool","name":"_isSmall","type":"bool"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bool","name":"exited","type":"bool"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"bool","name":"valueToReceiveNegativeSign","type":"bool"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]},{"internalType":"bool","name":"call","type":"bool"}]}]}],"stateMutability":"payable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"transitionHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"bool","name":"_callReply","type":"bool"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"devdoc":{"kind":"dev","methods":{"claimValue(bytes32)":{"details":"Claim value from message in mailbox. As result of execution, the `ValueClaimingRequested` event will be emitted.","params":{"_claimedId":"Message ID of the value to be claimed."}},"constructor":{"details":"Minimal constructor that only sets the immutable `Router` address.","params":{"_router":"The address of the `Router` contract."}},"executableBalanceTopUp(uint128)":{"details":"Tops up the executable balance of the program. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.","params":{"_value":"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."}},"executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)":{"details":"Tops up the executable balance of the program. Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` using permit signature, which can save one transaction for user. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.","params":{"_deadline":"Deadline for the transaction to be executed.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_v":"ECDSA signature parameter.","_value":"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."}},"initialize(address,address,bool,uint128)":{"details":"Initializes the contract with the given parameters. Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, so we do the initialization separately after creating `Mirror` in this method.","params":{"_abiInterface":"The address of the ABI interface. This address will be displayed as \"proxy implementation\" and is necessary to show the available methods of `Mirror` smart contract on Etherscan. In case it is a Sails framework smart contract, the user can set his own ABI.","_initialExecutableBalance":"The initial executable balance to be transferred to the program.","_initializer":"The address of the initializer. Only this address will be able to send the first (init) message.","_isSmall":"The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details."}},"performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))":{"details":"Performs state transition for the `Mirror` contract.","params":{"_transition":"The state transition data."},"returns":{"transitionHash":"The hash of the performed state transition."}},"sendMessage(bytes,bool)":{"details":"Sends message to the program. As result of execution, the `MessageQueueingRequested` event will be emitted.","params":{"_callReply":"Whether to set `call` flag in the reply message.","_payload":"The payload of the message."},"returns":{"messageId":"Message ID of the sent message."}},"sendReply(bytes32,bytes)":{"details":"Sends reply message to the program. Note that this function does not return `bytes32 messageId` of the sent message, if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` or use SDK in `ethexe/sdk/src/mirror.rs`. As result of execution, the `ReplyQueueingRequested` event will be emitted.","params":{"_payload":"The payload of the reply message.","_repliedTo":"Message ID to which the reply is sent."}},"transferLockedValueToInheritor()":{"details":"Transfers locked value to the inheritor. Note that this function can be called only after program exited. As result of execution, the `LockedValueTransferRequested` event will be emitted."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/ICallbacks.sol":{"keccak256":"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0","urls":["bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf","dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/Mirror.sol":{"keccak256":"0x0a334bf18c55b6667d5e2921ad9153e831df64ed7332d2967e7e4a37f64de933","urls":["bzz-raw://b04ea446802c4c48a538b945f1a90c2ac9649bdce2e8e7b571497ec2aecb6bfc","dweb:/ipfs/Qmdqr2EjwXCSQs3xeTiwSxf8P1M3GZp6xeZTiQQZbtNErn"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":77306,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":77309,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":77312,"contract":"src/Mirror.sol:Mirror","label":"exited","offset":0,"slot":"2","type":"t_bool"},{"astId":77315,"contract":"src/Mirror.sol:Mirror","label":"inheritor","offset":1,"slot":"2","type":"t_address"},{"astId":77318,"contract":"src/Mirror.sol:Mirror","label":"initializer","offset":0,"slot":"3","type":"t_address"},{"astId":77321,"contract":"src/Mirror.sol:Mirror","label":"isSmall","offset":20,"slot":"3","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":78770,"exportedSymbols":{"ERC1967Utils":[45701],"Gear":[88588],"Hashes":[41483],"ICallbacks":[73742],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001],"Memory":[41257],"Mirror":[78769],"StorageSlot":[49089]},"nodeType":"SourceUnit","src":"74:45987:161","nodes":[{"id":77275,"nodeType":"PragmaDirective","src":"74:24:161","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":77277,"nodeType":"ImportDirective","src":"100:84:161","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":45702,"symbolAliases":[{"foreign":{"id":77276,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"108:12:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77279,"nodeType":"ImportDirective","src":"185:74:161","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":77278,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"193:11:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77281,"nodeType":"ImportDirective","src":"260:60:161","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/Memory.sol","file":"frost-secp256k1-evm/utils/Memory.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":77280,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"268:6:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77283,"nodeType":"ImportDirective","src":"321:73:161","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":77282,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"329:6:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77285,"nodeType":"ImportDirective","src":"395:46:161","nodes":[],"absolutePath":"src/ICallbacks.sol","file":"src/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":73743,"symbolAliases":[{"foreign":{"id":77284,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73742,"src":"403:10:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77287,"nodeType":"ImportDirective","src":"442:40:161","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":77286,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"450:7:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77289,"nodeType":"ImportDirective","src":"483:40:161","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":77288,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"491:7:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77291,"nodeType":"ImportDirective","src":"524:50:161","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":77290,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"532:12:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":77293,"nodeType":"ImportDirective","src":"575:44:161","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":78770,"sourceUnit":88589,"symbolAliases":[{"foreign":{"id":77292,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"583:4:161","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78769,"nodeType":"ContractDefinition","src":"2621:43439:161","nodes":[{"id":77300,"nodeType":"VariableDeclaration","src":"2900:85:161","nodes":[],"constant":true,"documentation":{"id":77297,"nodeType":"StructuredDocumentation","src":"2654:241:161","text":" @dev Special address to which Sails contract sends messages so that Mirror can decode events\n and re-remit then as Solidity events:\n - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs"},"mutability":"constant","name":"ETH_EVENT_ADDR","nameLocation":"2926:14:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77298,"name":"address","nodeType":"ElementaryTypeName","src":"2900:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307846466646664666664646666666464666464666464646464666664646466666666646664646466646","id":77299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2943:42:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF"},"visibility":"internal"},{"id":77303,"nodeType":"VariableDeclaration","src":"3228:31:161","nodes":[],"baseFunctions":[74295],"constant":false,"documentation":{"id":77301,"nodeType":"StructuredDocumentation","src":"2992:231:161","text":" @dev Address of the `Router` contract, which is the sole authority\n to modify the state of this contract and transfer funds from it.\n forge-lint: disable-next-item(screaming-snake-case-immutable)"},"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"3253:6:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77302,"name":"address","nodeType":"ElementaryTypeName","src":"3228:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":77306,"nodeType":"VariableDeclaration","src":"3324:24:161","nodes":[],"baseFunctions":[74301],"constant":false,"documentation":{"id":77304,"nodeType":"StructuredDocumentation","src":"3266:53:161","text":" @dev Program's current state hash."},"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"3339:9:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3324:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":77309,"nodeType":"VariableDeclaration","src":"3558:20:161","nodes":[],"baseFunctions":[74307],"constant":false,"documentation":{"id":77307,"nodeType":"StructuredDocumentation","src":"3355:198:161","text":" @dev Source for message ids unique generation.\n In-fact represents amount of messages received from Ethereum.\n Zeroed nonce is always represent init message."},"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"3573:5:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77308,"name":"uint256","nodeType":"ElementaryTypeName","src":"3558:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":77312,"nodeType":"VariableDeclaration","src":"3668:18:161","nodes":[],"baseFunctions":[74313],"constant":false,"documentation":{"id":77310,"nodeType":"StructuredDocumentation","src":"3585:78:161","text":" @dev The bool flag indicates whether the program is exited."},"functionSelector":"5ce6c327","mutability":"mutable","name":"exited","nameLocation":"3680:6:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77311,"name":"bool","nodeType":"ElementaryTypeName","src":"3668:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":77315,"nodeType":"VariableDeclaration","src":"3940:24:161","nodes":[],"baseFunctions":[74319],"constant":false,"documentation":{"id":77313,"nodeType":"StructuredDocumentation","src":"3741:194:161","text":" @dev The address of the inheritor, which is set by the program on exit.\n Inheritor specifies the address to which all available program value should be transferred."},"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"3955:9:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77314,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":77318,"nodeType":"VariableDeclaration","src":"4050:26:161","nodes":[],"baseFunctions":[74325],"constant":false,"documentation":{"id":77316,"nodeType":"StructuredDocumentation","src":"3971:74:161","text":" @dev The address eligible to send first (init) message."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"4065:11:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77317,"name":"address","nodeType":"ElementaryTypeName","src":"4050:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":77321,"nodeType":"VariableDeclaration","src":"7411:12:161","nodes":[],"constant":false,"documentation":{"id":77319,"nodeType":"StructuredDocumentation","src":"4083:3323:161","text":" @dev Flag that indicates what type this `Mirror` smart contract is:\n - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation\n (which is usually more expensive in terms of gas to create). This is generally the\n more popular way and is the one you will most likely use if you are writing programs using the Sails framework.\n This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and\n new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`.\n User writes WASM smart contract on Sails framework called \"Сounter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)`\n and waits for the code to be validated.\n User also generates \"Solidity ABI Interface\" to allow incrementing counter or calling other methods within WASM smart contract.\n Next, we assume user uploads `CounterAbi` smart contract to Ethereum:\n ```solidity\n interface ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId);\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId);\n // ... other methods\n }\n contract CounterAbi is ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {}\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {}\n }\n ```\n User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`,\n where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as \"proxy implementation\",\n and Etherscan will think that `Mirror` has `CounterAbi` methods.\n User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract:\n `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call\n and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror`\n to create new message and pass the Solidity call to the WASM smart contract on the Sails framework.\n WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`.\n - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation\n (which is usually less expensive in terms of gas to create). This case is suitable if the user develops\n WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors\n (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`."},"mutability":"mutable","name":"isSmall","nameLocation":"7416:7:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77320,"name":"bool","nodeType":"ElementaryTypeName","src":"7411:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"id":77324,"nodeType":"VariableDeclaration","src":"7430:77:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID","nameLocation":"7456:47:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77322,"name":"uint256","nodeType":"ElementaryTypeName","src":"7430:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":77323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":77327,"nodeType":"VariableDeclaration","src":"7513:76:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID","nameLocation":"7539:46:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77325,"name":"uint256","nodeType":"ElementaryTypeName","src":"7513:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":77326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7588:1:161","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":77330,"nodeType":"VariableDeclaration","src":"7596:76:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER","nameLocation":"7622:46:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77328,"name":"uint256","nodeType":"ElementaryTypeName","src":"7596:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":77329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7671:1:161","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":77333,"nodeType":"VariableDeclaration","src":"7678:75:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER","nameLocation":"7704:45:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77331,"name":"uint256","nodeType":"ElementaryTypeName","src":"7678:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":77332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7752:1:161","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"id":77336,"nodeType":"VariableDeclaration","src":"7760:75:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES","nameLocation":"7786:45:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77334,"name":"uint256","nodeType":"ElementaryTypeName","src":"7760:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":77335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7834:1:161","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"id":77339,"nodeType":"VariableDeclaration","src":"7841:74:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES","nameLocation":"7867:44:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77337,"name":"uint256","nodeType":"ElementaryTypeName","src":"7841:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":77338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:161","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"id":77342,"nodeType":"VariableDeclaration","src":"7922:74:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES","nameLocation":"7948:44:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77340,"name":"uint256","nodeType":"ElementaryTypeName","src":"7922:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":77341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7995:1:161","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"id":77345,"nodeType":"VariableDeclaration","src":"8002:73:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES","nameLocation":"8028:43:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77343,"name":"uint256","nodeType":"ElementaryTypeName","src":"8002:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":77344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8074:1:161","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"id":77348,"nodeType":"VariableDeclaration","src":"8082:75:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR","nameLocation":"8108:45:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77346,"name":"uint256","nodeType":"ElementaryTypeName","src":"8082:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":77347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8156:1:161","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"id":77351,"nodeType":"VariableDeclaration","src":"8163:75:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR","nameLocation":"8189:44:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77349,"name":"uint256","nodeType":"ElementaryTypeName","src":"8163:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":77350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8236:2:161","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"id":77354,"nodeType":"VariableDeclaration","src":"8245:80:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH","nameLocation":"8271:49:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77352,"name":"uint256","nodeType":"ElementaryTypeName","src":"8245:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3131","id":77353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8323:2:161","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"visibility":"internal"},{"id":77357,"nodeType":"VariableDeclaration","src":"8331:79:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH","nameLocation":"8357:48:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77355,"name":"uint256","nodeType":"ElementaryTypeName","src":"8331:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3132","id":77356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8408:2:161","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"internal"},{"id":77360,"nodeType":"VariableDeclaration","src":"8417:74:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH","nameLocation":"8443:43:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77358,"name":"uint256","nodeType":"ElementaryTypeName","src":"8417:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3133","id":77359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8489:2:161","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"visibility":"internal"},{"id":77363,"nodeType":"VariableDeclaration","src":"8497:73:161","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH","nameLocation":"8523:42:161","scope":78769,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77361,"name":"uint256","nodeType":"ElementaryTypeName","src":"8497:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3134","id":77362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8568:2:161","typeDescriptions":{"typeIdentifier":"t_rational_14_by_1","typeString":"int_const 14"},"value":"14"},"visibility":"internal"},{"id":77367,"nodeType":"EventDefinition","src":"8577:51:161","nodes":[],"anonymous":true,"eventSelector":"e6fc1df15bb41e2a123ea1d440db6747be3ed04da67b92ac280ad10a97b799d8","name":"DebugEvent","nameLocation":"8583:10:161","parameters":{"id":77366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77365,"indexed":true,"mutability":"mutable","name":"topic0","nameLocation":"8610:6:161","nodeType":"VariableDeclaration","scope":77367,"src":"8594:22:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77364,"name":"uint256","nodeType":"ElementaryTypeName","src":"8594:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8593:24:161"}},{"id":77378,"nodeType":"FunctionDefinition","src":"8789:62:161","nodes":[],"body":{"id":77377,"nodeType":"Block","src":"8818:33:161","nodes":[],"statements":[{"expression":{"id":77375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77373,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"8828:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77374,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77370,"src":"8837:7:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8828:16:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77376,"nodeType":"ExpressionStatement","src":"8828:16:161"}]},"documentation":{"id":77368,"nodeType":"StructuredDocumentation","src":"8634:150:161","text":" @dev Minimal constructor that only sets the immutable `Router` address.\n @param _router The address of the `Router` contract."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":77371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77370,"mutability":"mutable","name":"_router","nameLocation":"8809:7:161","nodeType":"VariableDeclaration","scope":77378,"src":"8801:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77369,"name":"address","nodeType":"ElementaryTypeName","src":"8801:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8800:17:161"},"returnParameters":{"id":77372,"nodeType":"ParameterList","parameters":[],"src":"8818:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":77386,"nodeType":"ModifierDefinition","src":"9008:83:161","nodes":[],"body":{"id":77385,"nodeType":"Block","src":"9040:51:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77381,"name":"_onlyAfterInitMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77399,"src":"9050:21:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9050:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77383,"nodeType":"ExpressionStatement","src":"9050:23:161"},{"id":77384,"nodeType":"PlaceholderStatement","src":"9083:1:161"}]},"documentation":{"id":77379,"nodeType":"StructuredDocumentation","src":"8880:123:161","text":" @dev Functions marked with this modifier can only be called if the init message has been created before."},"name":"onlyAfterInitMessage","nameLocation":"9017:20:161","parameters":{"id":77380,"nodeType":"ParameterList","parameters":[],"src":"9037:2:161"},"virtual":false,"visibility":"internal"},{"id":77399,"nodeType":"FunctionDefinition","src":"9197:107:161","nodes":[],"body":{"id":77398,"nodeType":"Block","src":"9244:60:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77391,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"9262:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9270:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9262:9:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77394,"name":"InitMessageNotCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74253,"src":"9273:21:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9273:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77390,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9254:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9254:43:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77397,"nodeType":"ExpressionStatement","src":"9254:43:161"}]},"documentation":{"id":77387,"nodeType":"StructuredDocumentation","src":"9097:95:161","text":" @dev Internal function to check if the init message has been created before."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyAfterInitMessage","nameLocation":"9206:21:161","parameters":{"id":77388,"nodeType":"ParameterList","parameters":[],"src":"9227:2:161"},"returnParameters":{"id":77389,"nodeType":"ParameterList","parameters":[],"src":"9244:0:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77407,"nodeType":"ModifierDefinition","src":"9471:109:161","nodes":[],"body":{"id":77406,"nodeType":"Block","src":"9516:64:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77402,"name":"_onlyAfterInitMessageOrInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77425,"src":"9526:34:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9526:36:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77404,"nodeType":"ExpressionStatement","src":"9526:36:161"},{"id":77405,"nodeType":"PlaceholderStatement","src":"9572:1:161"}]},"documentation":{"id":77400,"nodeType":"StructuredDocumentation","src":"9310:156:161","text":" @dev Functions marked with this modifier can only be called if the init message has been created before or the caller is the initializer."},"name":"onlyAfterInitMessageOrInitializer","nameLocation":"9480:33:161","parameters":{"id":77401,"nodeType":"ParameterList","parameters":[],"src":"9513:2:161"},"virtual":false,"visibility":"internal"},{"id":77425,"nodeType":"FunctionDefinition","src":"9719:172:161","nodes":[],"body":{"id":77424,"nodeType":"Block","src":"9779:112:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":77419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":77414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77412,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"9797:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":77413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9805:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9797:9:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77415,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9810:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9814:6:161","memberName":"sender","nodeType":"MemberAccess","src":"9810:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":77417,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77318,"src":"9824:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9810:25:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9797:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77420,"name":"InitMessageNotCreatedAndCallerNotInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74256,"src":"9837:44:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9837:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77411,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9789:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9789:95:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77423,"nodeType":"ExpressionStatement","src":"9789:95:161"}]},"documentation":{"id":77408,"nodeType":"StructuredDocumentation","src":"9586:128:161","text":" @dev Internal function to check if the init message has been created before or the caller is the initializer."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyAfterInitMessageOrInitializer","nameLocation":"9728:34:161","parameters":{"id":77409,"nodeType":"ParameterList","parameters":[],"src":"9762:2:161"},"returnParameters":{"id":77410,"nodeType":"ParameterList","parameters":[],"src":"9779:0:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77433,"nodeType":"ModifierDefinition","src":"10002:67:161","nodes":[],"body":{"id":77432,"nodeType":"Block","src":"10026:43:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77428,"name":"_onlyIfActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77445,"src":"10036:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10036:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77430,"nodeType":"ExpressionStatement","src":"10036:15:161"},{"id":77431,"nodeType":"PlaceholderStatement","src":"10061:1:161"}]},"documentation":{"id":77426,"nodeType":"StructuredDocumentation","src":"9897:100:161","text":" @dev Functions marked with this modifier can only be called if program is active."},"name":"onlyIfActive","nameLocation":"10011:12:161","parameters":{"id":77427,"nodeType":"ParameterList","parameters":[],"src":"10023:2:161"},"virtual":false,"visibility":"internal"},{"id":77445,"nodeType":"FunctionDefinition","src":"10156:89:161","nodes":[],"body":{"id":77444,"nodeType":"Block","src":"10195:50:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10213:7:161","subExpression":{"id":77438,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77312,"src":"10214:6:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77440,"name":"ProgramExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74259,"src":"10222:13:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10222:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77437,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10205:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10205:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77443,"nodeType":"ExpressionStatement","src":"10205:33:161"}]},"documentation":{"id":77434,"nodeType":"StructuredDocumentation","src":"10075:76:161","text":" @dev Internal function to check if the program is active."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyIfActive","nameLocation":"10165:13:161","parameters":{"id":77435,"nodeType":"ParameterList","parameters":[],"src":"10178:2:161"},"returnParameters":{"id":77436,"nodeType":"ParameterList","parameters":[],"src":"10195:0:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77453,"nodeType":"ModifierDefinition","src":"10356:67:161","nodes":[],"body":{"id":77452,"nodeType":"Block","src":"10380:43:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77448,"name":"_onlyIfExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77464,"src":"10390:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10390:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77450,"nodeType":"ExpressionStatement","src":"10390:15:161"},{"id":77451,"nodeType":"PlaceholderStatement","src":"10415:1:161"}]},"documentation":{"id":77446,"nodeType":"StructuredDocumentation","src":"10251:100:161","text":" @dev Functions marked with this modifier can only be called if program is exited."},"name":"onlyIfExited","nameLocation":"10365:12:161","parameters":{"id":77447,"nodeType":"ParameterList","parameters":[],"src":"10377:2:161"},"virtual":false,"visibility":"internal"},{"id":77464,"nodeType":"FunctionDefinition","src":"10510:91:161","nodes":[],"body":{"id":77463,"nodeType":"Block","src":"10549:52:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77458,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77312,"src":"10567:6:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77459,"name":"ProgramNotExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74262,"src":"10575:16:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10575:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77457,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10559:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10559:35:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77462,"nodeType":"ExpressionStatement","src":"10559:35:161"}]},"documentation":{"id":77454,"nodeType":"StructuredDocumentation","src":"10429:76:161","text":" @dev Internal function to check if the program is exited."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyIfExited","nameLocation":"10519:13:161","parameters":{"id":77455,"nodeType":"ParameterList","parameters":[],"src":"10532:2:161"},"returnParameters":{"id":77456,"nodeType":"ParameterList","parameters":[],"src":"10549:0:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77472,"nodeType":"ModifierDefinition","src":"10707:63:161","nodes":[],"body":{"id":77471,"nodeType":"Block","src":"10729:41:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77467,"name":"_onlyRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77486,"src":"10739:11:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10739:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77469,"nodeType":"ExpressionStatement","src":"10739:13:161"},{"id":77470,"nodeType":"PlaceholderStatement","src":"10762:1:161"}]},"documentation":{"id":77465,"nodeType":"StructuredDocumentation","src":"10607:95:161","text":" @dev Functions marked with this modifier can only be called by the `Router`."},"name":"onlyRouter","nameLocation":"10716:10:161","parameters":{"id":77466,"nodeType":"ParameterList","parameters":[],"src":"10726:2:161"},"virtual":false,"visibility":"internal"},{"id":77486,"nodeType":"FunctionDefinition","src":"10862:102:161","nodes":[],"body":{"id":77485,"nodeType":"Block","src":"10899:65:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77477,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10917:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10921:6:161","memberName":"sender","nodeType":"MemberAccess","src":"10917:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":77479,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"10931:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10917:20:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77481,"name":"CallerNotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74265,"src":"10939:15:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10939:17:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77476,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10909:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10909:48:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77484,"nodeType":"ExpressionStatement","src":"10909:48:161"}]},"documentation":{"id":77473,"nodeType":"StructuredDocumentation","src":"10776:81:161","text":" @dev Internal function to check if the caller is the `Router`."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyRouter","nameLocation":"10871:11:161","parameters":{"id":77474,"nodeType":"ParameterList","parameters":[],"src":"10882:2:161"},"returnParameters":{"id":77475,"nodeType":"ParameterList","parameters":[],"src":"10899:0:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77494,"nodeType":"ModifierDefinition","src":"11086:69:161","nodes":[],"body":{"id":77493,"nodeType":"Block","src":"11111:44:161","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":77489,"name":"_whenNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77510,"src":"11121:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":77490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11121:16:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77491,"nodeType":"ExpressionStatement","src":"11121:16:161"},{"id":77492,"nodeType":"PlaceholderStatement","src":"11147:1:161"}]},"documentation":{"id":77487,"nodeType":"StructuredDocumentation","src":"10970:111:161","text":" @dev Functions marked with this modifier can only be called when the `Router` is not paused."},"name":"whenNotPaused","nameLocation":"11095:13:161","parameters":{"id":77488,"nodeType":"ParameterList","parameters":[],"src":"11108:2:161"},"virtual":false,"visibility":"internal"},{"id":77510,"nodeType":"FunctionDefinition","src":"11247:108:161","nodes":[],"body":{"id":77509,"nodeType":"Block","src":"11287:68:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11305:25:161","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":77500,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"11314:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77499,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"11306:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$74985_$","typeString":"type(contract IRouter)"}},"id":77501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11306:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":77502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11322:6:161","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":74748,"src":"11306:22:161","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":77503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11306:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77505,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74268,"src":"11332:13:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11332:15:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77498,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11297:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11297:51:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77508,"nodeType":"ExpressionStatement","src":"11297:51:161"}]},"documentation":{"id":77495,"nodeType":"StructuredDocumentation","src":"11161:81:161","text":" @dev Internal function to check if the `Router` is not paused."},"implemented":true,"kind":"function","modifiers":[],"name":"_whenNotPaused","nameLocation":"11256:14:161","parameters":{"id":77496,"nodeType":"ParameterList","parameters":[],"src":"11270:2:161"},"returnParameters":{"id":77497,"nodeType":"ParameterList","parameters":[],"src":"11287:0:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":77521,"nodeType":"ModifierDefinition","src":"11493:89:161","nodes":[],"body":{"id":77520,"nodeType":"Block","src":"11532:50:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77513,"src":"11558:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77515,"name":"_retrievingVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77551,"src":"11542:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11542:22:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77518,"nodeType":"ExpressionStatement","src":"11542:22:161"},{"id":77519,"nodeType":"PlaceholderStatement","src":"11574:1:161"}]},"documentation":{"id":77511,"nodeType":"StructuredDocumentation","src":"11361:127:161","text":" @dev Non-zero Vara value must be transferred from source to `Router` in functions marked with this modifier."},"name":"retrievingVara","nameLocation":"11502:14:161","parameters":{"id":77514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77513,"mutability":"mutable","name":"value","nameLocation":"11525:5:161","nodeType":"VariableDeclaration","scope":77521,"src":"11517:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77512,"name":"uint128","nodeType":"ElementaryTypeName","src":"11517:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"11516:15:161"},"virtual":false,"visibility":"internal"},{"id":77551,"nodeType":"FunctionDefinition","src":"11691:228:161","nodes":[],"body":{"id":77550,"nodeType":"Block","src":"11740:179:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":77529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77524,"src":"11754:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":77528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11763:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11754:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77549,"nodeType":"IfStatement","src":"11750:163:161","trueBody":{"id":77548,"nodeType":"Block","src":"11766:147:161","statements":[{"assignments":[77531],"declarations":[{"constant":false,"id":77531,"mutability":"mutable","name":"success","nameLocation":"11785:7:161","nodeType":"VariableDeclaration","scope":77548,"src":"11780:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77530,"name":"bool","nodeType":"ElementaryTypeName","src":"11780:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":77541,"initialValue":{"arguments":[{"expression":{"id":77536,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11823:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11827:6:161","memberName":"sender","nodeType":"MemberAccess","src":"11823:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77538,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"11835:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77524,"src":"11843:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":77533,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"11802:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77532,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78677,"src":"11795:6:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$75001_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":77534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11795:14:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":77535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11810:12:161","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"11795:27:161","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":77540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11795:54:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"11780:69:161"},{"expression":{"arguments":[{"id":77543,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77531,"src":"11871:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77544,"name":"WVaraTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74271,"src":"11880:19:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11880:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11863:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11863:39:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77547,"nodeType":"ExpressionStatement","src":"11863:39:161"}]}}]},"documentation":{"id":77522,"nodeType":"StructuredDocumentation","src":"11588:98:161","text":" @dev Internal function to transfer non-zero Vara value from source to `Router`."},"implemented":true,"kind":"function","modifiers":[],"name":"_retrievingVara","nameLocation":"11700:15:161","parameters":{"id":77525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77524,"mutability":"mutable","name":"value","nameLocation":"11724:5:161","nodeType":"VariableDeclaration","scope":77551,"src":"11716:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77523,"name":"uint128","nodeType":"ElementaryTypeName","src":"11716:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"11715:15:161"},"returnParameters":{"id":77526,"nodeType":"ParameterList","parameters":[],"src":"11740:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":77578,"nodeType":"FunctionDefinition","src":"12058:215:161","nodes":[],"body":{"id":77577,"nodeType":"Block","src":"12108:165:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":77559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77557,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77554,"src":"12122:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":77558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12122:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77576,"nodeType":"IfStatement","src":"12118:149:161","trueBody":{"id":77575,"nodeType":"Block","src":"12134:133:161","statements":[{"assignments":[77561,null],"declarations":[{"constant":false,"id":77561,"mutability":"mutable","name":"success","nameLocation":"12154:7:161","nodeType":"VariableDeclaration","scope":77575,"src":"12149:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77560,"name":"bool","nodeType":"ElementaryTypeName","src":"12149:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":77568,"initialValue":{"arguments":[{"hexValue":"","id":77566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12192:2:161","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":77562,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"12166:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12173:4:161","memberName":"call","nodeType":"MemberAccess","src":"12166:11:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":77565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":77564,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77554,"src":"12185:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"12166:25:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":77567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12166:29:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"12148:47:161"},{"expression":{"arguments":[{"id":77570,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77561,"src":"12217:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77571,"name":"EtherTransferToRouterFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74274,"src":"12226:27:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12226:29:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12209:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12209:47:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77574,"nodeType":"ExpressionStatement","src":"12209:47:161"}]}}]},"documentation":{"id":77552,"nodeType":"StructuredDocumentation","src":"11925:128:161","text":" @dev Non-zero Ether value must be transferred from source to `Router` in functions marked with this modifier."},"implemented":true,"kind":"function","modifiers":[],"name":"_retrievingEther","nameLocation":"12067:16:161","parameters":{"id":77555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77554,"mutability":"mutable","name":"value","nameLocation":"12092:5:161","nodeType":"VariableDeclaration","scope":77578,"src":"12084:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77553,"name":"uint128","nodeType":"ElementaryTypeName","src":"12084:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"12083:15:161"},"returnParameters":{"id":77556,"nodeType":"ParameterList","parameters":[],"src":"12108:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":77596,"nodeType":"FunctionDefinition","src":"12658:216:161","nodes":[],"body":{"id":77595,"nodeType":"Block","src":"12816:58:161","nodes":[],"statements":[{"expression":{"arguments":[{"id":77591,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77581,"src":"12846:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":77592,"name":"_callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77583,"src":"12856:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":77590,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77968,"src":"12833:12:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes calldata,bool) returns (bytes32)"}},"id":77593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12833:34:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77589,"id":77594,"nodeType":"Return","src":"12826:41:161"}]},"baseFunctions":[74335],"documentation":{"id":77579,"nodeType":"StructuredDocumentation","src":"12328:325:161","text":" @dev Sends message to the program.\n As result of execution, the `MessageQueueingRequested` event will be emitted.\n @param _payload The payload of the message.\n @param _callReply Whether to set `call` flag in the reply message.\n @return messageId Message ID of the sent message."},"functionSelector":"42129d00","implemented":true,"kind":"function","modifiers":[{"id":77586,"kind":"modifierInvocation","modifierName":{"id":77585,"name":"whenNotPaused","nameLocations":["12762:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"12762:13:161"},"nodeType":"ModifierInvocation","src":"12762:13:161"}],"name":"sendMessage","nameLocation":"12667:11:161","parameters":{"id":77584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77581,"mutability":"mutable","name":"_payload","nameLocation":"12694:8:161","nodeType":"VariableDeclaration","scope":77596,"src":"12679:23:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":77580,"name":"bytes","nodeType":"ElementaryTypeName","src":"12679:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":77583,"mutability":"mutable","name":"_callReply","nameLocation":"12709:10:161","nodeType":"VariableDeclaration","scope":77596,"src":"12704:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77582,"name":"bool","nodeType":"ElementaryTypeName","src":"12704:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12678:42:161"},"returnParameters":{"id":77589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77588,"mutability":"mutable","name":"messageId","nameLocation":"12801:9:161","nodeType":"VariableDeclaration","scope":77596,"src":"12793:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12793:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12792:19:161"},"scope":78769,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77631,"nodeType":"FunctionDefinition","src":"13415:340:161","nodes":[],"body":{"id":77630,"nodeType":"Block","src":"13588:167:161","nodes":[],"statements":[{"assignments":[77611],"declarations":[{"constant":false,"id":77611,"mutability":"mutable","name":"_value","nameLocation":"13606:6:161","nodeType":"VariableDeclaration","scope":77630,"src":"13598:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77610,"name":"uint128","nodeType":"ElementaryTypeName","src":"13598:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":77617,"initialValue":{"arguments":[{"expression":{"id":77614,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13623:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13627:5:161","memberName":"value","nodeType":"MemberAccess","src":"13623:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13615:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":77612,"name":"uint128","nodeType":"ElementaryTypeName","src":"13615:7:161","typeDescriptions":{}}},"id":77616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13615:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"13598:35:161"},{"expression":{"arguments":[{"id":77619,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77611,"src":"13661:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77618,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77578,"src":"13644:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13644:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77621,"nodeType":"ExpressionStatement","src":"13644:24:161"},{"eventCall":{"arguments":[{"id":77623,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77599,"src":"13707:10:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77624,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13719:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13723:6:161","memberName":"sender","nodeType":"MemberAccess","src":"13719:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77626,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77601,"src":"13731:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":77627,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77611,"src":"13741:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77622,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74165,"src":"13684:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":77628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13684:64:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77629,"nodeType":"EmitStatement","src":"13679:69:161"}]},"baseFunctions":[74343],"documentation":{"id":77597,"nodeType":"StructuredDocumentation","src":"12880:530:161","text":" @dev Sends reply message to the program.\n Note that this function does not return `bytes32 messageId` of the sent message,\n if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)`\n or use SDK in `ethexe/sdk/src/mirror.rs`.\n As result of execution, the `ReplyQueueingRequested` event will be emitted.\n @param _repliedTo Message ID to which the reply is sent.\n @param _payload The payload of the reply message."},"functionSelector":"7a8e0cdd","implemented":true,"kind":"function","modifiers":[{"id":77604,"kind":"modifierInvocation","modifierName":{"id":77603,"name":"whenNotPaused","nameLocations":["13520:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"13520:13:161"},"nodeType":"ModifierInvocation","src":"13520:13:161"},{"id":77606,"kind":"modifierInvocation","modifierName":{"id":77605,"name":"onlyIfActive","nameLocations":["13542:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77433,"src":"13542:12:161"},"nodeType":"ModifierInvocation","src":"13542:12:161"},{"id":77608,"kind":"modifierInvocation","modifierName":{"id":77607,"name":"onlyAfterInitMessage","nameLocations":["13563:20:161"],"nodeType":"IdentifierPath","referencedDeclaration":77386,"src":"13563:20:161"},"nodeType":"ModifierInvocation","src":"13563:20:161"}],"name":"sendReply","nameLocation":"13424:9:161","parameters":{"id":77602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77599,"mutability":"mutable","name":"_repliedTo","nameLocation":"13442:10:161","nodeType":"VariableDeclaration","scope":77631,"src":"13434:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77598,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13434:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":77601,"mutability":"mutable","name":"_payload","nameLocation":"13469:8:161","nodeType":"VariableDeclaration","scope":77631,"src":"13454:23:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":77600,"name":"bytes","nodeType":"ElementaryTypeName","src":"13454:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13433:45:161"},"returnParameters":{"id":77609,"nodeType":"ParameterList","parameters":[],"src":"13588:0:161"},"scope":78769,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77650,"nodeType":"FunctionDefinition","src":"14045:165:161","nodes":[],"body":{"id":77649,"nodeType":"Block","src":"14142:68:161","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":77644,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77634,"src":"14180:10:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77645,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14192:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14196:6:161","memberName":"sender","nodeType":"MemberAccess","src":"14192:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":77643,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74172,"src":"14157:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":77647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14157:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77648,"nodeType":"EmitStatement","src":"14152:51:161"}]},"baseFunctions":[74349],"documentation":{"id":77632,"nodeType":"StructuredDocumentation","src":"13828:212:161","text":" @dev Claim value from message in mailbox.\n As result of execution, the `ValueClaimingRequested` event will be emitted.\n @param _claimedId Message ID of the value to be claimed."},"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":77637,"kind":"modifierInvocation","modifierName":{"id":77636,"name":"whenNotPaused","nameLocations":["14094:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"14094:13:161"},"nodeType":"ModifierInvocation","src":"14094:13:161"},{"id":77639,"kind":"modifierInvocation","modifierName":{"id":77638,"name":"onlyIfActive","nameLocations":["14108:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77433,"src":"14108:12:161"},"nodeType":"ModifierInvocation","src":"14108:12:161"},{"id":77641,"kind":"modifierInvocation","modifierName":{"id":77640,"name":"onlyAfterInitMessage","nameLocations":["14121:20:161"],"nodeType":"IdentifierPath","referencedDeclaration":77386,"src":"14121:20:161"},"nodeType":"ModifierInvocation","src":"14121:20:161"}],"name":"claimValue","nameLocation":"14054:10:161","parameters":{"id":77635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77634,"mutability":"mutable","name":"_claimedId","nameLocation":"14073:10:161","nodeType":"VariableDeclaration","scope":77650,"src":"14065:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14065:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14064:20:161"},"returnParameters":{"id":77642,"nodeType":"ParameterList","parameters":[],"src":"14142:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77668,"nodeType":"FunctionDefinition","src":"14511:168:161","nodes":[],"body":{"id":77667,"nodeType":"Block","src":"14618:61:161","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":77664,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77653,"src":"14665:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77663,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"14633:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14633:39:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77666,"nodeType":"EmitStatement","src":"14628:44:161"}]},"baseFunctions":[74355],"documentation":{"id":77651,"nodeType":"StructuredDocumentation","src":"14216:290:161","text":" @dev Tops up the executable balance of the program.\n As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\n @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."},"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":77656,"kind":"modifierInvocation","modifierName":{"id":77655,"name":"whenNotPaused","nameLocations":["14568:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"14568:13:161"},"nodeType":"ModifierInvocation","src":"14568:13:161"},{"id":77658,"kind":"modifierInvocation","modifierName":{"id":77657,"name":"onlyIfActive","nameLocations":["14582:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77433,"src":"14582:12:161"},"nodeType":"ModifierInvocation","src":"14582:12:161"},{"arguments":[{"id":77660,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77653,"src":"14610:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":77661,"kind":"modifierInvocation","modifierName":{"id":77659,"name":"retrievingVara","nameLocations":["14595:14:161"],"nodeType":"IdentifierPath","referencedDeclaration":77521,"src":"14595:14:161"},"nodeType":"ModifierInvocation","src":"14595:22:161"}],"name":"executableBalanceTopUp","nameLocation":"14520:22:161","parameters":{"id":77654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77653,"mutability":"mutable","name":"_value","nameLocation":"14551:6:161","nodeType":"VariableDeclaration","scope":77668,"src":"14543:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77652,"name":"uint128","nodeType":"ElementaryTypeName","src":"14543:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"14542:16:161"},"returnParameters":{"id":77662,"nodeType":"ParameterList","parameters":[],"src":"14618:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77716,"nodeType":"FunctionDefinition","src":"15386:374:161","nodes":[],"body":{"id":77715,"nodeType":"Block","src":"15561:199:161","nodes":[],"statements":[{"clauses":[{"block":{"id":77702,"nodeType":"Block","src":"15655:2:161","statements":[]},"errorName":"","id":77703,"nodeType":"TryCatchClause","src":"15655:2:161"},{"block":{"id":77704,"nodeType":"Block","src":"15664:2:161","statements":[]},"errorName":"","id":77705,"nodeType":"TryCatchClause","src":"15658:8:161"}],"externalCall":{"arguments":[{"expression":{"id":77690,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15597:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15601:6:161","memberName":"sender","nodeType":"MemberAccess","src":"15597:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":77694,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15617:4:161","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$78769","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$78769","typeString":"contract Mirror"}],"id":77693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15609:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77692,"name":"address","nodeType":"ElementaryTypeName","src":"15609:7:161","typeDescriptions":{}}},"id":77695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15609:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77696,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77671,"src":"15624:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":77697,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77673,"src":"15632:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":77698,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77675,"src":"15643:2:161","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":77699,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77677,"src":"15647:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":77700,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77679,"src":"15651:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":77687,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77303,"src":"15582:6:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77686,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78677,"src":"15575:6:161","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$75001_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":77688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15575:14:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":77689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15590:6:161","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"15575:21:161","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":77701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15575:79:161","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77706,"nodeType":"TryStatement","src":"15571:95:161"},{"expression":{"arguments":[{"id":77708,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77671,"src":"15691:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77707,"name":"_retrievingVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77551,"src":"15675:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15675:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77710,"nodeType":"ExpressionStatement","src":"15675:23:161"},{"eventCall":{"arguments":[{"id":77712,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77671,"src":"15746:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77711,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"15714:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15714:39:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77714,"nodeType":"EmitStatement","src":"15709:44:161"}]},"baseFunctions":[74369],"documentation":{"id":77669,"nodeType":"StructuredDocumentation","src":"14685:696:161","text":" @dev Tops up the executable balance of the program.\n Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router`\n using permit signature, which can save one transaction for user.\n As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\n @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter."},"functionSelector":"c6049692","implemented":true,"kind":"function","modifiers":[{"id":77682,"kind":"modifierInvocation","modifierName":{"id":77681,"name":"whenNotPaused","nameLocations":["15522:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"15522:13:161"},"nodeType":"ModifierInvocation","src":"15522:13:161"},{"id":77684,"kind":"modifierInvocation","modifierName":{"id":77683,"name":"onlyIfActive","nameLocations":["15544:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77433,"src":"15544:12:161"},"nodeType":"ModifierInvocation","src":"15544:12:161"}],"name":"executableBalanceTopUpWithPermit","nameLocation":"15395:32:161","parameters":{"id":77680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77671,"mutability":"mutable","name":"_value","nameLocation":"15436:6:161","nodeType":"VariableDeclaration","scope":77716,"src":"15428:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77670,"name":"uint128","nodeType":"ElementaryTypeName","src":"15428:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":77673,"mutability":"mutable","name":"_deadline","nameLocation":"15452:9:161","nodeType":"VariableDeclaration","scope":77716,"src":"15444:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77672,"name":"uint256","nodeType":"ElementaryTypeName","src":"15444:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":77675,"mutability":"mutable","name":"_v","nameLocation":"15469:2:161","nodeType":"VariableDeclaration","scope":77716,"src":"15463:8:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":77674,"name":"uint8","nodeType":"ElementaryTypeName","src":"15463:5:161","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":77677,"mutability":"mutable","name":"_r","nameLocation":"15481:2:161","nodeType":"VariableDeclaration","scope":77716,"src":"15473:10:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77676,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15473:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":77679,"mutability":"mutable","name":"_s","nameLocation":"15493:2:161","nodeType":"VariableDeclaration","scope":77716,"src":"15485:10:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77678,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15485:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15427:69:161"},"returnParameters":{"id":77685,"nodeType":"ParameterList","parameters":[],"src":"15561:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77734,"nodeType":"FunctionDefinition","src":"16006:208:161","nodes":[],"body":{"id":77733,"nodeType":"Block","src":"16071:143:161","nodes":[],"statements":[{"assignments":[null,77723],"declarations":[null,{"constant":false,"id":77723,"mutability":"mutable","name":"success","nameLocation":"16089:7:161","nodeType":"VariableDeclaration","scope":77733,"src":"16084:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77722,"name":"bool","nodeType":"ElementaryTypeName","src":"16084:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":77726,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":77724,"name":"_transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78001,"src":"16100:31:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint128_$_t_bool_$","typeString":"function () returns (uint128,bool)"}},"id":77725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16100:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"nodeType":"VariableDeclarationStatement","src":"16081:52:161"},{"expression":{"arguments":[{"id":77728,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77723,"src":"16151:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77729,"name":"TransferLockedValueToInheritorExternalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74277,"src":"16160:44:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16160:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77727,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16143:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16143:64:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77732,"nodeType":"ExpressionStatement","src":"16143:64:161"}]},"baseFunctions":[74373],"documentation":{"id":77717,"nodeType":"StructuredDocumentation","src":"15766:235:161","text":" @dev Transfers locked value to the inheritor.\n Note that this function can be called only after program exited.\n As result of execution, the `LockedValueTransferRequested` event will be emitted."},"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":77720,"kind":"modifierInvocation","modifierName":{"id":77719,"name":"whenNotPaused","nameLocations":["16057:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"16057:13:161"},"nodeType":"ModifierInvocation","src":"16057:13:161"}],"name":"transferLockedValueToInheritor","nameLocation":"16015:30:161","parameters":{"id":77718,"nodeType":"ParameterList","parameters":[],"src":"16045:2:161"},"returnParameters":{"id":77721,"nodeType":"ParameterList","parameters":[],"src":"16071:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77813,"nodeType":"FunctionDefinition","src":"17212:749:161","nodes":[],"body":{"id":77812,"nodeType":"Block","src":"17367:594:161","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77749,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77318,"src":"17385:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17408:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17400:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77750,"name":"address","nodeType":"ElementaryTypeName","src":"17400:7:161","typeDescriptions":{}}},"id":77753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17400:10:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17385:25:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77755,"name":"InitializerAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74279,"src":"17412:21:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17412:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77748,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17377:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17377:59:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77758,"nodeType":"ExpressionStatement","src":"17377:59:161"},{"expression":{"arguments":[{"id":77761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17455:8:161","subExpression":{"id":77760,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77321,"src":"17456:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77762,"name":"IsSmallAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74281,"src":"17465:17:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17465:19:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77759,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17447:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17447:38:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77765,"nodeType":"ExpressionStatement","src":"17447:38:161"},{"assignments":[77770],"declarations":[{"constant":false,"id":77770,"mutability":"mutable","name":"implementationSlot","nameLocation":"17528:18:161","nodeType":"VariableDeclaration","scope":77812,"src":"17496:50:161","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":77769,"nodeType":"UserDefinedTypeName","pathNode":{"id":77768,"name":"StorageSlot.AddressSlot","nameLocations":["17496:11:161","17508:11:161"],"nodeType":"IdentifierPath","referencedDeclaration":48971,"src":"17496:23:161"},"referencedDeclaration":48971,"src":"17496:23:161","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"id":77776,"initialValue":{"arguments":[{"expression":{"id":77773,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"17588:12:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":77774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17601:19:161","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":45422,"src":"17588:32:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77771,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"17561:11:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":77772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17573:14:161","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":49000,"src":"17561:26:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$48971_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":77775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17561:60:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17496:125:161"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77778,"name":"implementationSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77770,"src":"17640:18:161","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":77779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17659:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48970,"src":"17640:24:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17676:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17668:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77780,"name":"address","nodeType":"ElementaryTypeName","src":"17668:7:161","typeDescriptions":{}}},"id":77783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17668:10:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17640:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77785,"name":"AbiInterfaceAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74283,"src":"17680:22:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17680:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77777,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17632:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17632:73:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77788,"nodeType":"ExpressionStatement","src":"17632:73:161"},{"expression":{"id":77791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77789,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77318,"src":"17716:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77790,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77737,"src":"17730:12:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17716:26:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77792,"nodeType":"ExpressionStatement","src":"17716:26:161"},{"expression":{"id":77795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":77793,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77321,"src":"17752:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77794,"name":"_isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77741,"src":"17762:8:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17752:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77796,"nodeType":"ExpressionStatement","src":"17752:18:161"},{"expression":{"id":77801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77797,"name":"implementationSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77770,"src":"17780:18:161","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":77799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17799:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48970,"src":"17780:24:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":77800,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77739,"src":"17807:13:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17780:40:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77802,"nodeType":"ExpressionStatement","src":"17780:40:161"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":77805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77803,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77743,"src":"17835:25:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":77804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17864:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17835:30:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":77811,"nodeType":"IfStatement","src":"17831:124:161","trueBody":{"id":77810,"nodeType":"Block","src":"17867:88:161","statements":[{"eventCall":{"arguments":[{"id":77807,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77743,"src":"17918:25:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77806,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"17886:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17886:58:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77809,"nodeType":"EmitStatement","src":"17881:63:161"}]}}]},"baseFunctions":[74385],"documentation":{"id":77735,"nodeType":"StructuredDocumentation","src":"16274:933:161","text":" @dev Initializes the contract with the given parameters.\n Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default,\n so we do the initialization separately after creating `Mirror` in this method.\n @param _initializer The address of the initializer. Only this address will be able to send the first (init) message.\n @param _abiInterface The address of the ABI interface. This address will be displayed as \"proxy implementation\"\n and is necessary to show the available methods of `Mirror` smart contract on Etherscan.\n In case it is a Sails framework smart contract, the user can set his own ABI.\n @param _isSmall The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details.\n @param _initialExecutableBalance The initial executable balance to be transferred to the program."},"functionSelector":"bfa28576","implemented":true,"kind":"function","modifiers":[{"id":77746,"kind":"modifierInvocation","modifierName":{"id":77745,"name":"onlyRouter","nameLocations":["17352:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":77472,"src":"17352:10:161"},"nodeType":"ModifierInvocation","src":"17352:10:161"}],"name":"initialize","nameLocation":"17221:10:161","parameters":{"id":77744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77737,"mutability":"mutable","name":"_initializer","nameLocation":"17240:12:161","nodeType":"VariableDeclaration","scope":77813,"src":"17232:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77736,"name":"address","nodeType":"ElementaryTypeName","src":"17232:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77739,"mutability":"mutable","name":"_abiInterface","nameLocation":"17262:13:161","nodeType":"VariableDeclaration","scope":77813,"src":"17254:21:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77738,"name":"address","nodeType":"ElementaryTypeName","src":"17254:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77741,"mutability":"mutable","name":"_isSmall","nameLocation":"17282:8:161","nodeType":"VariableDeclaration","scope":77813,"src":"17277:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77740,"name":"bool","nodeType":"ElementaryTypeName","src":"17277:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":77743,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"17300:25:161","nodeType":"VariableDeclaration","scope":77813,"src":"17292:33:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77742,"name":"uint128","nodeType":"ElementaryTypeName","src":"17292:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"17231:95:161"},"returnParameters":{"id":77747,"nodeType":"ParameterList","parameters":[],"src":"17367:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":77918,"nodeType":"FunctionDefinition","src":"18175:2860:161","nodes":[],"body":{"id":77917,"nodeType":"Block","src":"18347:2688:161","nodes":[],"statements":[{"documentation":" @dev Verify that the transition belongs to this contract.","expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77825,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"18535:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18547:7:161","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"18535:19:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":77829,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18566:4:161","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$78769","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$78769","typeString":"contract Mirror"}],"id":77828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18558:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77827,"name":"address","nodeType":"ElementaryTypeName","src":"18558:7:161","typeDescriptions":{}}},"id":77830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18558:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18535:36:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77832,"name":"InvalidActorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74285,"src":"18573:14:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18573:16:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77824,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18527:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18527:63:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77835,"nodeType":"ExpressionStatement","src":"18527:63:161"},{"condition":{"expression":{"id":77836,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"18875:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18887:26:161","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":87652,"src":"18875:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Transfer value to router if valueToReceive is non-zero and has negative sign.","id":77844,"nodeType":"IfStatement","src":"18871:113:161","trueBody":{"id":77843,"nodeType":"Block","src":"18915:69:161","statements":[{"expression":{"arguments":[{"expression":{"id":77839,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"18946:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18958:14:161","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"18946:26:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77838,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77578,"src":"18929:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18929:44:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77842,"nodeType":"ExpressionStatement","src":"18929:44:161"}]}},{"assignments":[77847],"declarations":[{"constant":false,"id":77847,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"19220:18:161","nodeType":"VariableDeclaration","scope":77917,"src":"19212:26:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77846,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19212:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Send all outgoing messages.","id":77852,"initialValue":{"arguments":[{"expression":{"id":77849,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"19255:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19267:8:161","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":87662,"src":"19255:20:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":77848,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78099,"src":"19241:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":77851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19241:35:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19212:64:161"},{"assignments":[77855],"declarations":[{"constant":false,"id":77855,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"19510:15:161","nodeType":"VariableDeclaration","scope":77917,"src":"19502:23:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77854,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19502:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Send value for each claim.","id":77860,"initialValue":{"arguments":[{"expression":{"id":77857,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"19541:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19553:11:161","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":87657,"src":"19541:23:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":77856,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78607,"src":"19528:12:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":77859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19528:37:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19502:63:161"},{"condition":{"expression":{"id":77861,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"19793:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19805:6:161","memberName":"exited","nodeType":"MemberAccess","referencedDeclaration":87643,"src":"19793:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Set inheritor if exited.","falseBody":{"id":77881,"nodeType":"Block","src":"19880:92:161","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":77876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":77870,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"19902:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19914:9:161","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":87646,"src":"19902:21:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":77874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19935:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":77873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19927:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77872,"name":"address","nodeType":"ElementaryTypeName","src":"19927:7:161","typeDescriptions":{}}},"id":77875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19927:10:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19902:35:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":77877,"name":"InheritorMustBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74287,"src":"19939:19:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":77878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19939:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":77869,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19894:7:161","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":77879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19894:67:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77880,"nodeType":"ExpressionStatement","src":"19894:67:161"}]},"id":77882,"nodeType":"IfStatement","src":"19789:183:161","trueBody":{"id":77868,"nodeType":"Block","src":"19813:61:161","statements":[{"expression":{"arguments":[{"expression":{"id":77864,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"19841:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19853:9:161","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":87646,"src":"19841:21:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":77863,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78640,"src":"19827:13:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":77866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19827:36:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77867,"nodeType":"ExpressionStatement","src":"19827:36:161"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":77886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77883,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77306,"src":"20213:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":77884,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20226:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20238:12:161","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":87640,"src":"20226:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20213:37:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Update the state hash if changed.","id":77893,"nodeType":"IfStatement","src":"20209:110:161","trueBody":{"id":77892,"nodeType":"Block","src":"20252:67:161","statements":[{"expression":{"arguments":[{"expression":{"id":77888,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20283:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20295:12:161","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":87640,"src":"20283:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":77887,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78655,"src":"20266:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":77890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20266:42:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77891,"nodeType":"ExpressionStatement","src":"20266:42:161"}]}},{"assignments":[77896],"declarations":[{"constant":false,"id":77896,"mutability":"mutable","name":"_stateTransitionHash","nameLocation":"20571:20:161","nodeType":"VariableDeclaration","scope":77917,"src":"20563:28:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77895,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20563:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Return hash of performed state transition.","id":77914,"initialValue":{"arguments":[{"expression":{"id":77899,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20632:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20644:7:161","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"20632:19:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77901,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20665:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20677:12:161","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":87640,"src":"20665:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77903,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20703:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20715:6:161","memberName":"exited","nodeType":"MemberAccess","referencedDeclaration":87643,"src":"20703:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":77905,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20735:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20747:9:161","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":87646,"src":"20735:21:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":77907,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20770:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20782:14:161","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"20770:26:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":77909,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77817,"src":"20810:11:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":77910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20822:26:161","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":87652,"src":"20810:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":77911,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77855,"src":"20862:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":77912,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77847,"src":"20891:18:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":77897,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"20594:4:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":77898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20599:19:161","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":87939,"src":"20594:24:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bool_$_t_address_$_t_uint128_$_t_bool_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bool,address,uint128,bool,bytes32,bytes32) pure returns (bytes32)"}},"id":77913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20594:325:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20563:356:161"},{"expression":{"id":77915,"name":"_stateTransitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77896,"src":"21008:20:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77823,"id":77916,"nodeType":"Return","src":"21001:27:161"}]},"baseFunctions":[74394],"documentation":{"id":77814,"nodeType":"StructuredDocumentation","src":"17967:203:161","text":" @dev Performs state transition for the `Mirror` contract.\n @param _transition The state transition data.\n @return transitionHash The hash of the performed state transition."},"functionSelector":"084f443a","implemented":true,"kind":"function","modifiers":[{"id":77820,"kind":"modifierInvocation","modifierName":{"id":77819,"name":"onlyRouter","nameLocations":["18291:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":77472,"src":"18291:10:161"},"nodeType":"ModifierInvocation","src":"18291:10:161"}],"name":"performStateTransition","nameLocation":"18184:22:161","parameters":{"id":77818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77817,"mutability":"mutable","name":"_transition","nameLocation":"18237:11:161","nodeType":"VariableDeclaration","scope":77918,"src":"18207:41:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":77816,"nodeType":"UserDefinedTypeName","pathNode":{"id":77815,"name":"Gear.StateTransition","nameLocations":["18207:4:161","18212:15:161"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"18207:20:161"},"referencedDeclaration":87663,"src":"18207:20:161","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"18206:43:161"},"returnParameters":{"id":77823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77822,"mutability":"mutable","name":"transitionHash","nameLocation":"18327:14:161","nodeType":"VariableDeclaration","scope":77918,"src":"18319:22:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18319:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18318:24:161"},"scope":78769,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":77968,"nodeType":"FunctionDefinition","src":"21468:760:161","nodes":[],"body":{"id":77967,"nodeType":"Block","src":"21651:577:161","nodes":[],"statements":[{"assignments":[77933],"declarations":[{"constant":false,"id":77933,"mutability":"mutable","name":"_value","nameLocation":"21669:6:161","nodeType":"VariableDeclaration","scope":77967,"src":"21661:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77932,"name":"uint128","nodeType":"ElementaryTypeName","src":"21661:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":77939,"initialValue":{"arguments":[{"expression":{"id":77936,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21686:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21690:5:161","memberName":"value","nodeType":"MemberAccess","src":"21686:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21678:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":77934,"name":"uint128","nodeType":"ElementaryTypeName","src":"21678:7:161","typeDescriptions":{}}},"id":77938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21678:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"21661:35:161"},{"expression":{"arguments":[{"id":77941,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77933,"src":"21724:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77940,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77578,"src":"21707:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":77942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21707:24:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77943,"nodeType":"ExpressionStatement","src":"21707:24:161"},{"assignments":[77945],"declarations":[{"constant":false,"id":77945,"mutability":"mutable","name":"_nonce","nameLocation":"21750:6:161","nodeType":"VariableDeclaration","scope":77967,"src":"21742:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77944,"name":"uint256","nodeType":"ElementaryTypeName","src":"21742:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77947,"initialValue":{"id":77946,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"21759:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21742:22:161"},{"assignments":[77950],"declarations":[{"constant":false,"id":77950,"mutability":"mutable","name":"id","nameLocation":"21933:2:161","nodeType":"VariableDeclaration","scope":77967,"src":"21925:10:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21925:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Generate unique message ID by formula:\n - `keccak256(abi.encodePacked(address(this), nonce++))`","id":77951,"nodeType":"VariableDeclarationStatement","src":"21925:10:161"},{"AST":{"nativeSrc":"21970:129:161","nodeType":"YulBlock","src":"21970:129:161","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21991:4:161","nodeType":"YulLiteral","src":"21991:4:161","type":"","value":"0x00"},{"arguments":[{"kind":"number","nativeSrc":"22001:2:161","nodeType":"YulLiteral","src":"22001:2:161","type":"","value":"96"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"22005:7:161","nodeType":"YulIdentifier","src":"22005:7:161"},"nativeSrc":"22005:9:161","nodeType":"YulFunctionCall","src":"22005:9:161"}],"functionName":{"name":"shl","nativeSrc":"21997:3:161","nodeType":"YulIdentifier","src":"21997:3:161"},"nativeSrc":"21997:18:161","nodeType":"YulFunctionCall","src":"21997:18:161"}],"functionName":{"name":"mstore","nativeSrc":"21984:6:161","nodeType":"YulIdentifier","src":"21984:6:161"},"nativeSrc":"21984:32:161","nodeType":"YulFunctionCall","src":"21984:32:161"},"nativeSrc":"21984:32:161","nodeType":"YulExpressionStatement","src":"21984:32:161"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22036:4:161","nodeType":"YulLiteral","src":"22036:4:161","type":"","value":"0x14"},{"name":"_nonce","nativeSrc":"22042:6:161","nodeType":"YulIdentifier","src":"22042:6:161"}],"functionName":{"name":"mstore","nativeSrc":"22029:6:161","nodeType":"YulIdentifier","src":"22029:6:161"},"nativeSrc":"22029:20:161","nodeType":"YulFunctionCall","src":"22029:20:161"},"nativeSrc":"22029:20:161","nodeType":"YulExpressionStatement","src":"22029:20:161"},{"nativeSrc":"22062:27:161","nodeType":"YulAssignment","src":"22062:27:161","value":{"arguments":[{"kind":"number","nativeSrc":"22078:4:161","nodeType":"YulLiteral","src":"22078:4:161","type":"","value":"0x00"},{"kind":"number","nativeSrc":"22084:4:161","nodeType":"YulLiteral","src":"22084:4:161","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"22068:9:161","nodeType":"YulIdentifier","src":"22068:9:161"},"nativeSrc":"22068:21:161","nodeType":"YulFunctionCall","src":"22068:21:161"},"variableNames":[{"name":"id","nativeSrc":"22062:2:161","nodeType":"YulIdentifier","src":"22062:2:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":77945,"isOffset":false,"isSlot":false,"src":"22042:6:161","valueSize":1},{"declaration":77950,"isOffset":false,"isSlot":false,"src":"22062:2:161","valueSize":1}],"flags":["memory-safe"],"id":77952,"nodeType":"InlineAssembly","src":"21945:154:161"},{"expression":{"id":77954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"22108:7:161","subExpression":{"id":77953,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77309,"src":"22108:5:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":77955,"nodeType":"ExpressionStatement","src":"22108:7:161"},{"eventCall":{"arguments":[{"id":77957,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77950,"src":"22156:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":77958,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22160:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":77959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22164:6:161","memberName":"sender","nodeType":"MemberAccess","src":"22160:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77960,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77921,"src":"22172:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":77961,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77933,"src":"22182:6:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":77962,"name":"_callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77923,"src":"22190:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":77956,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74154,"src":"22131:24:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128,bool)"}},"id":77963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22131:70:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":77964,"nodeType":"EmitStatement","src":"22126:75:161"},{"expression":{"id":77965,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77950,"src":"22219:2:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":77931,"id":77966,"nodeType":"Return","src":"22212:9:161"}]},"documentation":{"id":77919,"nodeType":"StructuredDocumentation","src":"21099:364:161","text":" @dev Internal implementation of `sendMessage` function.\n This function is used to send message to the program and emit `MessageQueueingRequested` event.\n @param _payload The payload of the message.\n @param _callReply Whether to set `call` flag in the reply message.\n @return messageId Message ID of the sent message."},"implemented":true,"kind":"function","modifiers":[{"id":77926,"kind":"modifierInvocation","modifierName":{"id":77925,"name":"onlyIfActive","nameLocations":["21556:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77433,"src":"21556:12:161"},"nodeType":"ModifierInvocation","src":"21556:12:161"},{"id":77928,"kind":"modifierInvocation","modifierName":{"id":77927,"name":"onlyAfterInitMessageOrInitializer","nameLocations":["21577:33:161"],"nodeType":"IdentifierPath","referencedDeclaration":77407,"src":"21577:33:161"},"nodeType":"ModifierInvocation","src":"21577:33:161"}],"name":"_sendMessage","nameLocation":"21477:12:161","parameters":{"id":77924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77921,"mutability":"mutable","name":"_payload","nameLocation":"21505:8:161","nodeType":"VariableDeclaration","scope":77968,"src":"21490:23:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":77920,"name":"bytes","nodeType":"ElementaryTypeName","src":"21490:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":77923,"mutability":"mutable","name":"_callReply","nameLocation":"21520:10:161","nodeType":"VariableDeclaration","scope":77968,"src":"21515:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77922,"name":"bool","nodeType":"ElementaryTypeName","src":"21515:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21489:42:161"},"returnParameters":{"id":77931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77930,"mutability":"mutable","name":"messageId","nameLocation":"21636:9:161","nodeType":"VariableDeclaration","scope":77968,"src":"21628:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":77929,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21628:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21627:19:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78001,"nodeType":"FunctionDefinition","src":"22557:470:161","nodes":[],"body":{"id":78000,"nodeType":"Block","src":"22706:321:161","nodes":[],"statements":[{"assignments":[77979],"declarations":[{"constant":false,"id":77979,"mutability":"mutable","name":"balance","nameLocation":"22724:7:161","nodeType":"VariableDeclaration","scope":78000,"src":"22716:15:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":77978,"name":"uint256","nodeType":"ElementaryTypeName","src":"22716:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":77985,"initialValue":{"expression":{"arguments":[{"id":77982,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"22742:4:161","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$78769","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$78769","typeString":"contract Mirror"}],"id":77981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22734:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":77980,"name":"address","nodeType":"ElementaryTypeName","src":"22734:7:161","typeDescriptions":{}}},"id":77983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22734:13:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":77984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22748:7:161","memberName":"balance","nodeType":"MemberAccess","src":"22734:21:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22716:39:161"},{"assignments":[77987],"declarations":[{"constant":false,"id":77987,"mutability":"mutable","name":"balance128","nameLocation":"22923:10:161","nodeType":"VariableDeclaration","scope":78000,"src":"22915:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77986,"name":"uint128","nodeType":"ElementaryTypeName","src":"22915:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":77992,"initialValue":{"arguments":[{"id":77990,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77979,"src":"22944:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":77989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22936:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":77988,"name":"uint128","nodeType":"ElementaryTypeName","src":"22936:7:161","typeDescriptions":{}}},"id":77991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22936:16:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"22915:37:161"},{"expression":{"components":[{"id":77993,"name":"balance128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77987,"src":"22970:10:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":77995,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77315,"src":"22997:9:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":77996,"name":"balance128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77987,"src":"23008:10:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":77994,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"22982:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":77997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22982:37:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":77998,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22969:51:161","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"functionReturnParameters":77977,"id":77999,"nodeType":"Return","src":"22962:58:161"}]},"documentation":{"id":77969,"nodeType":"StructuredDocumentation","src":"22234:318:161","text":" @dev Internal implementation of `transferLockedValueToInheritor` function.\n Note that this function can be called only after program exited.\n @return valueTransferred The amount of WVARA transferred.\n @return transferSuccess The flag indicating if the transfer was successful."},"implemented":true,"kind":"function","modifiers":[{"id":77972,"kind":"modifierInvocation","modifierName":{"id":77971,"name":"onlyIfExited","nameLocations":["22624:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77453,"src":"22624:12:161"},"nodeType":"ModifierInvocation","src":"22624:12:161"}],"name":"_transferLockedValueToInheritor","nameLocation":"22566:31:161","parameters":{"id":77970,"nodeType":"ParameterList","parameters":[],"src":"22597:2:161"},"returnParameters":{"id":77977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77974,"mutability":"mutable","name":"valueTransferred","nameLocation":"22662:16:161","nodeType":"VariableDeclaration","scope":78001,"src":"22654:24:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":77973,"name":"uint128","nodeType":"ElementaryTypeName","src":"22654:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":77976,"mutability":"mutable","name":"transferSuccess","nameLocation":"22685:15:161","nodeType":"VariableDeclaration","scope":78001,"src":"22680:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77975,"name":"bool","nodeType":"ElementaryTypeName","src":"22680:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22653:48:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78099,"nodeType":"FunctionDefinition","src":"23595:1232:161","nodes":[],"body":{"id":78098,"nodeType":"Block","src":"23679:1148:161","nodes":[],"statements":[{"assignments":[78012],"declarations":[{"constant":false,"id":78012,"mutability":"mutable","name":"messagesLen","nameLocation":"23697:11:161","nodeType":"VariableDeclaration","scope":78098,"src":"23689:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78011,"name":"uint256","nodeType":"ElementaryTypeName","src":"23689:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78015,"initialValue":{"expression":{"id":78013,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"23711:9:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":78014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23721:6:161","memberName":"length","nodeType":"MemberAccess","src":"23711:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23689:38:161"},{"assignments":[78017],"declarations":[{"constant":false,"id":78017,"mutability":"mutable","name":"messagesHashesSize","nameLocation":"23745:18:161","nodeType":"VariableDeclaration","scope":78098,"src":"23737:26:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78016,"name":"uint256","nodeType":"ElementaryTypeName","src":"23737:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78021,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78018,"name":"messagesLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78012,"src":"23766:11:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":78019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23780:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"23766:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23737:45:161"},{"assignments":[78023],"declarations":[{"constant":false,"id":78023,"mutability":"mutable","name":"messagesHashesMemPtr","nameLocation":"23800:20:161","nodeType":"VariableDeclaration","scope":78098,"src":"23792:28:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78022,"name":"uint256","nodeType":"ElementaryTypeName","src":"23792:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78028,"initialValue":{"arguments":[{"id":78026,"name":"messagesHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78017,"src":"23839:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78024,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"23823:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23830:8:161","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"23823:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":78027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23823:35:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23792:66:161"},{"assignments":[78030],"declarations":[{"constant":false,"id":78030,"mutability":"mutable","name":"offset","nameLocation":"23876:6:161","nodeType":"VariableDeclaration","scope":78098,"src":"23868:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78029,"name":"uint256","nodeType":"ElementaryTypeName","src":"23868:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78032,"initialValue":{"hexValue":"30","id":78031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23885:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23868:18:161"},{"body":{"id":78089,"nodeType":"Block","src":"23939:785:161","statements":[{"assignments":[78047],"declarations":[{"constant":false,"id":78047,"mutability":"mutable","name":"message","nameLocation":"23975:7:161","nodeType":"VariableDeclaration","scope":78089,"src":"23953:29:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78046,"nodeType":"UserDefinedTypeName","pathNode":{"id":78045,"name":"Gear.Message","nameLocations":["23953:4:161","23958:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"23953:12:161"},"referencedDeclaration":87597,"src":"23953:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":78051,"initialValue":{"baseExpression":{"id":78048,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78006,"src":"23985:9:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":78050,"indexExpression":{"id":78049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78034,"src":"23995:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23985:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"23953:44:161"},{"assignments":[78054],"declarations":[{"constant":false,"id":78054,"mutability":"mutable","name":"messageHash","nameLocation":"24103:11:161","nodeType":"VariableDeclaration","scope":78089,"src":"24095:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24095:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Generate hash for the message.","id":78059,"initialValue":{"arguments":[{"id":78057,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78047,"src":"24134:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":78055,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"24117:4:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":78056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24122:11:161","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":87880,"src":"24117:16:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$87597_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":78058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24117:25:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"24095:47:161"},{"documentation":" @dev Store the message hash in memory at messagesHashes[offset : offset+32].","expression":{"arguments":[{"id":78063,"name":"messagesHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78023,"src":"24306:20:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78064,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78030,"src":"24328:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78065,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78054,"src":"24336:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":78060,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"24280:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24287:18:161","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"24280:25:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":78066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24280:68:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78067,"nodeType":"ExpressionStatement","src":"24280:68:161"},{"id":78072,"nodeType":"UncheckedBlock","src":"24362:55:161","statements":[{"expression":{"id":78070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78068,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78030,"src":"24390:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":78069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24400:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"24390:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78071,"nodeType":"ExpressionStatement","src":"24390:12:161"}]},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78073,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78047,"src":"24556:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24564:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"24556:20:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24577:2:161","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"24556:23:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24583:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24556:28:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Send the message based on its type (`Gear.Message` or `Gear.Reply`).","falseBody":{"id":78087,"nodeType":"Block","src":"24655:59:161","statements":[{"expression":{"arguments":[{"id":78084,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78047,"src":"24691:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":78083,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78494,"src":"24673:17:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$87597_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":78085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24673:26:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78086,"nodeType":"ExpressionStatement","src":"24673:26:161"}]},"id":78088,"nodeType":"IfStatement","src":"24552:162:161","trueBody":{"id":78082,"nodeType":"Block","src":"24586:63:161","statements":[{"expression":{"arguments":[{"id":78079,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78047,"src":"24626:7:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":78078,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78153,"src":"24604:21:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$87597_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":78080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24604:30:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78081,"nodeType":"ExpressionStatement","src":"24604:30:161"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78034,"src":"23917:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":78038,"name":"messagesLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78012,"src":"23921:11:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23917:15:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78090,"initializationExpression":{"assignments":[78034],"declarations":[{"constant":false,"id":78034,"mutability":"mutable","name":"i","nameLocation":"23910:1:161","nodeType":"VariableDeclaration","scope":78090,"src":"23902:9:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78033,"name":"uint256","nodeType":"ElementaryTypeName","src":"23902:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78036,"initialValue":{"hexValue":"30","id":78035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23914:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23902:13:161"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":78041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23934:3:161","subExpression":{"id":78040,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78034,"src":"23934:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78042,"nodeType":"ExpressionStatement","src":"23934:3:161"},"nodeType":"ForStatement","src":"23897:827:161"},{"expression":{"arguments":[{"id":78093,"name":"messagesHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78023,"src":"24776:20:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":78094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24798:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":78095,"name":"messagesHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78017,"src":"24801:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78091,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"24741:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":78092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24748:27:161","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"24741:34:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":78096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24741:79:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":78010,"id":78097,"nodeType":"Return","src":"24734:86:161"}]},"documentation":{"id":78002,"nodeType":"StructuredDocumentation","src":"23297:293:161","text":" @dev Internal implementation of `_sendMessages` function.\n It sends all outgoing messages from the `Mirror` contract and emits appropriate events.\n @param _messages The array of messages to be sent.\n @return messagesHash The hash of the sent messages."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"23604:13:161","parameters":{"id":78007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78006,"mutability":"mutable","name":"_messages","nameLocation":"23642:9:161","nodeType":"VariableDeclaration","scope":78099,"src":"23618:33:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":78004,"nodeType":"UserDefinedTypeName","pathNode":{"id":78003,"name":"Gear.Message","nameLocations":["23618:4:161","23623:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"23618:12:161"},"referencedDeclaration":87597,"src":"23618:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"id":78005,"nodeType":"ArrayTypeName","src":"23618:14:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"23617:35:161"},"returnParameters":{"id":78010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78099,"src":"23670:7:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23670:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23669:9:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78153,"nodeType":"FunctionDefinition","src":"25337:1125:161","nodes":[],"body":{"id":78152,"nodeType":"Block","src":"25408:1054:161","nodes":[],"statements":[{"condition":{"id":78109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"25594:37:161","subExpression":{"arguments":[{"id":78107,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"25622:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":78106,"name":"_tryParseAndEmitSailsEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78363,"src":"25595:26:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$87597_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct Gear.Message calldata) returns (bool)"}},"id":78108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25595:36:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev First, we'll try to parse event from the Sails framework\n and then emit it on behalf of the `Mirror` smart contract.","id":78151,"nodeType":"IfStatement","src":"25590:866:161","trueBody":{"id":78150,"nodeType":"Block","src":"25633:823:161","statements":[{"condition":{"expression":{"id":78110,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"25901:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25910:4:161","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":87596,"src":"25901:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78138,"nodeType":"IfStatement","src":"25897:453:161","trueBody":{"id":78137,"nodeType":"Block","src":"25916:434:161","statements":[{"assignments":[78113,null],"declarations":[{"constant":false,"id":78113,"mutability":"mutable","name":"success","nameLocation":"25940:7:161","nodeType":"VariableDeclaration","scope":78137,"src":"25935:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78112,"name":"bool","nodeType":"ElementaryTypeName","src":"25935:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":78122,"initialValue":{"arguments":[{"expression":{"id":78119,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"25992:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26001:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"25992:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":78114,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"25952:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25961:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"25952:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25973:4:161","memberName":"call","nodeType":"MemberAccess","src":"25952:25:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":78117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25983:7:161","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"25952:39:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25952:57:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"25934:75:161"},{"condition":{"id":78124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26032:8:161","subExpression":{"id":78123,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78113,"src":"26033:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78136,"nodeType":"IfStatement","src":"26028:308:161","trueBody":{"id":78135,"nodeType":"Block","src":"26042:294:161","statements":[{"documentation":" @dev In case of failed call, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"expression":{"id":78126,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26239:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26248:2:161","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"26239:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78128,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26252:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26261:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"26252:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78130,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26274:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26283:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"26274:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78125,"name":"MessageCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"26221:17:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128)"}},"id":78132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26221:68:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78133,"nodeType":"EmitStatement","src":"26216:73:161"},{"functionReturnParameters":78105,"id":78134,"nodeType":"Return","src":"26311:7:161"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":78140,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26377:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26386:2:161","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"26377:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78142,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26390:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26399:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"26390:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78144,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26412:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26421:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"26412:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":78146,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78103,"src":"26430:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26439:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"26430:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78139,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74193,"src":"26369:7:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":78148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26369:76:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78149,"nodeType":"EmitStatement","src":"26364:81:161"}]}}]},"documentation":{"id":78100,"nodeType":"StructuredDocumentation","src":"24833:499:161","text":" @dev Internal function to send message that goes to mailbox.\n Value never sent since goes to mailbox.\n Emits `Message` event if it is not event from Sails framework.\n If `_message.call = true`, then call will be made to `_message.destination`\n with _message.payload and gas limit of 500_000 to prevent DoS attacks.\n If call fails, then `MessageCallFailed` event will be emitted.\n @param _message The message to be sent."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"25346:21:161","parameters":{"id":78104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78103,"mutability":"mutable","name":"_message","nameLocation":"25390:8:161","nodeType":"VariableDeclaration","scope":78153,"src":"25368:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78102,"nodeType":"UserDefinedTypeName","pathNode":{"id":78101,"name":"Gear.Message","nameLocations":["25368:4:161","25373:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"25368:12:161"},"referencedDeclaration":87597,"src":"25368:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"25367:32:161"},"returnParameters":{"id":78105,"nodeType":"ParameterList","parameters":[],"src":"25408:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78363,"nodeType":"FunctionDefinition","src":"29541:3845:161","nodes":[],"body":{"id":78362,"nodeType":"Block","src":"29645:3741:161","nodes":[],"statements":[{"assignments":[78163],"declarations":[{"constant":false,"id":78163,"mutability":"mutable","name":"payload","nameLocation":"29670:7:161","nodeType":"VariableDeclaration","scope":78362,"src":"29655:22:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":78162,"name":"bytes","nodeType":"ElementaryTypeName","src":"29655:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":78166,"initialValue":{"expression":{"id":78164,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78157,"src":"29680:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29689:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"29680:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"29655:41:161"},{"condition":{"id":78182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"29711:86:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":78170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78167,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78157,"src":"29713:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29722:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"29713:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":78169,"name":"ETH_EVENT_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77300,"src":"29737:14:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29713:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":78174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78171,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78157,"src":"29755:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29764:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"29755:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29773:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29755:19:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29713:61:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78176,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78163,"src":"29778:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29786:6:161","memberName":"length","nodeType":"MemberAccess","src":"29778:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29795:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29778:18:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29713:83:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78181,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29712:85:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78186,"nodeType":"IfStatement","src":"29707:129:161","trueBody":{"id":78185,"nodeType":"Block","src":"29799:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29820:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78161,"id":78184,"nodeType":"Return","src":"29813:12:161"}]}},{"assignments":[78188],"declarations":[{"constant":false,"id":78188,"mutability":"mutable","name":"topicsLength","nameLocation":"29854:12:161","nodeType":"VariableDeclaration","scope":78362,"src":"29846:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78187,"name":"uint256","nodeType":"ElementaryTypeName","src":"29846:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78189,"nodeType":"VariableDeclarationStatement","src":"29846:20:161"},{"AST":{"nativeSrc":"29901:224:161","nodeType":"YulBlock","src":"29901:224:161","statements":[{"nativeSrc":"30061:54:161","nodeType":"YulAssignment","src":"30061:54:161","value":{"arguments":[{"kind":"number","nativeSrc":"30081:3:161","nodeType":"YulLiteral","src":"30081:3:161","type":"","value":"248"},{"arguments":[{"name":"payload.offset","nativeSrc":"30099:14:161","nodeType":"YulIdentifier","src":"30099:14:161"}],"functionName":{"name":"calldataload","nativeSrc":"30086:12:161","nodeType":"YulIdentifier","src":"30086:12:161"},"nativeSrc":"30086:28:161","nodeType":"YulFunctionCall","src":"30086:28:161"}],"functionName":{"name":"shr","nativeSrc":"30077:3:161","nodeType":"YulIdentifier","src":"30077:3:161"},"nativeSrc":"30077:38:161","nodeType":"YulFunctionCall","src":"30077:38:161"},"variableNames":[{"name":"topicsLength","nativeSrc":"30061:12:161","nodeType":"YulIdentifier","src":"30061:12:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78163,"isOffset":true,"isSlot":false,"src":"30099:14:161","suffix":"offset","valueSize":1},{"declaration":78188,"isOffset":false,"isSlot":false,"src":"30061:12:161","valueSize":1}],"flags":["memory-safe"],"id":78190,"nodeType":"InlineAssembly","src":"29876:249:161"},{"condition":{"id":78199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30139:41:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78191,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"30141:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":78192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30157:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30141:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78194,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"30162:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"34","id":78195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30178:1:161","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30162:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30141:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30140:40:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78203,"nodeType":"IfStatement","src":"30135:84:161","trueBody":{"id":78202,"nodeType":"Block","src":"30182:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30203:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78161,"id":78201,"nodeType":"Return","src":"30196:12:161"}]}},{"assignments":[78205],"declarations":[{"constant":false,"id":78205,"mutability":"mutable","name":"topicsLengthInBytes","nameLocation":"30237:19:161","nodeType":"VariableDeclaration","scope":78362,"src":"30229:27:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78204,"name":"uint256","nodeType":"ElementaryTypeName","src":"30229:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78206,"nodeType":"VariableDeclarationStatement","src":"30229:27:161"},{"id":78215,"nodeType":"UncheckedBlock","src":"30266:78:161","statements":[{"expression":{"id":78213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78207,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78205,"src":"30290:19:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":78208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30312:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78209,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"30316:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":78210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30331:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"30316:17:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30312:21:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30290:43:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78214,"nodeType":"ExpressionStatement","src":"30290:43:161"}]},{"condition":{"id":78221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30358:40:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78216,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78163,"src":"30360:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30368:6:161","memberName":"length","nodeType":"MemberAccess","src":"30360:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":78218,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78205,"src":"30378:19:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30360:37:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30359:39:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78225,"nodeType":"IfStatement","src":"30354:83:161","trueBody":{"id":78224,"nodeType":"Block","src":"30400:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30421:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78161,"id":78223,"nodeType":"Return","src":"30414:12:161"}]}},{"assignments":[78228],"declarations":[{"constant":false,"id":78228,"mutability":"mutable","name":"topic1","nameLocation":"30540:6:161","nodeType":"VariableDeclaration","scope":78362,"src":"30532:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30532:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev We use offset 1 to skip `uint8 topicsLength`","id":78229,"nodeType":"VariableDeclarationStatement","src":"30532:14:161"},{"AST":{"nativeSrc":"30581:70:161","nodeType":"YulBlock","src":"30581:70:161","statements":[{"nativeSrc":"30595:46:161","nodeType":"YulAssignment","src":"30595:46:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"30622:14:161","nodeType":"YulIdentifier","src":"30622:14:161"},{"kind":"number","nativeSrc":"30638:1:161","nodeType":"YulLiteral","src":"30638:1:161","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"30618:3:161","nodeType":"YulIdentifier","src":"30618:3:161"},"nativeSrc":"30618:22:161","nodeType":"YulFunctionCall","src":"30618:22:161"}],"functionName":{"name":"calldataload","nativeSrc":"30605:12:161","nodeType":"YulIdentifier","src":"30605:12:161"},"nativeSrc":"30605:36:161","nodeType":"YulFunctionCall","src":"30605:36:161"},"variableNames":[{"name":"topic1","nativeSrc":"30595:6:161","nodeType":"YulIdentifier","src":"30595:6:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78163,"isOffset":true,"isSlot":false,"src":"30622:14:161","suffix":"offset","valueSize":1},{"declaration":78228,"isOffset":false,"isSlot":false,"src":"30595:6:161","valueSize":1}],"flags":["memory-safe"],"id":78230,"nodeType":"InlineAssembly","src":"30556:95:161"},{"condition":{"id":78301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"31207:763:161","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78231,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31222:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78232,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"31232:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":78233,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31245:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31232:21:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31222:31:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78235,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31269:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78236,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74154,"src":"31279:24:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128,bool)"}},"id":78237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31304:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31279:33:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31269:43:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:90:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78240,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31328:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78241,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74165,"src":"31338:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":78242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31361:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31338:31:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31328:41:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:147:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78245,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31385:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78246,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74172,"src":"31395:22:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":78247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31418:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31395:31:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31385:41:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:204:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78250,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31442:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78251,"name":"OwnedBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74177,"src":"31452:26:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":78252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31479:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31452:35:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31442:45:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:265:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78255,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31503:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78256,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"31513:31:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":78257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31545:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31513:40:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31503:50:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:331:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78260,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31569:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78261,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74193,"src":"31579:7:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":78262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31587:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31579:16:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31569:26:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:373:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78265,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31611:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78266,"name":"MessageCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"31621:17:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128)"}},"id":78267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31639:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31621:26:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31611:36:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:425:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78270,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31663:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78271,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74213,"src":"31673:5:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":78272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31679:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31673:14:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31663:24:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:465:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78275,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31703:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78276,"name":"ReplyCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74222,"src":"31713:15:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (uint128,bytes32,bytes4)"}},"id":78277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31729:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31713:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31703:34:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:515:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78280,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31753:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78281,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74229,"src":"31763:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31776:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31763:21:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31753:31:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:562:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78285,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31800:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78286,"name":"TransferLockedValueToInheritorFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74236,"src":"31810:36:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31847:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31810:45:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31800:55:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:633:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78290,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31871:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78291,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"31881:19:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31901:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31881:28:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31871:38:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:687:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":78298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78295,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78228,"src":"31925:6:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":78296,"name":"ValueClaimFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74250,"src":"31935:16:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31952:8:161","memberName":"selector","nodeType":"MemberAccess","src":"31935:25:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31925:35:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31222:738:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78300,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31208:762:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev SECURITY:\n Very important check because custom events can match our hashes!\n If we miss even 1 event that is emitted by Mirror, user will be able to fake protocol logic!\n Command to re-generate selectors check:\n ```bash\n grep -Po \" event\\s+\\K[^(]+\" ethexe/contracts/src/IMirror.sol | xargs -I{} echo \" topic1 != {}.selector &&\" | sed '$ s/ &&$//'\n ```","id":78305,"nodeType":"IfStatement","src":"31203:806:161","trueBody":{"id":78304,"nodeType":"Block","src":"31972:37:161","statements":[{"expression":{"hexValue":"66616c7365","id":78302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31993:5:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":78161,"id":78303,"nodeType":"Return","src":"31986:12:161"}]}},{"assignments":[78307],"declarations":[{"constant":false,"id":78307,"mutability":"mutable","name":"size","nameLocation":"32060:4:161","nodeType":"VariableDeclaration","scope":78362,"src":"32052:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78306,"name":"uint256","nodeType":"ElementaryTypeName","src":"32052:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78308,"nodeType":"VariableDeclarationStatement","src":"32052:12:161"},{"id":78316,"nodeType":"UncheckedBlock","src":"32074:78:161","statements":[{"expression":{"id":78314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78309,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78307,"src":"32098:4:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78310,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78163,"src":"32105:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32113:6:161","memberName":"length","nodeType":"MemberAccess","src":"32105:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78312,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78205,"src":"32122:19:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32105:36:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32098:43:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78315,"nodeType":"ExpressionStatement","src":"32098:43:161"}]},{"assignments":[78318],"declarations":[{"constant":false,"id":78318,"mutability":"mutable","name":"memPtr","nameLocation":"32170:6:161","nodeType":"VariableDeclaration","scope":78362,"src":"32162:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78317,"name":"uint256","nodeType":"ElementaryTypeName","src":"32162:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78323,"initialValue":{"arguments":[{"id":78321,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78307,"src":"32195:4:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78319,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"32179:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32186:8:161","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"32179:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":78322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32179:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32162:38:161"},{"AST":{"nativeSrc":"32235:92:161","nodeType":"YulBlock","src":"32235:92:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"32262:6:161","nodeType":"YulIdentifier","src":"32262:6:161"},{"arguments":[{"name":"payload.offset","nativeSrc":"32274:14:161","nodeType":"YulIdentifier","src":"32274:14:161"},{"name":"topicsLengthInBytes","nativeSrc":"32290:19:161","nodeType":"YulIdentifier","src":"32290:19:161"}],"functionName":{"name":"add","nativeSrc":"32270:3:161","nodeType":"YulIdentifier","src":"32270:3:161"},"nativeSrc":"32270:40:161","nodeType":"YulFunctionCall","src":"32270:40:161"},{"name":"size","nativeSrc":"32312:4:161","nodeType":"YulIdentifier","src":"32312:4:161"}],"functionName":{"name":"calldatacopy","nativeSrc":"32249:12:161","nodeType":"YulIdentifier","src":"32249:12:161"},"nativeSrc":"32249:68:161","nodeType":"YulFunctionCall","src":"32249:68:161"},"nativeSrc":"32249:68:161","nodeType":"YulExpressionStatement","src":"32249:68:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78318,"isOffset":false,"isSlot":false,"src":"32262:6:161","valueSize":1},{"declaration":78163,"isOffset":true,"isSlot":false,"src":"32274:14:161","suffix":"offset","valueSize":1},{"declaration":78307,"isOffset":false,"isSlot":false,"src":"32312:4:161","valueSize":1},{"declaration":78205,"isOffset":false,"isSlot":false,"src":"32290:19:161","valueSize":1}],"flags":["memory-safe"],"id":78324,"nodeType":"InlineAssembly","src":"32210:117:161"},{"assignments":[78327],"declarations":[{"constant":false,"id":78327,"mutability":"mutable","name":"topic2","nameLocation":"32482:6:161","nodeType":"VariableDeclaration","scope":78362,"src":"32474:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32474:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev We use offset 1 to skip `uint8 topicsLength`.\n Regular offsets: `32`, `64`, `96`.","id":78328,"nodeType":"VariableDeclarationStatement","src":"32474:14:161"},{"assignments":[78330],"declarations":[{"constant":false,"id":78330,"mutability":"mutable","name":"topic3","nameLocation":"32506:6:161","nodeType":"VariableDeclaration","scope":78362,"src":"32498:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32498:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78331,"nodeType":"VariableDeclarationStatement","src":"32498:14:161"},{"assignments":[78333],"declarations":[{"constant":false,"id":78333,"mutability":"mutable","name":"topic4","nameLocation":"32530:6:161","nodeType":"VariableDeclaration","scope":78362,"src":"32522:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32522:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78334,"nodeType":"VariableDeclarationStatement","src":"32522:14:161"},{"AST":{"nativeSrc":"32571:191:161","nodeType":"YulBlock","src":"32571:191:161","statements":[{"nativeSrc":"32585:47:161","nodeType":"YulAssignment","src":"32585:47:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"32612:14:161","nodeType":"YulIdentifier","src":"32612:14:161"},{"kind":"number","nativeSrc":"32628:2:161","nodeType":"YulLiteral","src":"32628:2:161","type":"","value":"33"}],"functionName":{"name":"add","nativeSrc":"32608:3:161","nodeType":"YulIdentifier","src":"32608:3:161"},"nativeSrc":"32608:23:161","nodeType":"YulFunctionCall","src":"32608:23:161"}],"functionName":{"name":"calldataload","nativeSrc":"32595:12:161","nodeType":"YulIdentifier","src":"32595:12:161"},"nativeSrc":"32595:37:161","nodeType":"YulFunctionCall","src":"32595:37:161"},"variableNames":[{"name":"topic2","nativeSrc":"32585:6:161","nodeType":"YulIdentifier","src":"32585:6:161"}]},{"nativeSrc":"32645:47:161","nodeType":"YulAssignment","src":"32645:47:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"32672:14:161","nodeType":"YulIdentifier","src":"32672:14:161"},{"kind":"number","nativeSrc":"32688:2:161","nodeType":"YulLiteral","src":"32688:2:161","type":"","value":"65"}],"functionName":{"name":"add","nativeSrc":"32668:3:161","nodeType":"YulIdentifier","src":"32668:3:161"},"nativeSrc":"32668:23:161","nodeType":"YulFunctionCall","src":"32668:23:161"}],"functionName":{"name":"calldataload","nativeSrc":"32655:12:161","nodeType":"YulIdentifier","src":"32655:12:161"},"nativeSrc":"32655:37:161","nodeType":"YulFunctionCall","src":"32655:37:161"},"variableNames":[{"name":"topic3","nativeSrc":"32645:6:161","nodeType":"YulIdentifier","src":"32645:6:161"}]},{"nativeSrc":"32705:47:161","nodeType":"YulAssignment","src":"32705:47:161","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"32732:14:161","nodeType":"YulIdentifier","src":"32732:14:161"},{"kind":"number","nativeSrc":"32748:2:161","nodeType":"YulLiteral","src":"32748:2:161","type":"","value":"97"}],"functionName":{"name":"add","nativeSrc":"32728:3:161","nodeType":"YulIdentifier","src":"32728:3:161"},"nativeSrc":"32728:23:161","nodeType":"YulFunctionCall","src":"32728:23:161"}],"functionName":{"name":"calldataload","nativeSrc":"32715:12:161","nodeType":"YulIdentifier","src":"32715:12:161"},"nativeSrc":"32715:37:161","nodeType":"YulFunctionCall","src":"32715:37:161"},"variableNames":[{"name":"topic4","nativeSrc":"32705:6:161","nodeType":"YulIdentifier","src":"32705:6:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78163,"isOffset":true,"isSlot":false,"src":"32612:14:161","suffix":"offset","valueSize":1},{"declaration":78163,"isOffset":true,"isSlot":false,"src":"32672:14:161","suffix":"offset","valueSize":1},{"declaration":78163,"isOffset":true,"isSlot":false,"src":"32732:14:161","suffix":"offset","valueSize":1},{"declaration":78327,"isOffset":false,"isSlot":false,"src":"32585:6:161","valueSize":1},{"declaration":78330,"isOffset":false,"isSlot":false,"src":"32645:6:161","valueSize":1},{"declaration":78333,"isOffset":false,"isSlot":false,"src":"32705:6:161","valueSize":1}],"flags":["memory-safe"],"id":78335,"nodeType":"InlineAssembly","src":"32546:216:161"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78336,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"32776:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":78337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32792:1:161","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32776:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78341,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"32912:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":78342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32928:1:161","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32912:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78346,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"33056:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":78347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33072:1:161","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"33056:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78351,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78188,"src":"33208:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"34","id":78352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33224:1:161","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"33208:17:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78356,"nodeType":"IfStatement","src":"33204:154:161","trueBody":{"id":78355,"nodeType":"Block","src":"33227:131:161","statements":[{"AST":{"nativeSrc":"33266:82:161","nodeType":"YulBlock","src":"33266:82:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"33289:6:161","nodeType":"YulIdentifier","src":"33289:6:161"},{"name":"size","nativeSrc":"33297:4:161","nodeType":"YulIdentifier","src":"33297:4:161"},{"name":"topic1","nativeSrc":"33303:6:161","nodeType":"YulIdentifier","src":"33303:6:161"},{"name":"topic2","nativeSrc":"33311:6:161","nodeType":"YulIdentifier","src":"33311:6:161"},{"name":"topic3","nativeSrc":"33319:6:161","nodeType":"YulIdentifier","src":"33319:6:161"},{"name":"topic4","nativeSrc":"33327:6:161","nodeType":"YulIdentifier","src":"33327:6:161"}],"functionName":{"name":"log4","nativeSrc":"33284:4:161","nodeType":"YulIdentifier","src":"33284:4:161"},"nativeSrc":"33284:50:161","nodeType":"YulFunctionCall","src":"33284:50:161"},"nativeSrc":"33284:50:161","nodeType":"YulExpressionStatement","src":"33284:50:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78318,"isOffset":false,"isSlot":false,"src":"33289:6:161","valueSize":1},{"declaration":78307,"isOffset":false,"isSlot":false,"src":"33297:4:161","valueSize":1},{"declaration":78228,"isOffset":false,"isSlot":false,"src":"33303:6:161","valueSize":1},{"declaration":78327,"isOffset":false,"isSlot":false,"src":"33311:6:161","valueSize":1},{"declaration":78330,"isOffset":false,"isSlot":false,"src":"33319:6:161","valueSize":1},{"declaration":78333,"isOffset":false,"isSlot":false,"src":"33327:6:161","valueSize":1}],"flags":["memory-safe"],"id":78354,"nodeType":"InlineAssembly","src":"33241:107:161"}]}},"id":78357,"nodeType":"IfStatement","src":"33052:306:161","trueBody":{"id":78350,"nodeType":"Block","src":"33075:123:161","statements":[{"AST":{"nativeSrc":"33114:74:161","nodeType":"YulBlock","src":"33114:74:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"33137:6:161","nodeType":"YulIdentifier","src":"33137:6:161"},{"name":"size","nativeSrc":"33145:4:161","nodeType":"YulIdentifier","src":"33145:4:161"},{"name":"topic1","nativeSrc":"33151:6:161","nodeType":"YulIdentifier","src":"33151:6:161"},{"name":"topic2","nativeSrc":"33159:6:161","nodeType":"YulIdentifier","src":"33159:6:161"},{"name":"topic3","nativeSrc":"33167:6:161","nodeType":"YulIdentifier","src":"33167:6:161"}],"functionName":{"name":"log3","nativeSrc":"33132:4:161","nodeType":"YulIdentifier","src":"33132:4:161"},"nativeSrc":"33132:42:161","nodeType":"YulFunctionCall","src":"33132:42:161"},"nativeSrc":"33132:42:161","nodeType":"YulExpressionStatement","src":"33132:42:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78318,"isOffset":false,"isSlot":false,"src":"33137:6:161","valueSize":1},{"declaration":78307,"isOffset":false,"isSlot":false,"src":"33145:4:161","valueSize":1},{"declaration":78228,"isOffset":false,"isSlot":false,"src":"33151:6:161","valueSize":1},{"declaration":78327,"isOffset":false,"isSlot":false,"src":"33159:6:161","valueSize":1},{"declaration":78330,"isOffset":false,"isSlot":false,"src":"33167:6:161","valueSize":1}],"flags":["memory-safe"],"id":78349,"nodeType":"InlineAssembly","src":"33089:99:161"}]}},"id":78358,"nodeType":"IfStatement","src":"32908:450:161","trueBody":{"id":78345,"nodeType":"Block","src":"32931:115:161","statements":[{"AST":{"nativeSrc":"32970:66:161","nodeType":"YulBlock","src":"32970:66:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"32993:6:161","nodeType":"YulIdentifier","src":"32993:6:161"},{"name":"size","nativeSrc":"33001:4:161","nodeType":"YulIdentifier","src":"33001:4:161"},{"name":"topic1","nativeSrc":"33007:6:161","nodeType":"YulIdentifier","src":"33007:6:161"},{"name":"topic2","nativeSrc":"33015:6:161","nodeType":"YulIdentifier","src":"33015:6:161"}],"functionName":{"name":"log2","nativeSrc":"32988:4:161","nodeType":"YulIdentifier","src":"32988:4:161"},"nativeSrc":"32988:34:161","nodeType":"YulFunctionCall","src":"32988:34:161"},"nativeSrc":"32988:34:161","nodeType":"YulExpressionStatement","src":"32988:34:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78318,"isOffset":false,"isSlot":false,"src":"32993:6:161","valueSize":1},{"declaration":78307,"isOffset":false,"isSlot":false,"src":"33001:4:161","valueSize":1},{"declaration":78228,"isOffset":false,"isSlot":false,"src":"33007:6:161","valueSize":1},{"declaration":78327,"isOffset":false,"isSlot":false,"src":"33015:6:161","valueSize":1}],"flags":["memory-safe"],"id":78344,"nodeType":"InlineAssembly","src":"32945:91:161"}]}},"id":78359,"nodeType":"IfStatement","src":"32772:586:161","trueBody":{"id":78340,"nodeType":"Block","src":"32795:107:161","statements":[{"AST":{"nativeSrc":"32834:58:161","nodeType":"YulBlock","src":"32834:58:161","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"32857:6:161","nodeType":"YulIdentifier","src":"32857:6:161"},{"name":"size","nativeSrc":"32865:4:161","nodeType":"YulIdentifier","src":"32865:4:161"},{"name":"topic1","nativeSrc":"32871:6:161","nodeType":"YulIdentifier","src":"32871:6:161"}],"functionName":{"name":"log1","nativeSrc":"32852:4:161","nodeType":"YulIdentifier","src":"32852:4:161"},"nativeSrc":"32852:26:161","nodeType":"YulFunctionCall","src":"32852:26:161"},"nativeSrc":"32852:26:161","nodeType":"YulExpressionStatement","src":"32852:26:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78318,"isOffset":false,"isSlot":false,"src":"32857:6:161","valueSize":1},{"declaration":78307,"isOffset":false,"isSlot":false,"src":"32865:4:161","valueSize":1},{"declaration":78228,"isOffset":false,"isSlot":false,"src":"32871:6:161","valueSize":1}],"flags":["memory-safe"],"id":78339,"nodeType":"InlineAssembly","src":"32809:83:161"}]}},{"expression":{"hexValue":"74727565","id":78360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33375:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":78161,"id":78361,"nodeType":"Return","src":"33368:11:161"}]},"documentation":{"id":78154,"nodeType":"StructuredDocumentation","src":"26468:3068:161","text":" @dev Tries to parse an event from the Sails framework and emit it in Solidity notation.\n User writes WASM smart contract on Sails framework called \"Counter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n Example of defining Solidity events in WASM contract based on Sails framework:\n ```rust\n #[event]\n #[derive(Clone, Debug, PartialEq, Encode, TypeInfo)]\n #[codec(crate = scale_codec)]\n #[scale_info(crate = scale_info)]\n pub enum CounterEvents {\n Added {\n #[indexed]\n source: ActorId,\n value: u32,\n },\n }\n ```\n User also generates \"Solidity ABI interface\" that allows services like Etherscan to decode events from `Mirror`\n (since we use the ABI interface as \"proxy implementation\"):\n ```solidity\n interface ICounter {\n event Added(address indexed source, uint32 value);\n // ... other events\n }\n ```\n Now let's imagine that the user wants to calculate something in WASM contract and send it to Ethereum as event,\n which will then be emitted by `Mirror` smart contract as showed on services like Etherscan:\n ```rust\n #[service(events = CounterEvents)]\n impl CounterService<'_> {\n #[export]\n pub fn add(&mut self, value: u32) -> u32 {\n let mut data_mut = self.data.borrow_mut();\n data_mut.counter = data_mut.counter.checked_add(value).expect(\"failed to add\");\n let source = Syscall::message_source();\n self.emit_eth_event(CounterEvents::Added { source, value })\n .expect(\"failed to emit eth event\");\n data_mut.counter\n }\n }\n ```\n All the `emit_eth_event` method in the Sails framework does is call the syscall\n `gcore::msg::send(destination=ETH_EVENT_ADDR, payload, value=0)`, where `payload`\n is encoded in Solidity notation as described below.\n Format in which the Sails framework sends events:\n - `uint8 topicsLength` (can be `1`, `2`, `3`, `4`).\n specifies which opcode (`log1`, `log2`, `log3`, `log4`) should be called.\n - `bytes32 topic1` (required)\n should never match our event selectors!\n - `bytes32 topic2` (optional)\n - `bytes32 topic3` (optional)\n - `bytes32 topic4` (optional)\n - `bytes payload` (optional)\n contains encoded data of event in form of `abi.encode(...)`.\n @param _message The message to be parsed and emitted as Solidity event.\n @return isSailsEvent `true` in case of success and `false` in case of error (no matching event found)."},"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseAndEmitSailsEvent","nameLocation":"29550:26:161","parameters":{"id":78158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78157,"mutability":"mutable","name":"_message","nameLocation":"29599:8:161","nodeType":"VariableDeclaration","scope":78363,"src":"29577:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78156,"nodeType":"UserDefinedTypeName","pathNode":{"id":78155,"name":"Gear.Message","nameLocations":["29577:4:161","29582:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"29577:12:161"},"referencedDeclaration":87597,"src":"29577:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"29576:32:161"},"returnParameters":{"id":78161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78160,"mutability":"mutable","name":"isSailsEvent","nameLocation":"29631:12:161","nodeType":"VariableDeclaration","scope":78363,"src":"29626:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78159,"name":"bool","nodeType":"ElementaryTypeName","src":"29626:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29625:19:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78494,"nodeType":"FunctionDefinition","src":"39353:1645:161","nodes":[],"body":{"id":78493,"nodeType":"Block","src":"39420:1578:161","nodes":[],"statements":[{"condition":{"expression":{"id":78370,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"39434:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39443:4:161","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":87596,"src":"39434:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78491,"nodeType":"Block","src":"40649:343:161","statements":[{"assignments":[78459],"declarations":[{"constant":false,"id":78459,"mutability":"mutable","name":"transferSuccess","nameLocation":"40668:15:161","nodeType":"VariableDeclaration","scope":78491,"src":"40663:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78458,"name":"bool","nodeType":"ElementaryTypeName","src":"40663:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78466,"initialValue":{"arguments":[{"expression":{"id":78461,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40701:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40710:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40701:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78463,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40723:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40732:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40723:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78460,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"40686:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":78465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40686:52:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"40663:75:161"},{"condition":{"id":78468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40756:16:161","subExpression":{"id":78467,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78459,"src":"40757:15:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78477,"nodeType":"IfStatement","src":"40752:117:161","trueBody":{"id":78476,"nodeType":"Block","src":"40774:95:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78470,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40817:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40826:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40817:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78472,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40839:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40848:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40839:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78469,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"40797:19:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40797:57:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78475,"nodeType":"EmitStatement","src":"40792:62:161"}]}},{"eventCall":{"arguments":[{"expression":{"id":78479,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40894:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40903:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"40894:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":78481,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40912:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40921:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40912:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":78483,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40928:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40937:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40928:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40950:2:161","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"40928:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":78486,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40954:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40963:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40954:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40976:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"40954:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":78478,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74213,"src":"40888:5:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":78489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40888:93:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78490,"nodeType":"EmitStatement","src":"40883:98:161"}]},"id":78492,"nodeType":"IfStatement","src":"39430:1562:161","trueBody":{"id":78457,"nodeType":"Block","src":"39449:1194:161","statements":[{"assignments":[78373],"declarations":[{"constant":false,"id":78373,"mutability":"mutable","name":"isSuccessReply","nameLocation":"39468:14:161","nodeType":"VariableDeclaration","scope":78457,"src":"39463:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78372,"name":"bool","nodeType":"ElementaryTypeName","src":"39463:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78381,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":78380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":78374,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"39485:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39494:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"39485:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39507:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"39485:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":78378,"indexExpression":{"hexValue":"30","id":78377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39512:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39485:29:161","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39518:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39485:34:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"39463:56:161"},{"assignments":[78383],"declarations":[{"constant":false,"id":78383,"mutability":"mutable","name":"payload","nameLocation":"39547:7:161","nodeType":"VariableDeclaration","scope":78457,"src":"39534:20:161","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":78382,"name":"bytes","nodeType":"ElementaryTypeName","src":"39534:5:161","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":78384,"nodeType":"VariableDeclarationStatement","src":"39534:20:161"},{"condition":{"id":78385,"name":"isSuccessReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78373,"src":"39573:14:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78408,"nodeType":"Block","src":"39654:348:161","statements":[{"expression":{"id":78406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78392,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78383,"src":"39824:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":78395,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73742,"src":"39878:10:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICallbacks_$73742_$","typeString":"type(contract ICallbacks)"}},"id":78396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39889:12:161","memberName":"onErrorReply","nodeType":"MemberAccess","referencedDeclaration":73741,"src":"39878:23:161","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_bytes32_$_t_bytes_calldata_ptr_$_t_bytes4_$returns$__$","typeString":"function ICallbacks.onErrorReply(bytes32,bytes calldata,bytes4) payable"}},"id":78397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39902:8:161","memberName":"selector","nodeType":"MemberAccess","src":"39878:32:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":78398,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"39912:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39921:2:161","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"39912:11:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78400,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"39925:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39934:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"39925:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":78402,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"39943:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39952:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"39943:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39965:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"39943:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":78393,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"39834:3:161","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":78394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39838:18:161","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"39834:22:161","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":78405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39834:153:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"39824:163:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":78407,"nodeType":"ExpressionStatement","src":"39824:163:161"}]},"id":78409,"nodeType":"IfStatement","src":"39569:433:161","trueBody":{"id":78391,"nodeType":"Block","src":"39589:59:161","statements":[{"expression":{"id":78389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78386,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78383,"src":"39607:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":78387,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"39617:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39626:7:161","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"39617:16:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"39607:26:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":78390,"nodeType":"ExpressionStatement","src":"39607:26:161"}]}},{"assignments":[78411,null],"declarations":[{"constant":false,"id":78411,"mutability":"mutable","name":"success","nameLocation":"40022:7:161","nodeType":"VariableDeclaration","scope":78457,"src":"40017:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78410,"name":"bool","nodeType":"ElementaryTypeName","src":"40017:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":78421,"initialValue":{"arguments":[{"id":78419,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78383,"src":"40097:7:161","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"id":78412,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40034:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40043:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40034:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40055:4:161","memberName":"call","nodeType":"MemberAccess","src":"40034:25:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas","value"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":78415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40065:7:161","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"},{"expression":{"id":78416,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40081:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40090:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40081:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"40034:62:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gasvalue","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40034:71:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"40016:89:161"},{"condition":{"id":78423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40124:8:161","subExpression":{"id":78422,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78411,"src":"40125:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78456,"nodeType":"IfStatement","src":"40120:513:161","trueBody":{"id":78455,"nodeType":"Block","src":"40134:499:161","statements":[{"assignments":[78425],"declarations":[{"constant":false,"id":78425,"mutability":"mutable","name":"transferSuccess","nameLocation":"40157:15:161","nodeType":"VariableDeclaration","scope":78455,"src":"40152:20:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78424,"name":"bool","nodeType":"ElementaryTypeName","src":"40152:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78432,"initialValue":{"arguments":[{"expression":{"id":78427,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40190:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40199:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40190:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78429,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40212:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40221:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40212:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78426,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"40175:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":78431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40175:52:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"40152:75:161"},{"condition":{"id":78434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40249:16:161","subExpression":{"id":78433,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78425,"src":"40250:15:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78443,"nodeType":"IfStatement","src":"40245:125:161","trueBody":{"id":78442,"nodeType":"Block","src":"40267:103:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78436,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40314:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40323:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40314:20:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78438,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40336:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40345:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40336:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78435,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"40294:19:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40294:57:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78441,"nodeType":"EmitStatement","src":"40289:62:161"}]}},{"documentation":" @dev In case of failed call, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"expression":{"id":78445,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40549:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40558:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40549:14:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":78447,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40565:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40574:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40565:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40587:2:161","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"40565:24:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":78450,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78367,"src":"40591:8:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":78451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40600:12:161","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40591:21:161","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":78452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40613:4:161","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"40591:26:161","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":78444,"name":"ReplyCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74222,"src":"40533:15:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (uint128,bytes32,bytes4)"}},"id":78453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40533:85:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78454,"nodeType":"EmitStatement","src":"40528:90:161"}]}}]}}]},"documentation":{"id":78364,"nodeType":"StructuredDocumentation","src":"33392:5956:161","text":" @dev Internal function to send reply message.\n Non-zero value always sent since never goes to mailbox.\n Emits `Reply` event if `_message.call = false`.\n If `_message.call = true`, the call will be made to `_message.destination` with\n gas limit of 500_000 to prevent DoS attacks and with `_message.value`.\n The `_message.replyDetails` will also be evaluated to determine the reply's success.\n If `gear_core::message::ReplyCode` is successful, `_message.payload` will be used.\n If unsuccessful, `payload = ICallbacks.onErrorReply(_message.id, _message.payload, _message.replyDetails.code)`\n will be used and the appropriate method on `_message.destination` will be called.\n Function will also always attempt to send `_message.value`. If this fails for some reason,\n the `ReplyTransferFailed` event will be emitted.\n If call fails, then `ReplyCallFailed` event will be emitted.\n User writes WASM smart contract on Sails framework called \"Counter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n All the contract method does is return `u32` as result (reply):\n ```rust\n #[service(events = CounterEvents)]\n impl CounterService<'_> {\n #[export]\n pub fn add(&mut self, value: u32) -> u32 {\n let mut data_mut = self.data.borrow_mut();\n data_mut.counter = data_mut.counter.checked_add(value).expect(\"failed to add\");\n let source = Syscall::message_source();\n self.emit_eth_event(CounterEvents::Added { source, value })\n .expect(\"failed to emit eth event\");\n data_mut.counter\n }\n }\n User also generates \"Solidity ABI Interface\" to allow incrementing counter or calling other methods within WASM smart contract.\n Next, we assume user uploads `CounterAbi` smart contract to Ethereum:\n ```solidity\n interface ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId);\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId);\n // ... other methods\n }\n contract CounterAbi is ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {}\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {}\n }\n ```\n User also generates \"Solidity Callback Interface\" and implements own `CounterCaller` smart contract,\n which will handle reply hooks in methods starting with `replyOn_`:\n ```solidity\n interface ICounterCallbacks {\n function replyOn_init(bytes32 messageId) external;\n function replyOn_counterAdd(bytes32 messageId, uint32 reply) external;\n // ... other methods\n function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode) external payable;\n }\n contract CounterCaller is ICounterCallbacks {\n ICounter public immutable MIRROR;\n constructor(ICounter _mirror) {\n MIRROR = _mirror;\n }\n modifier onlyMirror() {\n _onlyMirror();\n _;\n }\n function _onlyMirror() internal view {\n require(msg.sender == address(MIRROR));\n }\n // Call `Counter` constructor on our platform\n function init(uint32 counter) external {\n // `bool _callReply = true`\n bytes32 _messageId = MIRROR.init(true, counter);\n }\n function replyOn_init(bytes32 messageId) external onlyMirror {\n // ...\n }\n // Compute `Counter.add(uint32 value) -> uint32 reply` on our platform\n mapping(bytes32 messageId => bool knownMessage) public counterAddInputs;\n mapping(bytes32 messageId => uint32 output) public counterAddResults;\n function counterAdd(uint32 value) external returns (bytes32 messageId) {\n // `bool _callReply = true`\n bytes32 _messageId = MIRROR.counterAdd(true, value);\n counterAddInputs[_messageId] = true;\n messageId = _messageId;\n }\n function replyOn_counterAdd(bytes32 messageId, uint32 reply) external onlyMirror {\n counterAddResults[messageId] = reply;\n }\n // Handle `Counter` errors on our platform\n event ErrorReply(bytes32 messageId, bytes payload, bytes4 replyCode);\n function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode)\n external\n payable\n onlyMirror\n {\n emit ErrorReply(messageId, payload, replyCode);\n }\n }\n ```\n User calls `CounterCaller.counterAdd(uint32 value)`, and the smart contract calls `ICounter.counterAdd(bool _callReply=true, uint32 value)`.\n Result calculated in WASM smart contract on Sails framework in `Counter.add(uint32 value) -> uint32 reply` method will be passed to\n `replyOn_counterAdd(bytes32 messageId, uint32 reply)`.\n @param _message The reply message to be sent."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"39362:17:161","parameters":{"id":78368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78367,"mutability":"mutable","name":"_message","nameLocation":"39402:8:161","nodeType":"VariableDeclaration","scope":78494,"src":"39380:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":78366,"nodeType":"UserDefinedTypeName","pathNode":{"id":78365,"name":"Gear.Message","nameLocations":["39380:4:161","39385:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"39380:12:161"},"referencedDeclaration":87597,"src":"39380:12:161","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"39379:32:161"},"returnParameters":{"id":78369,"nodeType":"ParameterList","parameters":[],"src":"39420:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78607,"nodeType":"FunctionDefinition","src":"41536:1028:161","nodes":[],"body":{"id":78606,"nodeType":"Block","src":"41631:933:161","nodes":[],"statements":[{"assignments":[78505],"declarations":[{"constant":false,"id":78505,"mutability":"mutable","name":"claimsLen","nameLocation":"41649:9:161","nodeType":"VariableDeclaration","scope":78606,"src":"41641:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78504,"name":"uint256","nodeType":"ElementaryTypeName","src":"41641:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78508,"initialValue":{"expression":{"id":78506,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78499,"src":"41661:7:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":78507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41669:6:161","memberName":"length","nodeType":"MemberAccess","src":"41661:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41641:34:161"},{"assignments":[78510],"declarations":[{"constant":false,"id":78510,"mutability":"mutable","name":"claimsHashesSize","nameLocation":"41693:16:161","nodeType":"VariableDeclaration","scope":78606,"src":"41685:24:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78509,"name":"uint256","nodeType":"ElementaryTypeName","src":"41685:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78514,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78511,"name":"claimsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78505,"src":"41712:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":78512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41724:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"41712:14:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41685:41:161"},{"assignments":[78516],"declarations":[{"constant":false,"id":78516,"mutability":"mutable","name":"claimsHashesMemPtr","nameLocation":"41744:18:161","nodeType":"VariableDeclaration","scope":78606,"src":"41736:26:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78515,"name":"uint256","nodeType":"ElementaryTypeName","src":"41736:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78521,"initialValue":{"arguments":[{"id":78519,"name":"claimsHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78510,"src":"41781:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78517,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41765:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41772:8:161","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"41765:15:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":78520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41765:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41736:62:161"},{"assignments":[78523],"declarations":[{"constant":false,"id":78523,"mutability":"mutable","name":"offset","nameLocation":"41816:6:161","nodeType":"VariableDeclaration","scope":78606,"src":"41808:14:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78522,"name":"uint256","nodeType":"ElementaryTypeName","src":"41808:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78525,"initialValue":{"hexValue":"30","id":78524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41825:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41808:18:161"},{"body":{"id":78597,"nodeType":"Block","src":"41877:588:161","statements":[{"assignments":[78540],"declarations":[{"constant":false,"id":78540,"mutability":"mutable","name":"claim","nameLocation":"41916:5:161","nodeType":"VariableDeclaration","scope":78597,"src":"41891:30:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":78539,"nodeType":"UserDefinedTypeName","pathNode":{"id":78538,"name":"Gear.ValueClaim","nameLocations":["41891:4:161","41896:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":87703,"src":"41891:15:161"},"referencedDeclaration":87703,"src":"41891:15:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":78544,"initialValue":{"baseExpression":{"id":78541,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78499,"src":"41924:7:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":78543,"indexExpression":{"id":78542,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78527,"src":"41932:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41924:10:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"41891:43:161"},{"assignments":[78546],"declarations":[{"constant":false,"id":78546,"mutability":"mutable","name":"claimHash","nameLocation":"41956:9:161","nodeType":"VariableDeclaration","scope":78597,"src":"41948:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41948:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78556,"initialValue":{"arguments":[{"expression":{"id":78549,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"41988:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41994:9:161","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":87698,"src":"41988:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78551,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42005:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42011:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87700,"src":"42005:17:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78553,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42024:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42030:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42024:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":78547,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41968:4:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":78548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41973:14:161","memberName":"valueClaimHash","nodeType":"MemberAccess","referencedDeclaration":87902,"src":"41968:19:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$_t_uint128_$returns$_t_bytes32_$","typeString":"function (bytes32,address,uint128) pure returns (bytes32)"}},"id":78555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41968:68:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"41948:88:161"},{"expression":{"arguments":[{"id":78560,"name":"claimsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78516,"src":"42076:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78561,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78523,"src":"42096:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78562,"name":"claimHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78546,"src":"42104:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":78557,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"42050:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":78559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42057:18:161","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"42050:25:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":78563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42050:64:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78564,"nodeType":"ExpressionStatement","src":"42050:64:161"},{"id":78569,"nodeType":"UncheckedBlock","src":"42128:55:161","statements":[{"expression":{"id":78567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78565,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78523,"src":"42156:6:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":78566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42166:2:161","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"42156:12:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78568,"nodeType":"ExpressionStatement","src":"42156:12:161"}]},{"assignments":[78571],"declarations":[{"constant":false,"id":78571,"mutability":"mutable","name":"success","nameLocation":"42202:7:161","nodeType":"VariableDeclaration","scope":78597,"src":"42197:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78570,"name":"bool","nodeType":"ElementaryTypeName","src":"42197:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":78578,"initialValue":{"arguments":[{"expression":{"id":78573,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42227:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42233:11:161","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87700,"src":"42227:17:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78575,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42246:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42252:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42246:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78572,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"42212:14:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":78577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42212:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"42197:61:161"},{"condition":{"id":78579,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78571,"src":"42276:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78595,"nodeType":"Block","src":"42371:84:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78589,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42411:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42417:9:161","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":87698,"src":"42411:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78591,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42428:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42434:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42428:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78588,"name":"ValueClaimFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74250,"src":"42394:16:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42394:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78594,"nodeType":"EmitStatement","src":"42389:51:161"}]},"id":78596,"nodeType":"IfStatement","src":"42272:183:161","trueBody":{"id":78587,"nodeType":"Block","src":"42285:80:161","statements":[{"eventCall":{"arguments":[{"expression":{"id":78581,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42321:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42327:9:161","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":87698,"src":"42321:15:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":78583,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78540,"src":"42338:5:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":78584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42344:5:161","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42338:11:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78580,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74229,"src":"42308:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":78585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42308:42:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78586,"nodeType":"EmitStatement","src":"42303:47:161"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78530,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78527,"src":"41857:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":78531,"name":"claimsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78505,"src":"41861:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41857:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78598,"initializationExpression":{"assignments":[78527],"declarations":[{"constant":false,"id":78527,"mutability":"mutable","name":"i","nameLocation":"41850:1:161","nodeType":"VariableDeclaration","scope":78598,"src":"41842:9:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78526,"name":"uint256","nodeType":"ElementaryTypeName","src":"41842:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78529,"initialValue":{"hexValue":"30","id":78528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41854:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41842:13:161"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":78534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41872:3:161","subExpression":{"id":78533,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78527,"src":"41872:1:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78535,"nodeType":"ExpressionStatement","src":"41872:3:161"},"nodeType":"ForStatement","src":"41837:628:161"},{"expression":{"arguments":[{"id":78601,"name":"claimsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78516,"src":"42517:18:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":78602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42537:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":78603,"name":"claimsHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78510,"src":"42540:16:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78599,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"42482:6:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":78600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42489:27:161","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"42482:34:161","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":78604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42482:75:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":78503,"id":78605,"nodeType":"Return","src":"42475:82:161"}]},"documentation":{"id":78495,"nodeType":"StructuredDocumentation","src":"41103:428:161","text":" @dev Internal function to claim values from messages in mailbox.\n It transfers value to each claim destination and emits appropriate events:\n - `ValueClaimed` event is emitted if transfer is successful\n - `ValueClaimFailed` event is emitted if transfer fails\n @param _claims The array of value claims to be claimed.\n @return claimsHash The hash of the claimed values."},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"41545:12:161","parameters":{"id":78500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78499,"mutability":"mutable","name":"_claims","nameLocation":"41585:7:161","nodeType":"VariableDeclaration","scope":78607,"src":"41558:34:161","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":78497,"nodeType":"UserDefinedTypeName","pathNode":{"id":78496,"name":"Gear.ValueClaim","nameLocations":["41558:4:161","41563:10:161"],"nodeType":"IdentifierPath","referencedDeclaration":87703,"src":"41558:15:161"},"referencedDeclaration":87703,"src":"41558:15:161","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":78498,"nodeType":"ArrayTypeName","src":"41558:17:161","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"41557:36:161"},"returnParameters":{"id":78503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78502,"mutability":"mutable","name":"claimsHash","nameLocation":"41619:10:161","nodeType":"VariableDeclaration","scope":78607,"src":"41611:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78501,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41611:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"41610:20:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78640,"nodeType":"FunctionDefinition","src":"42830:586:161","nodes":[],"body":{"id":78639,"nodeType":"Block","src":"42894:522:161","nodes":[],"statements":[{"documentation":" @dev Set inheritor.","expression":{"id":78617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78615,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77312,"src":"42959:6:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":78616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42968:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"42959:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78618,"nodeType":"ExpressionStatement","src":"42959:13:161"},{"expression":{"id":78621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78619,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77315,"src":"42982:9:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78620,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78610,"src":"42994:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42982:22:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78622,"nodeType":"ExpressionStatement","src":"42982:22:161"},{"assignments":[78624,78626],"declarations":[{"constant":false,"id":78624,"mutability":"mutable","name":"value","nameLocation":"43113:5:161","nodeType":"VariableDeclaration","scope":78639,"src":"43105:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78623,"name":"uint128","nodeType":"ElementaryTypeName","src":"43105:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":78626,"mutability":"mutable","name":"success","nameLocation":"43125:7:161","nodeType":"VariableDeclaration","scope":78639,"src":"43120:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78625,"name":"bool","nodeType":"ElementaryTypeName","src":"43120:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"documentation":" @dev Transfer all available balance to the inheritor.","id":78629,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78627,"name":"_transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78001,"src":"43136:31:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint128_$_t_bool_$","typeString":"function () returns (uint128,bool)"}},"id":78628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43136:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"nodeType":"VariableDeclarationStatement","src":"43104:65:161"},{"condition":{"id":78631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"43183:8:161","subExpression":{"id":78630,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78626,"src":"43184:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78638,"nodeType":"IfStatement","src":"43179:231:161","trueBody":{"id":78637,"nodeType":"Block","src":"43193:217:161","statements":[{"documentation":" @dev In case of failed transfer, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"id":78633,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78610,"src":"43381:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":78634,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78624,"src":"43393:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78632,"name":"TransferLockedValueToInheritorFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74236,"src":"43344:36:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":78635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43344:55:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78636,"nodeType":"EmitStatement","src":"43339:60:161"}]}}]},"documentation":{"id":78608,"nodeType":"StructuredDocumentation","src":"42627:198:161","text":" @dev Sets the inheritor address, sets exited flag to `true` and\n transfer all available balance to the inheritor.\n @param _inheritor The address of the inheritor."},"implemented":true,"kind":"function","modifiers":[{"id":78613,"kind":"modifierInvocation","modifierName":{"id":78612,"name":"onlyIfActive","nameLocations":["42881:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":77433,"src":"42881:12:161"},"nodeType":"ModifierInvocation","src":"42881:12:161"}],"name":"_setInheritor","nameLocation":"42839:13:161","parameters":{"id":78611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78610,"mutability":"mutable","name":"_inheritor","nameLocation":"42861:10:161","nodeType":"VariableDeclaration","scope":78640,"src":"42853:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78609,"name":"address","nodeType":"ElementaryTypeName","src":"42853:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"42852:20:161"},"returnParameters":{"id":78614,"nodeType":"ParameterList","parameters":[],"src":"42894:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78655,"nodeType":"FunctionDefinition","src":"43519:281:161","nodes":[],"body":{"id":78654,"nodeType":"Block","src":"43573:227:161","nodes":[],"statements":[{"documentation":" @dev Set state hash.","expression":{"id":78648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78646,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77306,"src":"43639:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78647,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78643,"src":"43651:10:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"43639:22:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":78649,"nodeType":"ExpressionStatement","src":"43639:22:161"},{"documentation":" @dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":78651,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77306,"src":"43783:9:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":78650,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"43770:12:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":78652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43770:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78653,"nodeType":"EmitStatement","src":"43765:28:161"}]},"documentation":{"id":78641,"nodeType":"StructuredDocumentation","src":"43422:92:161","text":" @dev Updates the state hash.\n @param _stateHash The new state hash."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"43528:16:161","parameters":{"id":78644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78643,"mutability":"mutable","name":"_stateHash","nameLocation":"43553:10:161","nodeType":"VariableDeclaration","scope":78655,"src":"43545:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43545:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"43544:20:161"},"returnParameters":{"id":78645,"nodeType":"ParameterList","parameters":[],"src":"43573:0:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78677,"nodeType":"FunctionDefinition","src":"43974:182:161","nodes":[],"body":{"id":78676,"nodeType":"Block","src":"44046:110:161","nodes":[],"statements":[{"assignments":[78665],"declarations":[{"constant":false,"id":78665,"mutability":"mutable","name":"wvaraAddr","nameLocation":"44064:9:161","nodeType":"VariableDeclaration","scope":78676,"src":"44056:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78664,"name":"address","nodeType":"ElementaryTypeName","src":"44056:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":78671,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":78667,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78658,"src":"44084:10:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78666,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"44076:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$74985_$","typeString":"type(contract IRouter)"}},"id":78668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44076:19:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":78669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44096:11:161","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":74679,"src":"44076:31:161","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":78670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44076:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44056:53:161"},{"expression":{"arguments":[{"id":78673,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78665,"src":"44139:9:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78672,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"44126:12:161","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":78674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44126:23:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"functionReturnParameters":78663,"id":78675,"nodeType":"Return","src":"44119:30:161"}]},"documentation":{"id":78656,"nodeType":"StructuredDocumentation","src":"43842:127:161","text":" @dev Get the `WrappedVara` contract instance.\n @param routerAddr The address of the `Router` contract."},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"43983:6:161","parameters":{"id":78659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78658,"mutability":"mutable","name":"routerAddr","nameLocation":"43998:10:161","nodeType":"VariableDeclaration","scope":78677,"src":"43990:18:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78657,"name":"address","nodeType":"ElementaryTypeName","src":"43990:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"43989:20:161"},"returnParameters":{"id":78663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78677,"src":"44032:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":78661,"nodeType":"UserDefinedTypeName","pathNode":{"id":78660,"name":"IWrappedVara","nameLocations":["44032:12:161"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"44032:12:161"},"referencedDeclaration":75001,"src":"44032:12:161","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"44031:14:161"},"scope":78769,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":78707,"nodeType":"FunctionDefinition","src":"44398:253:161","nodes":[],"body":{"id":78706,"nodeType":"Block","src":"44481:170:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":78689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78687,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78682,"src":"44495:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44504:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44495:10:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78703,"nodeType":"IfStatement","src":"44491:133:161","trueBody":{"id":78702,"nodeType":"Block","src":"44507:117:161","statements":[{"assignments":[78691,null],"declarations":[{"constant":false,"id":78691,"mutability":"mutable","name":"success","nameLocation":"44527:7:161","nodeType":"VariableDeclaration","scope":78702,"src":"44522:12:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78690,"name":"bool","nodeType":"ElementaryTypeName","src":"44522:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":78699,"initialValue":{"arguments":[{"hexValue":"","id":78697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"44582:2:161","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":78692,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78680,"src":"44539:11:161","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44551:4:161","memberName":"call","nodeType":"MemberAccess","src":"44539:16:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas","value"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"355f303030","id":78694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44561:5:161","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5_000"},{"id":78695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78682,"src":"44575:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"44539:42:161","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gasvalue","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":78698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44539:46:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"44521:64:161"},{"expression":{"id":78700,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78691,"src":"44606:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":78686,"id":78701,"nodeType":"Return","src":"44599:14:161"}]}},{"expression":{"hexValue":"74727565","id":78704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44640:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":78686,"id":78705,"nodeType":"Return","src":"44633:11:161"}]},"documentation":{"id":78678,"nodeType":"StructuredDocumentation","src":"44162:231:161","text":" @dev Transfer ETH to destination address.\n It has gas limit of 5_000 to prevent DoS attacks.\n @param destination The address to transfer ETH to.\n @param value The amount of ETH to transfer."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferEther","nameLocation":"44407:14:161","parameters":{"id":78683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78680,"mutability":"mutable","name":"destination","nameLocation":"44430:11:161","nodeType":"VariableDeclaration","scope":78707,"src":"44422:19:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78679,"name":"address","nodeType":"ElementaryTypeName","src":"44422:7:161","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":78682,"mutability":"mutable","name":"value","nameLocation":"44451:5:161","nodeType":"VariableDeclaration","scope":78707,"src":"44443:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78681,"name":"uint128","nodeType":"ElementaryTypeName","src":"44443:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"44421:36:161"},"returnParameters":{"id":78686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":78707,"src":"44475:4:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":78684,"name":"bool","nodeType":"ElementaryTypeName","src":"44475:4:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"44474:6:161"},"scope":78769,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":78768,"nodeType":"FunctionDefinition","src":"44952:1106:161","nodes":[],"body":{"id":78767,"nodeType":"Block","src":"44994:1064:161","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78713,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45008:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45012:5:161","memberName":"value","nodeType":"MemberAccess","src":"45008:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45020:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45008:13:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78717,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45025:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45029:4:161","memberName":"data","nodeType":"MemberAccess","src":"45025:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45034:6:161","memberName":"length","nodeType":"MemberAccess","src":"45025:15:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45044:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45025:20:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"45008:37:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"45169:8:161","subExpression":{"id":78736,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77321,"src":"45170:7:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45181:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45185:4:161","memberName":"data","nodeType":"MemberAccess","src":"45181:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":78740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45190:6:161","memberName":"length","nodeType":"MemberAccess","src":"45181:15:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783234","id":78741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45200:4:161","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"src":"45181:23:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"45169:35:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78764,"nodeType":"Block","src":"45999:53:161","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":78761,"name":"InvalidFallbackCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74289,"src":"46020:19:161","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":78762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46020:21:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":78763,"nodeType":"RevertStatement","src":"46013:28:161"}]},"id":78765,"nodeType":"IfStatement","src":"45165:887:161","trueBody":{"id":78760,"nodeType":"Block","src":"45206:787:161","statements":[{"assignments":[78746],"declarations":[{"constant":false,"id":78746,"mutability":"mutable","name":"callReply","nameLocation":"45669:9:161","nodeType":"VariableDeclaration","scope":78760,"src":"45661:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78745,"name":"uint256","nodeType":"ElementaryTypeName","src":"45661:7:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"documentation":" @dev We only allow arbitrary calls to `!isSmall` `Mirror` contracts,\n which are more likely to come from their ABI interfaces.\n The minimum call data length is 0x24 (36 bytes) because:\n - 0x04 (4 bytes) for the function selector [0x00..0x04)\n - 0x20 (32 bytes) for the bool `callReply` [0x04..0x24)","id":78747,"nodeType":"VariableDeclarationStatement","src":"45661:17:161"},{"AST":{"nativeSrc":"45718:63:161","nodeType":"YulBlock","src":"45718:63:161","statements":[{"nativeSrc":"45736:31:161","nodeType":"YulAssignment","src":"45736:31:161","value":{"arguments":[{"kind":"number","nativeSrc":"45762:4:161","nodeType":"YulLiteral","src":"45762:4:161","type":"","value":"0x04"}],"functionName":{"name":"calldataload","nativeSrc":"45749:12:161","nodeType":"YulIdentifier","src":"45749:12:161"},"nativeSrc":"45749:18:161","nodeType":"YulFunctionCall","src":"45749:18:161"},"variableNames":[{"name":"callReply","nativeSrc":"45736:9:161","nodeType":"YulIdentifier","src":"45736:9:161"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":78746,"isOffset":false,"isSlot":false,"src":"45736:9:161","valueSize":1}],"flags":["memory-safe"],"id":78748,"nodeType":"InlineAssembly","src":"45693:88:161"},{"assignments":[78750],"declarations":[{"constant":false,"id":78750,"mutability":"mutable","name":"messageId","nameLocation":"45803:9:161","nodeType":"VariableDeclaration","scope":78760,"src":"45795:17:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"45795:7:161","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":78758,"initialValue":{"arguments":[{"expression":{"id":78752,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45828:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45832:4:161","memberName":"data","nodeType":"MemberAccess","src":"45828:8:161","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78754,"name":"callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78746,"src":"45838:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45851:1:161","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45838:14:161","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":78751,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77968,"src":"45815:12:161","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes calldata,bool) returns (bytes32)"}},"id":78757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45815:38:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"45795:58:161"},{"AST":{"nativeSrc":"45893:90:161","nodeType":"YulBlock","src":"45893:90:161","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"45918:4:161","nodeType":"YulLiteral","src":"45918:4:161","type":"","value":"0x00"},{"name":"messageId","nativeSrc":"45924:9:161","nodeType":"YulIdentifier","src":"45924:9:161"}],"functionName":{"name":"mstore","nativeSrc":"45911:6:161","nodeType":"YulIdentifier","src":"45911:6:161"},"nativeSrc":"45911:23:161","nodeType":"YulFunctionCall","src":"45911:23:161"},"nativeSrc":"45911:23:161","nodeType":"YulExpressionStatement","src":"45911:23:161"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"45958:4:161","nodeType":"YulLiteral","src":"45958:4:161","type":"","value":"0x00"},{"kind":"number","nativeSrc":"45964:4:161","nodeType":"YulLiteral","src":"45964:4:161","type":"","value":"0x20"}],"functionName":{"name":"return","nativeSrc":"45951:6:161","nodeType":"YulIdentifier","src":"45951:6:161"},"nativeSrc":"45951:18:161","nodeType":"YulFunctionCall","src":"45951:18:161"},"nativeSrc":"45951:18:161","nodeType":"YulExpressionStatement","src":"45951:18:161"}]},"evmVersion":"osaka","externalReferences":[{"declaration":78750,"isOffset":false,"isSlot":false,"src":"45924:9:161","valueSize":1}],"flags":["memory-safe"],"id":78759,"nodeType":"InlineAssembly","src":"45868:115:161"}]}},"id":78766,"nodeType":"IfStatement","src":"45004:1048:161","trueBody":{"id":78735,"nodeType":"Block","src":"45047:112:161","statements":[{"assignments":[78724],"declarations":[{"constant":false,"id":78724,"mutability":"mutable","name":"value","nameLocation":"45069:5:161","nodeType":"VariableDeclaration","scope":78735,"src":"45061:13:161","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":78723,"name":"uint128","nodeType":"ElementaryTypeName","src":"45061:7:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":78730,"initialValue":{"arguments":[{"expression":{"id":78727,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45085:3:161","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45089:5:161","memberName":"value","nodeType":"MemberAccess","src":"45085:9:161","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45077:7:161","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":78725,"name":"uint128","nodeType":"ElementaryTypeName","src":"45077:7:161","typeDescriptions":{}}},"id":78729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45077:18:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"45061:34:161"},{"eventCall":{"arguments":[{"id":78732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78724,"src":"45142:5:161","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":78731,"name":"OwnedBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74177,"src":"45115:26:161","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":78733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45115:33:161","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78734,"nodeType":"EmitStatement","src":"45110:38:161"}]}}]},"documentation":{"id":78708,"nodeType":"StructuredDocumentation","src":"44657:290:161","text":" @dev Fallback function for top-up owned balance in native currency (ETH)\n and for sending arbitrary calls to `!isSmall` `Mirror` contracts\n as messages to Sails framework.\n See the description of `Mirror.isSmall` field for details."},"implemented":true,"kind":"fallback","modifiers":[{"id":78711,"kind":"modifierInvocation","modifierName":{"id":78710,"name":"whenNotPaused","nameLocations":["44980:13:161"],"nodeType":"IdentifierPath","referencedDeclaration":77494,"src":"44980:13:161"},"nodeType":"ModifierInvocation","src":"44980:13:161"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":78709,"nodeType":"ParameterList","parameters":[],"src":"44960:2:161"},"returnParameters":{"id":78712,"nodeType":"ParameterList","parameters":[],"src":"44994:0:161"},"scope":78769,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":77295,"name":"IMirror","nameLocations":["2640:7:161"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"2640:7:161"},"id":77296,"nodeType":"InheritanceSpecifier","src":"2640:7:161"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","documentation":{"id":77294,"nodeType":"StructuredDocumentation","src":"621:1999:161","text":" @dev Mirror smart contract is responsible for storing the minimal state of programs on our platform\n and transitioning from one state to another by calling `performStateTransition(...)`. It's built\n on actor-model architecture, and in Ethereum, we implement this through \"request-response\" model.\n This means we have two types of events:\n - \"Requested\" events - when user calls one of the methods marked as \"Primary Gear logic\" we emit such an event,\n and all our nodes process it off-chain\n - \"Responded\" events - when we receive response from our nodes and transmit it back to Ethereum.\n All logic called within `performStateTransition(...)` and leading to methods marked as\n \"Private calls related to performStateTransition\" are such events.\n It's important not to confuse these two, as this is how we implement the actor model in Ethereum.\n Mirror economic model has two balances:\n - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`.\n This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`.\n - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain.\n It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform.\n You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the\n Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users\n can use it for free. This is called the \"reverse-gas model\". Developer can also require the presence of `value` in\n the owned balance when calling methods in a WASM smart contract to protect their program from spam."},"fullyImplemented":true,"linearizedBaseContracts":[78769,74395],"name":"Mirror","nameLocation":"2630:6:161","scope":78770,"usedErrors":[74253,74256,74259,74262,74265,74268,74271,74274,74277,74279,74281,74283,74285,74287,74289],"usedEvents":[74141,74154,74165,74172,74177,74182,74193,74202,74213,74222,74229,74236,74243,74250,77367]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":161} \ No newline at end of file diff --git a/ethexe/ethereum/abi/MirrorWithInstrumentation.json b/ethexe/ethereum/abi/MirrorWithInstrumentation.json new file mode 100644 index 00000000000..e3d4803560b --- /dev/null +++ b/ethexe/ethereum/abi/MirrorWithInstrumentation.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUpWithPermit","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"exited","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"inheritor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_initializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"},{"name":"_isSmall","type":"bool","internalType":"bool"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initializer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"performStateTransition","inputs":[{"name":"_transition","type":"tuple","internalType":"struct Gear.StateTransition","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"exited","type":"bool","internalType":"bool"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueToReceiveNegativeSign","type":"bool","internalType":"bool"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]},{"name":"call","type":"bool","internalType":"bool"}]}]}],"outputs":[{"name":"transitionHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_callReply","type":"bool","internalType":"bool"}],"outputs":[{"name":"messageId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"transferLockedValueToInheritor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DebugEvent","inputs":[{"name":"topic0","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":true},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageCallFailed","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"callReply","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnedBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyCallFailed","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ReplyTransferFailed","inputs":[{"name":"destination","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"TransferLockedValueToInheritorFailed","inputs":[{"name":"inheritor","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimFailed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AbiInterfaceAlreadySet","inputs":[]},{"type":"error","name":"CallerNotRouter","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"EtherTransferToRouterFailed","inputs":[]},{"type":"error","name":"InheritorMustBeZero","inputs":[]},{"type":"error","name":"InitMessageNotCreated","inputs":[]},{"type":"error","name":"InitMessageNotCreatedAndCallerNotInitializer","inputs":[]},{"type":"error","name":"InitializerAlreadySet","inputs":[]},{"type":"error","name":"InvalidActorId","inputs":[]},{"type":"error","name":"InvalidFallbackCall","inputs":[]},{"type":"error","name":"IsSmallAlreadySet","inputs":[]},{"type":"error","name":"ProgramExited","inputs":[]},{"type":"error","name":"ProgramNotExited","inputs":[]},{"type":"error","name":"TransferLockedValueToInheritorExternalFailed","inputs":[]},{"type":"error","name":"WVaraTransferFailed","inputs":[]}],"bytecode":{"object":"0x60a03461008d57601f611dc838819003918201601f19168301916001600160401b038311848410176100915780849260209460405283398101031261008d57516001600160a01b038116810361008d57608052604051611d2290816100a682396080518181816102390152818161031d01528181611430015281816114d101528181611574015261162a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561017f575b61001661155f565b34151580610177575b15610059577f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620660206040516001600160801b0334168152a1005b60ff60035460a01c16158061016c575b1561015d576100766115fc565b60015415801590610149575b1561013a576001600160801b03341661009a816114b9565b600154903060601b5f528160145260345f20915f198114610126576001016001557f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5460405183815260806020820152602060808201368152365f838301375f823683010152601f19601f3601160101926040820152600435151560608201528033930390a25f5260205ff35b634e487b7160e01b5f52601160045260245ffd5b634bfa3a2d60e01b5f5260045ffd5b506003546001600160a01b03163314610082565b6399dd405f60e01b5f5260045ffd5b506024361015610069565b50361561001f565b5f5f3560e01c8063084f443a1461086a57806336a52a181461083d57806342129d001461071b5780635ce6c327146106f8578063701da98e146106db578063704ed542146106855780637a8e0cdd146105ef57806391d5a64c146105945780639ce110d71461056b578063affed0e01461054d578063bfa28576146103f6578063c6049692146102d6578063e43f34331461026b5763f887ea4014610224575061000e565b346102685780600319360112610268576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b503461026857806003193601126102685761028461155f565b60025460ff8116156102c7576102b090476001600160801b03169060081c6001600160a01b0316611913565b156102b85780f35b63085fbdef60e21b8152600490fd5b63463a5c5f60e01b8252600482fd5b50346102685760a0366003190112610268576102f0611374565b6044359060ff82168092036103f25761030761155f565b61030f6115fc565b826001600160a01b036103417f00000000000000000000000000000000000000000000000000000000000000006116f1565b16803b156103ee57819060e46040518094819363d505accf60e01b83523360048401523060248401526001600160801b038816988960448501526024356064850152608484015260643560a484015260843560c48401525af16103c4575b505f516020611d025f395f51905f52916103ba602092611617565b604051908152a180f35b916103ba846103e4602094965f516020611d025f395f51905f529661140d565b949250509161039f565b5080fd5b8280fd5b5034610268576080366003190112610268576004356001600160a01b038116908190036103ee576024356001600160a01b038116908190036103f25760443580151580910361054957606435926001600160801b0384168094036105455761045c61142e565b600354906001600160a01b0382166105365760ff8260a01c16610527577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54926001600160a01b038416610518576001600160a81b03199092161760a09190911b60ff60a01b16176003556001600160a01b031916177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806104fd575080f35b60205f516020611d025f395f51905f5291604051908152a180f35b638778dcd360e01b8752600487fd5b6325f368db60e11b8652600486fd5b63f20d240560e01b8652600486fd5b8480fd5b8380fd5b50346102685780600319360112610268576020600154604051908152f35b50346102685780600319360112610268576003546040516001600160a01b039091168152602090f35b5034610268576020366003190112610268576105ae61155f565b6105b66115fc565b6105be6116d8565b60405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203392a280f35b506040366003190112610268576024356001600160401b0381116103ee5761063c7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f913690600401611347565b61064792919261155f565b61064f6115fc565b6106576116d8565b6001600160801b0334169061066b826114b9565b61067f6040519283923396600435856113df565b0390a280f35b5034610268576020366003190112610268575f516020611d025f395f51905f5260206106af611374565b6106b761155f565b6106bf6115fc565b6106c881611617565b6001600160801b0360405191168152a180f35b503461026857806003193601126102685760209054604051908152f35b5034610268578060031936011261026857602060ff600254166040519015158152f35b506040366003190112610268576004356001600160401b0381116103ee57610747903690600401611347565b91906024358015158091036103f25761075e61155f565b6107666115fc565b60015415801590610829575b1561081a576001600160801b0334169161078b836114b9565b6001543060601b85528060145260348520945f1982146108065750916107ed6020969260017f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5495016001556040519387855260808986015260808501916113bf565b93604083015260608201528033930390a2604051908152f35b634e487b7160e01b81526011600452602490fd5b634bfa3a2d60e01b8352600483fd5b506003546001600160a01b03163314610772565b503461026857806003193601126102685760025460405160089190911c6001600160a01b03168152602090f35b506020366003190112610f22576001600160401b0360043511610f2257600435360390610100600319830112610f22576108a261142e565b60015f80a16108b560043560040161138a565b306001600160a01b03909116036113385760025f80a160035f80a16108de60a46004350161139e565b61131d575b60045f80a160055f80a160043560e401356022198301811215610f22576001600160401b03600482813501013511610f2257600481813501013560051b3603602482600435010113610f22576004803582010135600581901b819004602014901517156101265761095d600482813501013560051b611771565b5f93845b6004848135010135861015610f3a57600586901b600435850190810160240135969036036101021901871215610f225760e06023196004358701890136030112610f22576040519160c083018381106001600160401b03821117610f2657604052600435860188016024810135845260440135906001600160a01b0382168203610f225760208401918252606460043588018a0101356001600160401b038111610f225760209060048b8a8235010101010136601f82011215610f2257610a2f903690602081359101611511565b6040850190815291608460043589018b0101356001600160801b0381168103610f225760608601908152604060a3196004358b018d0136030112610f225760405195604087018781106001600160401b03821117610f26576040526004358a018c0160a4810135885260c40135906001600160e01b031982168203610f2257602088019182526080810188905260e46004358c018e01013580151596878203610f2257600199602098610b5d958560549560a060359801525198519351975192519063ffffffff60e01b905116908b604051998a968288019c8d526001600160601b03199060601b1660408801528051918291018888015e8501936001600160801b03199060801b16868501526064840152608483015260f81b60888201520301601581018452018261140d565b51902086820152019660a4600435870182010135610b905760206004610b8992888235010101016117dd565b0194610961565b610ba260e4600435880183010161139e565b15610df3576001600160f81b0319610bc260c460043589018401016117c8565b5f1a60f81b161586826060925f14610d6b575f9250610bfb60606004610c0293869582350101010160206004878d823501010101611796565b3691611511565b886001600160801b03610c306080600488610c2460448335880183010161138a565b958235010101016113ab565b16602083519301916207a120f1610c4561148a565b5015610c52575b50610b89565b610c7f610c676044600435890184010161138a565b610c7960846004358a018501016113ab565b90611913565b15610cfc575b7f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c36040610cba60846004358a018501016113ab565b60a060046001600160e01b0319610cd860c483358e018901016117c8565b16956001600160801b038551941684528b823501010101356020820152a25f610c4c565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610d2f6044600435890184010161138a565b610d4160846004358a018501016113ab565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610c85565b5f928392610dee91610dd1610d8d600435840186016064810190602401611796565b610d9f60c460043587018901016117c8565b9360206004604051998a98634a646c7f60e01b848b0152823501010101356024870152604486015260848501916113bf565b9063ffffffff60e01b16606483015203601f19810183528261140d565b610c02565b610e08610c676044600435890184010161138a565b15610eb3575b7fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6610e46600435880183016064810190602401611796565b610e5860846004358b018601016113ab565b60a060046001600160e01b0319610e7660c483358f018a01016117c8565b16966001600160801b03610e976040519788976060895260608901916113bf565b941660208601528c8235010101013560408301520390a2610b89565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610ee66044600435890184010161138a565b610ef860846004358a018501016113ab565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610e0e565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b509291600490813501013560051b90209160065f80a160075f80a160043560c401359060221901811215610f225760043501916004830135916001600160401b038311610f22576060830236036024850113610f22578260051b908382046020148415171561012657610fb08295949392611771565b915f955f965b858810156110ed57610fee949596976001916004606083028b010190611050611047602080850135938c816060604089019e8f61138a565b980197610ffa896113ab565b60405190868201928a84526001600160601b03199060601b1660408301526001600160801b03199060801b1660548201526044815261103a60648261140d565b519020910152019961138a565b610c79846113ab565b156110a45761107f7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783926113ab565b604080519283526001600160801b0391909116602083015290a15b0196959493610fb6565b6110ce7f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed926113ab565b604080519283526001600160801b0391909116602083015290a161109a565b5083209160085f80a160095f80a16044600435019061110b8261139e565b156112e9575060209261112260646004350161138a565b9261112b6115fc565b600280546001600160a81b031916600886811b610100600160a81b031691909117600117918290555f9591476001600160801b0316916111769183911c6001600160a01b0316611913565b1561129c575b50505b60405191600a8580a1600b8580a18454926024600435013580940361126c575b5060405192600c8680a1600d8680a16111c56111bf60043560040161138a565b9561139e565b6111d360646004350161138a565b6111e16084600435016113ab565b916111f060a46004350161139e565b938a8801986001600160601b03199060601b1689526034880152151560f81b60548701526001600160601b03199060601b1660558601526001600160801b03199060801b166069850152151560f81b6079840152607a830152609a820152609a815261125d60ba8261140d565b519020600e6040519280a18152f35b867f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093091858855858152a18661119f565b604080516001600160a01b039390931683526001600160801b039190911660208301527f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f391a1858061117c565b91926001600160a01b0361130160043560640161138a565b1661130e5760209361117f565b6304c3c7a160e41b5f5260045ffd5b61133361132e6084600435016113ab565b6114b9565b6108e3565b63ed488aa360e01b5f5260045ffd5b9181601f84011215610f22578235916001600160401b038311610f225760208381860195010111610f2257565b600435906001600160801b0382168203610f2257565b356001600160a01b0381168103610f225790565b358015158103610f225790565b356001600160801b0381168103610f225790565b908060209392818452848401375f828201840152601f01601f1916010190565b92604092611406916001600160801b039397969786526060602087015260608601916113bf565b9416910152565b90601f801991011681019081106001600160401b03821117610f2657604052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361146057565b6375f48d7160e11b5f5260045ffd5b6001600160401b038111610f2657601f01601f191660200190565b3d156114b4573d9061149b8261146f565b916114a9604051938461140d565b82523d5f602084013e565b606090565b6001600160801b0316806114ca5750565b5f808080937f00000000000000000000000000000000000000000000000000000000000000005af16114fa61148a565b501561150257565b6308eb200360e41b5f5260045ffd5b92919261151d8261146f565b9161152b604051938461140d565b829481845281830111610f22578281602093845f960137010152565b90816020910312610f2257518015158103610f225790565b604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156115f1575f916115c2575b506115b357565b63d93c066560e01b5f5260045ffd5b6115e4915060203d6020116115ea575b6115dc818361140d565b810190611547565b5f6115ac565b503d6115d2565b6040513d5f823e3d90fd5b60ff6002541661160857565b630d304b8160e31b5f5260045ffd5b6001600160801b0316806116285750565b7f00000000000000000000000000000000000000000000000000000000000000009060209060646001600160a01b03611660856116f1565b6040516323b872dd60e01b81523360048201526001600160a01b0390961660248701526044860193909352849283915f91165af19081156115f1575f916116b9575b50156116aa57565b6303a25d1960e31b5f5260045ffd5b6116d2915060203d6020116115ea576115dc818361140d565b5f6116a2565b600154156116e257565b631a2efd3560e31b5f5260045ffd5b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa9081156115f1575f9161172f575b506001600160a01b031690565b90506020813d602011611769575b8161174a6020938361140d565b81010312610f2257516001600160a01b0381168103610f22575f611722565b3d915061173d565b6040519190601f01601f191682016001600160401b03811183821017610f2257604052565b903590601e1981360301821215610f2257018035906001600160401b038211610f2257602001918136038313610f2257565b356001600160e01b031981168103610f225790565b6117e681611940565b156117ee5750565b6117fa60c0820161139e565b611867575b7f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177361186261182f6020840161138a565b61183c6040850185611796565b61184b606087959395016113ab565b9060405194859460018060a01b03169735856113df565b0390a2565b602081015f806118768361138a565b816118846040870187611796565b9190826040519384928337810182815203926207a120f16118a361148a565b50156118af57506117ff565b6118d97f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f89161138a565b6118e5606084016113ab565b60408051943585526001600160801b0390911660208501526001600160a01b03909116929081908101611862565b906001600160801b0316908161192a575050600190565b5f8080938193611388f161193c61148a565b5090565b61194d6040820182611796565b90916001600160a01b03806119646020840161138a565b16149081611ce3575b5080611cda575b15611cd45781358060f81c90600182101580611cc9575b15611cc15760f31c611fe016600181018310611cc1576001840135927f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093084141580611c97575b80611c6d575b80611c43575b80611c19575b80611c02575b80611bd8575b80611bae575b80611b84575b80611b5a575b80611b30575b80611b06575b80611adc575b80611ab2575b15611aa9578190035f190191826001611a3182611771565b93870101833760218501359460418101359160018103611a585750505090919250a1600190565b60028103611a6957505050a2600190565b600381979593969497145f14611a8557505090919293a3600190565b600414611a98575b505050505050600190565b6061013594a45f8080808080611a8d565b50505050505f90565b507f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed841415611a19565b507f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a841415611a13565b507f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f3841415611a0d565b507fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783841415611a07565b507f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c3841415611a01565b507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68414156119fb565b507f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f88414156119f5565b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738414156119ef565b505f516020611d025f395f51905f528414156119e9565b507f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa18262068414156119e3565b507f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c49788414156119dd565b507fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f8414156119d7565b507f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c548414156119d1565b505050505f90565b50600482111561198b565b50505f90565b50801515611974565b6001600160801b0391506060611cf991016113ab565b16155f61196d56fe85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667","sourceMap":"2621:43416:167:-:0;;;;;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;8847:16;;2621:43416;;;;;;;;8847:16;2621:43416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2621:43416:167;;;;;;-1:-1:-1;2621:43416:167;;;;;-1:-1:-1;2621:43416:167","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561017f575b61001661155f565b34151580610177575b15610059577f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa182620660206040516001600160801b0334168152a1005b60ff60035460a01c16158061016c575b1561015d576100766115fc565b60015415801590610149575b1561013a576001600160801b03341661009a816114b9565b600154903060601b5f528160145260345f20915f198114610126576001016001557f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5460405183815260806020820152602060808201368152365f838301375f823683010152601f19601f3601160101926040820152600435151560608201528033930390a25f5260205ff35b634e487b7160e01b5f52601160045260245ffd5b634bfa3a2d60e01b5f5260045ffd5b506003546001600160a01b03163314610082565b6399dd405f60e01b5f5260045ffd5b506024361015610069565b50361561001f565b5f5f3560e01c8063084f443a1461086a57806336a52a181461083d57806342129d001461071b5780635ce6c327146106f8578063701da98e146106db578063704ed542146106855780637a8e0cdd146105ef57806391d5a64c146105945780639ce110d71461056b578063affed0e01461054d578063bfa28576146103f6578063c6049692146102d6578063e43f34331461026b5763f887ea4014610224575061000e565b346102685780600319360112610268576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b503461026857806003193601126102685761028461155f565b60025460ff8116156102c7576102b090476001600160801b03169060081c6001600160a01b0316611913565b156102b85780f35b63085fbdef60e21b8152600490fd5b63463a5c5f60e01b8252600482fd5b50346102685760a0366003190112610268576102f0611374565b6044359060ff82168092036103f25761030761155f565b61030f6115fc565b826001600160a01b036103417f00000000000000000000000000000000000000000000000000000000000000006116f1565b16803b156103ee57819060e46040518094819363d505accf60e01b83523360048401523060248401526001600160801b038816988960448501526024356064850152608484015260643560a484015260843560c48401525af16103c4575b505f516020611d025f395f51905f52916103ba602092611617565b604051908152a180f35b916103ba846103e4602094965f516020611d025f395f51905f529661140d565b949250509161039f565b5080fd5b8280fd5b5034610268576080366003190112610268576004356001600160a01b038116908190036103ee576024356001600160a01b038116908190036103f25760443580151580910361054957606435926001600160801b0384168094036105455761045c61142e565b600354906001600160a01b0382166105365760ff8260a01c16610527577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54926001600160a01b038416610518576001600160a81b03199092161760a09190911b60ff60a01b16176003556001600160a01b031916177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55806104fd575080f35b60205f516020611d025f395f51905f5291604051908152a180f35b638778dcd360e01b8752600487fd5b6325f368db60e11b8652600486fd5b63f20d240560e01b8652600486fd5b8480fd5b8380fd5b50346102685780600319360112610268576020600154604051908152f35b50346102685780600319360112610268576003546040516001600160a01b039091168152602090f35b5034610268576020366003190112610268576105ae61155f565b6105b66115fc565b6105be6116d8565b60405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203392a280f35b506040366003190112610268576024356001600160401b0381116103ee5761063c7fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f913690600401611347565b61064792919261155f565b61064f6115fc565b6106576116d8565b6001600160801b0334169061066b826114b9565b61067f6040519283923396600435856113df565b0390a280f35b5034610268576020366003190112610268575f516020611d025f395f51905f5260206106af611374565b6106b761155f565b6106bf6115fc565b6106c881611617565b6001600160801b0360405191168152a180f35b503461026857806003193601126102685760209054604051908152f35b5034610268578060031936011261026857602060ff600254166040519015158152f35b506040366003190112610268576004356001600160401b0381116103ee57610747903690600401611347565b91906024358015158091036103f25761075e61155f565b6107666115fc565b60015415801590610829575b1561081a576001600160801b0334169161078b836114b9565b6001543060601b85528060145260348520945f1982146108065750916107ed6020969260017f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c5495016001556040519387855260808986015260808501916113bf565b93604083015260608201528033930390a2604051908152f35b634e487b7160e01b81526011600452602490fd5b634bfa3a2d60e01b8352600483fd5b506003546001600160a01b03163314610772565b503461026857806003193601126102685760025460405160089190911c6001600160a01b03168152602090f35b506020366003190112610f22576001600160401b0360043511610f2257600435360390610100600319830112610f22576108a261142e565b60015f80a16108b560043560040161138a565b306001600160a01b03909116036113385760025f80a160035f80a16108de60a46004350161139e565b61131d575b60045f80a160055f80a160043560e401356022198301811215610f22576001600160401b03600482813501013511610f2257600481813501013560051b3603602482600435010113610f22576004803582010135600581901b819004602014901517156101265761095d600482813501013560051b611771565b5f93845b6004848135010135861015610f3a57600586901b600435850190810160240135969036036101021901871215610f225760e06023196004358701890136030112610f22576040519160c083018381106001600160401b03821117610f2657604052600435860188016024810135845260440135906001600160a01b0382168203610f225760208401918252606460043588018a0101356001600160401b038111610f225760209060048b8a8235010101010136601f82011215610f2257610a2f903690602081359101611511565b6040850190815291608460043589018b0101356001600160801b0381168103610f225760608601908152604060a3196004358b018d0136030112610f225760405195604087018781106001600160401b03821117610f26576040526004358a018c0160a4810135885260c40135906001600160e01b031982168203610f2257602088019182526080810188905260e46004358c018e01013580151596878203610f2257600199602098610b5d958560549560a060359801525198519351975192519063ffffffff60e01b905116908b604051998a968288019c8d526001600160601b03199060601b1660408801528051918291018888015e8501936001600160801b03199060801b16868501526064840152608483015260f81b60888201520301601581018452018261140d565b51902086820152019660a4600435870182010135610b905760206004610b8992888235010101016117dd565b0194610961565b610ba260e4600435880183010161139e565b15610df3576001600160f81b0319610bc260c460043589018401016117c8565b5f1a60f81b161586826060925f14610d6b575f9250610bfb60606004610c0293869582350101010160206004878d823501010101611796565b3691611511565b886001600160801b03610c306080600488610c2460448335880183010161138a565b958235010101016113ab565b16602083519301916207a120f1610c4561148a565b5015610c52575b50610b89565b610c7f610c676044600435890184010161138a565b610c7960846004358a018501016113ab565b90611913565b15610cfc575b7f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c36040610cba60846004358a018501016113ab565b60a060046001600160e01b0319610cd860c483358e018901016117c8565b16956001600160801b038551941684528b823501010101356020820152a25f610c4c565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610d2f6044600435890184010161138a565b610d4160846004358a018501016113ab565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610c85565b5f928392610dee91610dd1610d8d600435840186016064810190602401611796565b610d9f60c460043587018901016117c8565b9360206004604051998a98634a646c7f60e01b848b0152823501010101356024870152604486015260848501916113bf565b9063ffffffff60e01b16606483015203601f19810183528261140d565b610c02565b610e08610c676044600435890184010161138a565b15610eb3575b7fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c6610e46600435880183016064810190602401611796565b610e5860846004358b018601016113ab565b60a060046001600160e01b0319610e7660c483358f018a01016117c8565b16966001600160801b03610e976040519788976060895260608901916113bf565b941660208601528c8235010101013560408301520390a2610b89565b7f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a610ee66044600435890184010161138a565b610ef860846004358a018501016113ab565b604080516001600160a01b039390931683526001600160801b0391909116602083015290a1610e0e565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b509291600490813501013560051b90209160065f80a160075f80a160043560c401359060221901811215610f225760043501916004830135916001600160401b038311610f22576060830236036024850113610f22578260051b908382046020148415171561012657610fb08295949392611771565b915f955f965b858810156110ed57610fee949596976001916004606083028b010190611050611047602080850135938c816060604089019e8f61138a565b980197610ffa896113ab565b60405190868201928a84526001600160601b03199060601b1660408301526001600160801b03199060801b1660548201526044815261103a60648261140d565b519020910152019961138a565b610c79846113ab565b156110a45761107f7fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783926113ab565b604080519283526001600160801b0391909116602083015290a15b0196959493610fb6565b6110ce7f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed926113ab565b604080519283526001600160801b0391909116602083015290a161109a565b5083209160085f80a160095f80a16044600435019061110b8261139e565b156112e9575060209261112260646004350161138a565b9261112b6115fc565b600280546001600160a81b031916600886811b610100600160a81b031691909117600117918290555f9591476001600160801b0316916111769183911c6001600160a01b0316611913565b1561129c575b50505b60405191600a8580a1600b8580a18454926024600435013580940361126c575b5060405192600c8680a1600d8680a16111c56111bf60043560040161138a565b9561139e565b6111d360646004350161138a565b6111e16084600435016113ab565b916111f060a46004350161139e565b938a8801986001600160601b03199060601b1689526034880152151560f81b60548701526001600160601b03199060601b1660558601526001600160801b03199060801b166069850152151560f81b6079840152607a830152609a820152609a815261125d60ba8261140d565b519020600e6040519280a18152f35b867f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093091858855858152a18661119f565b604080516001600160a01b039390931683526001600160801b039190911660208301527f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f391a1858061117c565b91926001600160a01b0361130160043560640161138a565b1661130e5760209361117f565b6304c3c7a160e41b5f5260045ffd5b61133361132e6084600435016113ab565b6114b9565b6108e3565b63ed488aa360e01b5f5260045ffd5b9181601f84011215610f22578235916001600160401b038311610f225760208381860195010111610f2257565b600435906001600160801b0382168203610f2257565b356001600160a01b0381168103610f225790565b358015158103610f225790565b356001600160801b0381168103610f225790565b908060209392818452848401375f828201840152601f01601f1916010190565b92604092611406916001600160801b039397969786526060602087015260608601916113bf565b9416910152565b90601f801991011681019081106001600160401b03821117610f2657604052565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361146057565b6375f48d7160e11b5f5260045ffd5b6001600160401b038111610f2657601f01601f191660200190565b3d156114b4573d9061149b8261146f565b916114a9604051938461140d565b82523d5f602084013e565b606090565b6001600160801b0316806114ca5750565b5f808080937f00000000000000000000000000000000000000000000000000000000000000005af16114fa61148a565b501561150257565b6308eb200360e41b5f5260045ffd5b92919261151d8261146f565b9161152b604051938461140d565b829481845281830111610f22578281602093845f960137010152565b90816020910312610f2257518015158103610f225790565b604051635c975abb60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156115f1575f916115c2575b506115b357565b63d93c066560e01b5f5260045ffd5b6115e4915060203d6020116115ea575b6115dc818361140d565b810190611547565b5f6115ac565b503d6115d2565b6040513d5f823e3d90fd5b60ff6002541661160857565b630d304b8160e31b5f5260045ffd5b6001600160801b0316806116285750565b7f00000000000000000000000000000000000000000000000000000000000000009060209060646001600160a01b03611660856116f1565b6040516323b872dd60e01b81523360048201526001600160a01b0390961660248701526044860193909352849283915f91165af19081156115f1575f916116b9575b50156116aa57565b6303a25d1960e31b5f5260045ffd5b6116d2915060203d6020116115ea576115dc818361140d565b5f6116a2565b600154156116e257565b631a2efd3560e31b5f5260045ffd5b60405163088f50cf60e41b815290602090829060049082906001600160a01b03165afa9081156115f1575f9161172f575b506001600160a01b031690565b90506020813d602011611769575b8161174a6020938361140d565b81010312610f2257516001600160a01b0381168103610f22575f611722565b3d915061173d565b6040519190601f01601f191682016001600160401b03811183821017610f2257604052565b903590601e1981360301821215610f2257018035906001600160401b038211610f2257602001918136038313610f2257565b356001600160e01b031981168103610f225790565b6117e681611940565b156117ee5750565b6117fa60c0820161139e565b611867575b7f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f801177361186261182f6020840161138a565b61183c6040850185611796565b61184b606087959395016113ab565b9060405194859460018060a01b03169735856113df565b0390a2565b602081015f806118768361138a565b816118846040870187611796565b9190826040519384928337810182815203926207a120f16118a361148a565b50156118af57506117ff565b6118d97f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f89161138a565b6118e5606084016113ab565b60408051943585526001600160801b0390911660208501526001600160a01b03909116929081908101611862565b906001600160801b0316908161192a575050600190565b5f8080938193611388f161193c61148a565b5090565b61194d6040820182611796565b90916001600160a01b03806119646020840161138a565b16149081611ce3575b5080611cda575b15611cd45781358060f81c90600182101580611cc9575b15611cc15760f31c611fe016600181018310611cc1576001840135927f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c08093084141580611c97575b80611c6d575b80611c43575b80611c19575b80611c02575b80611bd8575b80611bae575b80611b84575b80611b5a575b80611b30575b80611b06575b80611adc575b80611ab2575b15611aa9578190035f190191826001611a3182611771565b93870101833760218501359460418101359160018103611a585750505090919250a1600190565b60028103611a6957505050a2600190565b600381979593969497145f14611a8557505090919293a3600190565b600414611a98575b505050505050600190565b6061013594a45f8080808080611a8d565b50505050505f90565b507f74e4a0c671b40d8f56604cce496a32bad5ff6f039513935b7cc837dc9ba970ed841415611a19565b507f305c463d916e500e09d8c2b51f3ceea288d92833ffec0144992c3f3a80af158a841415611a13565b507f69c554fdd8abe771a12e37e5d229102c9e7bc0041a7cd4b726d0debd837556f3841415611a0d565b507fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783841415611a07565b507f5136ea80de584762b9532903198dfdd1125167a8685e943b1bc5d16b777151c3841415611a01565b507fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68414156119fb565b507f76c87872723521658a1c429bc5e355c5ad7b30719dae90158fe2b591f9ea56f88414156119f5565b507f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738414156119ef565b505f516020611d025f395f51905f528414156119e9565b507f134041dec9803c024e94a2479679395a15b6ae0034c4d424ab47712aa18262068414156119e3565b507f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c49788414156119dd565b507fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f8414156119d7565b507f9d835932f9695ed8acd7290fb99476799c321b20b15a597a99b597bdfb907c548414156119d1565b505050505f90565b50600482111561198b565b50505f90565b50801515611974565b6001600160801b0391506060611cf991016113ab565b16155f61196d56fe85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667","sourceMap":"2621:43416:167:-:0;;;;;;;;;-1:-1:-1;11105:69:167;;:::i;:::-;44985:9;:13;;:37;;;-1:-1:-1;44981:1048:167;;;45092:33;2621:43416;;;-1:-1:-1;;;;;44985:9:167;2621:43416;;;45092:33;2621:43416;44981:1048;2621:43416;45147:7;2621:43416;;;;45146:8;:35;;;44981:1048;45142:887;;;10021:67;;:::i;:::-;9816:5;2621:43416;9816:9;;;:38;;;45142:887;2621:43416;;;-1:-1:-1;;;;;44985:9:167;2621:43416;21701:6;;;:::i;:::-;9816:5;2621:43416;21922:154;;;;44997:1;21922:154;;;;;44997:1;21922:154;2621:43416;;;;;;;9816:5;2621:43416;9816:5;2621:43416;22108:70;2621:43416;;;;;;;;;;;;;;;;;;44997:1;2621:43416;;;;44997:1;2621:43416;;;;;;;;;;;;;;;;;;;;45670:88;45815:14;;21922:154;2621:43416;;;22137:10;;22108:70;;;;44997:1;45845:115;2621:43416;44997:1;45845:115;2621:43416;;;;44997:1;2621:43416;;;;;44997:1;2621:43416;;;;;44997:1;2621:43416;;44997:1;2621:43416;9816:38;-1:-1:-1;45147:7:167;2621:43416;-1:-1:-1;;;;;2621:43416:167;9829:10;:25;9816:38;;45142:887;45997:21;;;44997:1;45997:21;2621:43416;44997:1;45997:21;45146:35;2621:43416;45177:4;2621:43416;45158:23;;45146:35;;44985:37;2621:43416;;45002:20;44985:37;;2621:43416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3247:31;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;11105:69;;:::i;:::-;10586:6;2621:43416;;;;;;;22959:37;;22711:21;-1:-1:-1;;;;;2621:43416:167;;;;-1:-1:-1;;;;;2621:43416:167;22959:37;:::i;:::-;2621:43416;;;;;;-1:-1:-1;;;2621:43416:167;;;;;;-1:-1:-1;;;2621:43416:167;;;;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;;;:::i;:::-;;;;;;;;;;;;11105:69;;:::i;:::-;10021:67;;:::i;:::-;2621:43416;-1:-1:-1;;;;;15594:14:167;15601:6;15594:14;:::i;:::-;2621:43416;15594:79;;;;;2621:43416;;15594:79;2621:43416;;;;;;;;;15594:79;;15616:10;2621:43416;15594:79;;2621:43416;15636:4;2621:43416;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15594:79;;;;2621:43416;15710:6;-1:-1:-1;;;;;;;;;;;15710:6:167;;2621:43416;15710:6;;:::i;:::-;2621:43416;;;;;15733:39;2621:43416;;15594:79;;15710:6;15594:79;;2621:43416;15594:79;;-1:-1:-1;;;;;;;;;;;15594:79:167;;:::i;:::-;;;;;;;;;2621:43416;;;;;;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;10726:63;;:::i;:::-;17404:11;2621:43416;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;811:66:53;2621:43416:167;;-1:-1:-1;;;;;2621:43416:167;;811:66:53;;-1:-1:-1;;;;;;811:66:53;;;;;;;;;-1:-1:-1;;;811:66:53;;17404:11:167;811:66:53;-1:-1:-1;;;;;;811:66:53;;;;17854:30:167;17850:124;;2621:43416;;;17850:124;2621:43416;-1:-1:-1;;;;;;;;;;;2621:43416:167;;;;;;17905:58;2621:43416;;811:66:53;-1:-1:-1;;;811:66:53;;2621:43416:167;811:66:53;;2621:43416:167;-1:-1:-1;;;2621:43416:167;;;;;;-1:-1:-1;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;;;;;;3577:20;2621:43416;;;;;;;;;;;;;;;;;;;;4069:26;2621:43416;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;11105:69;;:::i;:::-;10021:67;;:::i;:::-;9027:83;;:::i;:::-;2621:43416;;;;;;14176:46;2621:43416;14211:10;14176:46;;2621:43416;;;-1:-1:-1;2621:43416:167;;-1:-1:-1;;2621:43416:167;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;13703:64;2621:43416;;;;;;:::i;:::-;11105:69;;;;;:::i;:::-;10021:67;;:::i;:::-;9027:83;;:::i;:::-;-1:-1:-1;;;;;13642:9:167;2621:43416;13680:6;;;;:::i;:::-;13703:64;2621:43416;;13738:10;;;;2621:43416;;;13703:64;;:::i;:::-;;;;2621:43416;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;-1:-1:-1;;;;;;;;;;;2621:43416:167;;;:::i;:::-;11105:69;;:::i;:::-;10021:67;;:::i;:::-;11577:5;;;:::i;:::-;-1:-1:-1;;;;;2621:43416:167;;;;;;14652:39;2621:43416;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3687:18;2621:43416;;;;;;;;;;;-1:-1:-1;2621:43416:167;;-1:-1:-1;;2621:43416:167;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11105:69;;:::i;:::-;10021:67;;:::i;:::-;9816:5;2621:43416;9816:9;;;:38;;;2621:43416;;;;-1:-1:-1;;;;;21663:9:167;2621:43416;21701:6;;;;:::i;:::-;9816:5;2621:43416;21922:154;;;;;;;;;;;2621:43416;;;;;;;;;;;;;9816:5;22108:70;2621:43416;;9816:5;2621:43416;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;21922:154;2621:43416;;;22137:10;;22108:70;;;;2621:43416;;;;;;;-1:-1:-1;;;2621:43416:167;;;;;;;;;-1:-1:-1;;;2621:43416:167;;;;;9816:38;-1:-1:-1;9843:11:167;2621:43416;-1:-1:-1;;;;;2621:43416:167;9829:10;:25;9816:38;;2621:43416;;;;;;;;;;;;;3959:24;2621:43416;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;-1:-1:-1;2621:43416:167;;-1:-1:-1;;2621:43416:167;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;;10726:63;;:::i;:::-;7525:1;2621:43416;18474:59;;18551:19;2621:43416;;;;18551:19;:::i;:::-;18582:4;-1:-1:-1;;;;;2621:43416:167;;;18551:36;7525:1;;7607;2621:43416;18621:58;;7690:1;2621:43416;18813:58;;18885:38;;2621:43416;;18885:38;;:::i;:::-;18881:113;;2621:43416;;;19008:57;;7853:1;2621:43416;19149:57;;2621:43416;;19259:20;;7853:1;-1:-1:-1;;7853:1:167;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;7853:1;;;;;;2621:43416;;;;7853:1;;;;;2621:43416;7853:1;;2621:43416;;;7853:1;;;;;2621:43416;;;7853:1;;;;;;;;2621:43416;;;;;;;;;;;23800:35;2621:43416;;;;7853:1;;;;;23800:35;:::i;:::-;2621:43416;;;23911:3;2621:43416;;;;7853:1;;;23894:15;;;;;7853:1;2621:43416;;;;;7853:1;;2621:43416;;;;;;;;;;-1:-1:-1;;2621:43416:167;;;;;;;-1:-1:-1;;2621:43416:167;;7853:1;;2621:43416;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;7853:1;;2621:43416;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;7853:1;;2621:43416;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;7853:1;2621:43416;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;7853:1;;2621:43416;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;-1:-1:-1;;2621:43416:167;;7853:1;;2621:43416;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;7853:1;;2621:43416;;;;;;;;;;;;-1:-1:-1;;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;7853:1;;2621:43416;;;;;;;;;;;;;7525:1;2621:43416;;;20173:273:171;2621:43416:167;;;;18885:38;2621:43416;;;;;;;20272:15:171;;2621:43416:167;;;;;;;;;;;;;;;20173:273:171;;;;;;2621:43416:167;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;;20173:273:171;;;;;;;;;;:::i;:::-;2621:43416:167;20150:306:171;;4093:83:22;;;;2621:43416:167;;;;;7853:1;;2621:43416;;;;18885:38;;2621:43416;;24603:7;2621:43416;;;;7853:1;2621:43416;;;24603:7;:::i;:::-;2621:43416;23879:13;;;24529:162;39411:13;2621:43416;;;7853:1;;2621:43416;;;39411:13;:::i;:::-;2621:43416;;;-1:-1:-1;;;;;;39462:26:167;2621:43416;;;7853:1;;2621:43416;;;39462:26;:::i;:::-;2621:43416;39462:29;2621:43416;;;39462:34;39511:20;;2621:43416;39546:433;;;;;2621:43416;;;39594:16;2621:43416;;;;;;;;7853:1;2621:43416;;;;;;;;;7853:1;2621:43416;;;39594:16;:::i;:::-;2621:43416;;;:::i;:::-;;-1:-1:-1;;;;;40058:14:167;2621:43416;;;40011:20;2621:43416;;;7853:1;;2621:43416;;;40011:20;:::i;:::-;2621:43416;;;7853:1;2621:43416;;;40058:14;:::i;:::-;2621:43416;;40011:71;;;;;40042:7;40011:71;;;:::i;:::-;;40101:8;40097:513;;39546:433;39407:1562;24529:162;;40097:513;40152:52;40167:20;2621:43416;;;7853:1;;2621:43416;;;40167:20;:::i;:::-;40189:14;2621:43416;;;7853:1;;2621:43416;;;40189:14;:::i;:::-;40152:52;;:::i;:::-;40226:16;40222:125;;40097:513;40510:85;2621:43416;40526:14;2621:43416;;;7853:1;;2621:43416;;;40526:14;:::i;:::-;18885:38;2621:43416;-1:-1:-1;;;;;;40568:26:167;2621:43416;;;7853:1;;2621:43416;;;40568:26;:::i;:::-;2621:43416;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;7853:1;2621:43416;;;;;;;;40510:85;40097:513;;;40222:125;40271:57;40291:20;2621:43416;;;7853:1;;2621:43416;;;40291:20;:::i;:::-;40313:14;2621:43416;;;7853:1;;2621:43416;;;40313:14;:::i;:::-;2621:43416;;;-1:-1:-1;;;;;2621:43416:167;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;40271:57;40222:125;;39546:433;2621:43416;;;;39811:153;;2621:43416;39902:16;2621:43416;;7853:1;;2621:43416;;;;;;;;39902:16;:::i;:::-;39920:26;2621:43416;;;7853:1;;2621:43416;;;39920:26;:::i;:::-;2621:43416;;;;;39855:32;;;;;;39811:153;;;;2621:43416;;7853:1;2621:43416;;;;39811:153;;;2621:43416;;;;;;;;;;:::i;:::-;;;;;;;;;;39811:153;2621:43416;;39811:153;;;;;;:::i;:::-;39546:433;;39407:1562;40663:52;40678:20;2621:43416;;;7853:1;;2621:43416;;;40678:20;:::i;40663:52::-;40733:16;40729:117;;39407:1562;40865:93;40871:16;2621:43416;;7853:1;;2621:43416;;;;;;;;40871:16;:::i;:::-;40889:14;2621:43416;;;7853:1;;2621:43416;;;40889:14;:::i;:::-;18885:38;2621:43416;-1:-1:-1;;;;;;40931:26:167;2621:43416;;;7853:1;;2621:43416;;;40931:26;:::i;:::-;2621:43416;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;7853:1;2621:43416;;;;;;;;40865:93;;;24529:162;;40729:117;40774:57;40794:20;2621:43416;;;7853:1;;2621:43416;;;40794:20;:::i;:::-;40816:14;2621:43416;;;7853:1;;2621:43416;;;40816:14;:::i;:::-;2621:43416;;;-1:-1:-1;;;;;2621:43416:167;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;40774:57;40729:117;;2621:43416;;;;;;;;;;;;;;;;23894:15;;;;2621:43416;23894:15;2621:43416;;7853:1;;;;;1083:131:25;;19295:56:167;7933:1;2621:43416;19295:56;;8014:1;2621:43416;19434:56;;2621:43416;;19539:23;;8014:1;;-1:-1:-1;;7853:1:167;8014;;;;;2621:43416;;8014:1;;2621:43416;8014:1;;;;-1:-1:-1;;;;;8014:1:167;;;;2621:43416;8014:1;;2621:43416;8014:1;;;;;;;2621:43416;7853:1;2621:43416;;;;;;;;;;;;;41742:33;;;;;;;:::i;:::-;41785:18;2621:43416;41819:13;2621:43416;41814:628;41849:3;41834:13;;;;;;41982:17;2621:43416;;;;7525:1;2621:43416;;;;;;;;;42189:46;42204:17;2621:43416;;;;8342:2;41982:17;;;2621:43416;;41982:17;;;;;:::i;:::-;42001:11;;;;;;:::i;:::-;2621:43416;;20811:50:171;;;;2621:43416:167;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;20811:50:171;;;;;;:::i;:::-;2621:43416:167;20801:61:171;;4093:83:22;;;2621:43416:167;42204:17;;:::i;:::-;42223:11;;;:::i;42189:46::-;42223:11;;;42315;42285:42;42315:11;;:::i;:::-;2621:43416;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;42285:42;42249:183;2621:43416;41819:13;;;;;;42249:183;42405:11;42371:46;42405:11;;:::i;:::-;2621:43416;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;42371:46;42249:183;;41834:13;;;1083:131:25;19578:55:167;8093:1;2621:43416;19578:55;;8175:1;2621:43416;19714:57;;2621:43416;;;19785:18;;;;;:::i;:::-;;;;2621:43416;;;19833:21;20811:50:171;2621:43416:167;;19833:21;;:::i;:::-;10021:67;;;:::i;:::-;7607:1;2621:43416;;-1:-1:-1;;;;;;2621:43416:167;8093:1;2621:43416;;;-1:-1:-1;;;;;2621:43416:167;;;;;7525:1;2621:43416;;;;;-1:-1:-1;;2621:43416:167;22711:21;-1:-1:-1;;;;;2621:43416:167;;22959:37;;2621:43416;;;-1:-1:-1;;;;;2621:43416:167;22959:37;:::i;:::-;43160:8;43156:231;;19781:183;;;;2621:43416;;19978:56;8255:2;19978:56;;;8342:2;20124:61;;;8342:2;;2621:43416;20212:24;2621:43416;;20212:24;8342:2;20199:37;;;20195:110;;19781:183;2621:43416;;;20319:60;8427:2;20319:60;;;8508:2;20478:55;;;20683:18;20612:19;2621:43416;;;;20612:19;:::i;:::-;20683:18;;:::i;:::-;20715:21;20811:50:171;2621:43416:167;;20715:21;;:::i;:::-;20750:26;;2621:43416;;20750:26;;:::i;:::-;2621:43416;20790:38;18885;2621:43416;;18885:38;20790;:::i;:::-;21723:279:171;;;;2621:43416:167;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;;;;;;;;;21723:279:171;;;;;;:::i;:::-;2621:43416:167;21700:312:171;;8587:2:167;2621:43416;;20914:54;;;2621:43416;;;20195:110;2621:43416;43747:23;2621:43416;;;;;;;43747:23;20195:110;;;43156:231;2621:43416;;;-1:-1:-1;;;;;2621:43416:167;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;43321:55;;;43156:231;;;;19781:183;2621:43416;;-1:-1:-1;;;;;19894:21:167;2621:43416;;20811:50:171;19894:21:167;;:::i;:::-;2621:43416;8175:1;;2621:43416;19781:183;;;8175:1;;;;2621:43416;8175:1;2621:43416;;8175:1;18881:113;18956:26;;;2621:43416;;18956:26;;:::i;:::-;;:::i;:::-;18881:113;;7525:1;;;;2621:43416;7525:1;2621:43416;;7525:1;2621:43416;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;:::o;7525:1::-;;-1:-1:-1;;;;;2621:43416:167;;;;;;7525:1;:::o;7690:::-;;2621:43416;;;;;;;7690:1;:::o;:::-;;-1:-1:-1;;;;;2621:43416:167;;;;;;7690:1;:::o;2621:43416::-;;;;;;;;;;;;;-1:-1:-1;2621:43416:167;;;;;;;;-1:-1:-1;;2621:43416:167;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;:::o;10881:102::-;10950:6;-1:-1:-1;;;;;2621:43416:167;10936:10;:20;2621:43416;;10881:102::o;2621:43416::-;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;-1:-1:-1;;2621:43416:167;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2621:43416:167;;;;:::o;:::-;;;:::o;12077:215::-;-1:-1:-1;;;;;2621:43416:167;12141:10;12137:149;;12077:215;:::o;12137:149::-;12150:1;12185:6;;;;;:29;;;;:::i;:::-;;2621:43416;;;12077:215::o;2621:43416::-;;;;12150:1;2621:43416;;12150:1;2621:43416;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2621:43416:167;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;11266:108::-;2621:43416;;-1:-1:-1;;;11325:24:167;;;2621:43416;11325:24;2621:43416;11333:6;-1:-1:-1;;;;;2621:43416:167;11325:24;;;;;;;-1:-1:-1;11325:24:167;;;11266:108;11324:25;2621:43416;;11266:108::o;2621:43416::-;;;;-1:-1:-1;2621:43416:167;11325:24;-1:-1:-1;2621:43416:167;11325:24;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;2621:43416;;;;;;;;;10175:89;2621:43416;10233:6;2621:43416;;;;10175:89::o;2621:43416::-;;;;-1:-1:-1;2621:43416:167;;-1:-1:-1;2621:43416:167;11710:228;-1:-1:-1;;;;;2621:43416:167;11773:10;11769:163;;11710:228;:::o;11769:163::-;11821:6;;2621:43416;;11814:54;-1:-1:-1;;;;;11814:14:167;11821:6;11814:14;:::i;:::-;2621:43416;;-1:-1:-1;;;11814:54:167;;11842:10;11814:54;;;2621:43416;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;;;;;11782:1;;2621:43416;11814:54;;;;;;;11782:1;11814:54;;;11769:163;2621:43416;;;;11710:228::o;2621:43416::-;;;;11782:1;2621:43416;11814:54;11782:1;2621:43416;11814:54;;;;2621:43416;11814:54;2621:43416;11814:54;;;;;;;:::i;:::-;;;;9216:107;9281:5;2621:43416;9281:9;2621:43416;;9216:107::o;2621:43416::-;;;;-1:-1:-1;2621:43416:167;;-1:-1:-1;2621:43416:167;43951:182;2621:43416;;-1:-1:-1;;;44053:33:167;;2621:43416;44053:33;;2621:43416;;44053:33;;2621:43416;;-1:-1:-1;;;;;2621:43416:167;44053:33;;;;;;;-1:-1:-1;44053:33:167;;;43951:182;-1:-1:-1;;;;;;2621:43416:167;;43951:182::o;44053:33::-;;;;;;;;;;;;;;;;;:::i;:::-;;;2621:43416;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;44053:33;;;;;;-1:-1:-1;44053:33:167;;863:809:22;1052:614;;;863:809;1052:614;;-1:-1:-1;;1052:614:22;;;-1:-1:-1;;;;;1052:614:22;;;;;;;;;;863:809::o;2621:43416:167:-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;2621:43416:167;;;;;;;:::o;25314:1125::-;25572:36;;;:::i;:::-;25571:37;25567:866;;25314:1125;:::o;25567:866::-;25878:13;;;;;:::i;:::-;25874:453;;25567:866;26346:76;;26367:20;;;;;:::i;:::-;26389:16;;;;;;:::i;:::-;26407:14;;;;;;;;:::i;:::-;2621:43416;26389:16;2621:43416;;;;;;;;;;8342:2;;26346:76;;:::i;:::-;;;;25314:1125::o;25874:453::-;25929:20;;;-1:-1:-1;25929:20:167;;;;:::i;:::-;25969:16;;;;;;;:::i;:::-;2621:43416;;;25969:16;2621:43416;;;;;;;;;;;25929:57;;25960:7;25929:57;;;:::i;:::-;;26009:8;26005:308;;25874:453;;;26005:308;26229:20;26198:68;26229:20;;:::i;:::-;26251:14;;;;;:::i;:::-;25969:16;2621:43416;;8342:2;;2621:43416;;-1:-1:-1;;;;;2621:43416:167;;;;;;;-1:-1:-1;;;;;2621:43416:167;;;;;;;;;26198:68;2621:43416;44375:253;;-1:-1:-1;;;;;2621:43416:167;44472:10;;44468:133;;44610:11;;44617:4;44375:253;:::o;44468:133::-;2621:43416;44516:46;;;;;44538:5;44516:46;;;:::i;:::-;;44576:14;:::o;29518:3845::-;29657:16;;;;;;:::i;:::-;2621:43416;;-1:-1:-1;;;;;2621:43416:167;29690:20;;;;;:::i;:::-;2621:43416;29690:38;:61;;;;29518:3845;29690:83;;;;29518:3845;29688:86;29684:129;;29853:249;;;;;30118:17;30134:1;30118:17;;;:38;;;29518:3845;30116:41;30112:84;;2962:42;;;;30134:1;2621:43416;;30337:37;;30331:83;;30134:1;30533:95;;;31199:31;31209:21;31199:31;;;:90;;;29518:3845;31199:147;;;29518:3845;31199:204;;;29518:3845;31199:265;;;29518:3845;31199:331;;;29518:3845;31199:373;;;29518:3845;31199:425;;;29518:3845;31199:465;;;29518:3845;31199:515;;;29518:3845;31199:562;;;29518:3845;31199:633;;;29518:3845;31199:687;;;29518:3845;31199:738;;;29518:3845;31184:763;31180:806;;2962:42;;;-1:-1:-1;;2962:42:167;;;30134:1;32156:21;2962:42;32156:21;:::i;:::-;32187:117;;;;;;32523:216;;;;;;;;;;30134:1;32753:17;;30134:1;;32786:83;;;;;;;;30134:1;29518:3845;:::o;32749:586::-;32905:1;32889:17;;32905:1;;32922:91;;;;30134:1;29518:3845;:::o;32885:450::-;33049:1;33033:17;;;;;;;;33029:306;33049:1;;;33066:99;;;;;;;30134:1;29518:3845;:::o;33029:306::-;33201:1;33185:17;33181:154;;33029:306;;;;;;;30134:1;29518:3845;:::o;33181:154::-;32523:216;;;33218:107;;33181:154;;;;;;;;31180:806;31963:12;;;;;2621:43416;31963:12;:::o;31199:738::-;31902:35;31912:25;31902:35;;;31199:738;;:687;31848:38;31858:28;31848:38;;;31199:687;;:633;31777:55;31787:45;31777:55;;;31199:633;;:562;31730:31;31740:21;31730:31;;;31199:562;;:515;31680:34;31690:24;31680:34;;;31199:515;;:465;31640:24;31650:14;31640:24;;;31199:465;;:425;31588:36;31598:26;31588:36;;;31199:425;;:373;31546:26;31556:16;31546:26;;;31199:373;;:331;31480:50;-1:-1:-1;;;;;;;;;;;31480:50:167;;;31199:331;;:265;31419:45;31429:35;31419:45;;;31199:265;;:204;31362:41;31372:31;31362:41;;;31199:204;;:147;31305:41;31315:31;31305:41;;;31199:147;;:90;31246:43;31256:33;31246:43;;;31199:90;;30331:83;30391:12;;;;2621:43416;30391:12;:::o;30118:38::-;30139:17;30155:1;30139:17;;;30118:38;;29684:129;29790:12;;2621:43416;29790:12;:::o;29690:83::-;29755:18;;;;29690:83;;:61;-1:-1:-1;;;;;29732:14:167;;;;;;;:::i;:::-;2621:43416;29732:19;29690:61;;","linkReferences":{},"immutableReferences":{"82558":[{"start":569,"length":32},{"start":797,"length":32},{"start":5168,"length":32},{"start":5329,"length":32},{"start":5492,"length":32},{"start":5674,"length":32}]}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","executableBalanceTopUp(uint128)":"704ed542","executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)":"c6049692","exited()":"5ce6c327","inheritor()":"36a52a18","initialize(address,address,bool,uint128)":"bfa28576","initializer()":"9ce110d7","nonce()":"affed0e0","performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))":"084f443a","router()":"f887ea40","sendMessage(bytes,bool)":"42129d00","sendReply(bytes32,bytes)":"7a8e0cdd","stateHash()":"701da98e","transferLockedValueToInheritor()":"e43f3433"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AbiInterfaceAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EtherTransferToRouterFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InheritorMustBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitMessageNotCreated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitMessageNotCreatedAndCallerNotInitializer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitializerAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidActorId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFallbackCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IsSmallAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProgramExited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProgramNotExited\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferLockedValueToInheritorExternalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WVaraTransferFailed\",\"type\":\"error\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic0\",\"type\":\"uint256\"}],\"name\":\"DebugEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageCallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"callReply\",\"type\":\"bool\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"OwnedBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"ReplyCallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyTransferFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"TransferLockedValueToInheritorFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"executableBalanceTopUpWithPermit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exited\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inheritor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_isSmall\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"exited\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"valueToReceiveNegativeSign\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"call\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition\",\"name\":\"_transition\",\"type\":\"tuple\"}],\"name\":\"performStateTransition\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"transitionHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_callReply\",\"type\":\"bool\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferLockedValueToInheritor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Mirror smart contract is responsible for storing the minimal state of programs on our platform and transitioning from one state to another by calling `performStateTransition(...)`. It's built on actor-model architecture, and in Ethereum, we implement this through \\\"request-response\\\" model. This means we have two types of events: - \\\"Requested\\\" events - when user calls one of the methods marked as \\\"Primary Gear logic\\\" we emit such an event, and all our nodes process it off-chain - \\\"Responded\\\" events - when we receive response from our nodes and transmit it back to Ethereum. All logic called within `performStateTransition(...)` and leading to methods marked as \\\"Private calls related to performStateTransition\\\" are such events. It's important not to confuse these two, as this is how we implement the actor model in Ethereum. Mirror economic model has two balances: - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`. This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`. - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain. It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform. You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users can use it for free. This is called the \\\"reverse-gas model\\\". Developer can also require the presence of `value` in the owned balance when calling methods in a WASM smart contract to protect their program from spam.\",\"errors\":{\"CallerNotRouter()\":[{\"details\":\"Thrown when the caller is not the `Router`.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the `Router` contract is paused and pause-protected Mirror call is attempted.\"}],\"EtherTransferToRouterFailed()\":[{\"details\":\"Thrown when the transfer of Ether to the `Router` fails.\"}],\"InitMessageNotCreated()\":[{\"details\":\"Thrown when the first (init) message is not created by the initializer.\"}],\"InitMessageNotCreatedAndCallerNotInitializer()\":[{\"details\":\"Thrown when the first (init) message is not created and the caller is not the initializer.\"}],\"ProgramExited()\":[{\"details\":\"Thrown when the program is exited and the call is attempted.\"}],\"ProgramNotExited()\":[{\"details\":\"Thrown when the program is not exited and the call is attempted.\"}],\"TransferLockedValueToInheritorExternalFailed()\":[{\"details\":\"Thrown when the transfer of locked value to the inheritor fails (in external call).\"}],\"WVaraTransferFailed()\":[{\"details\":\"Thrown when the transfer of Vara to the `Router` fails.\"}]},\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens.\",\"params\":{\"value\":\"The amount of tokens the user wants to top up. NOTE: It's event for NODES: it requires to top up balance of the program.\"}},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message.\",\"params\":{\"destination\":\"Message destination address.\",\"id\":\"Message ID.\",\"payload\":\"Message payload.\",\"value\":\"Message value. NOTE: It's event for USERS: it informs about new message sent from program.\"}},\"MessageCallFailed(bytes32,address,uint128)\":{\"details\":\"Emitted when the program fails to call outgoing message to other contracts.\",\"params\":{\"destination\":\"Message destination address.\",\"id\":\"Message ID.\",\"value\":\"Message value. NOTE: It's event for USERS: it informs about failed message call from program.\"}},\"MessageQueueingRequested(bytes32,address,bytes,uint128,bool)\":{\"details\":\"Emitted when a new message is sent to be queued.\",\"params\":{\"callReply\":\"Indicates whether the message is sent with callReply flag. NOTE: It's event for NODES: it requires to insert message in the program's queue.\",\"id\":\"Message ID.\",\"payload\":\"Message payload.\",\"source\":\"Message source address.\",\"value\":\"Message value.\"}},\"OwnedBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's owned balance top up with his Ether.\",\"params\":{\"value\":\"The amount of Ether the user wants to top up. NOTE: It's event for NODES: it requires to top up balance of the program (in Ether).\"}},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message.\",\"params\":{\"payload\":\"Reply message payload.\",\"replyCode\":\"The code of the reply, which can be used to identify the type of reply. NOTE: It's event for USERS: it informs about new reply sent from program.\",\"replyTo\":\"The ID of the message being replied to.\",\"value\":\"Reply message value.\"}},\"ReplyCallFailed(uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program fails to call reply message to other contracts.\",\"params\":{\"replyCode\":\"The code of the reply, which can be used to identify the type of reply. NOTE: It's event for USERS: it informs about failed reply call from program.\",\"replyTo\":\"The ID of the message being replied to.\",\"value\":\"Reply message value.\"}},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued.\",\"params\":{\"payload\":\"The payload of the reply.\",\"repliedTo\":\"The ID of the message being replied to.\",\"source\":\"The address of the reply sender.\",\"value\":\"The value of the reply. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"}},\"ReplyTransferFailed(address,uint128)\":{\"details\":\"Emitted when the program fails to transfer value to destination after failed call\",\"params\":{\"destination\":\"The address of the destination.\",\"value\":\"The amount of value that failed to transfer. NOTE: It's event for USERS: it informs about failed transfer of value to destination after failed call.\"}},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed.\",\"params\":{\"stateHash\":\"The new state hash of the program. NOTE: It's event for USERS: it informs about state changes.\"}},\"TransferLockedValueToInheritorFailed(address,uint128)\":{\"details\":\"Emitted when the program fails to transfer locked value to inheritor after exit.\",\"params\":{\"inheritor\":\"The address of the inheritor.\",\"value\":\"The amount of locked value that failed to transfer. NOTE: It's event for USERS: it informs about failed transfer of locked value to inheritor after exit.\"}},\"ValueClaimFailed(bytes32,uint128)\":{\"details\":\"Emitted when a user fails in claiming value request and doesn't receive balance.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"value\":\"The amount of value that failed to claim. NOTE: It's event for USERS: it informs about failed value claim.\"}},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"value\":\"The amount of value claimed. NOTE: It's event for USERS: it informs about value claimed.\"}},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed.\",\"params\":{\"claimedId\":\"The ID of the message or reply being claimed.\",\"source\":\"The address of the claim sender. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}}},\"kind\":\"dev\",\"methods\":{\"claimValue(bytes32)\":{\"details\":\"Claim value from message in mailbox. As result of execution, the `ValueClaimingRequested` event will be emitted.\",\"params\":{\"_claimedId\":\"Message ID of the value to be claimed.\"}},\"constructor\":{\"details\":\"Minimal constructor that only sets the immutable `Router` address.\",\"params\":{\"_router\":\"The address of the `Router` contract.\"}},\"executableBalanceTopUp(uint128)\":{\"details\":\"Tops up the executable balance of the program. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\",\"params\":{\"_value\":\"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\"}},\"executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Tops up the executable balance of the program. Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` using permit signature, which can save one transaction for user. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\",\"params\":{\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_v\":\"ECDSA signature parameter.\",\"_value\":\"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\"}},\"initialize(address,address,bool,uint128)\":{\"details\":\"Initializes the contract with the given parameters. Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, so we do the initialization separately after creating `Mirror` in this method.\",\"params\":{\"_abiInterface\":\"The address of the ABI interface. This address will be displayed as \\\"proxy implementation\\\" and is necessary to show the available methods of `Mirror` smart contract on Etherscan. In case it is a Sails framework smart contract, the user can set his own ABI.\",\"_initialExecutableBalance\":\"The initial executable balance to be transferred to the program.\",\"_initializer\":\"The address of the initializer. Only this address will be able to send the first (init) message.\",\"_isSmall\":\"The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details.\"}},\"performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))\":{\"details\":\"Performs state transition for the `Mirror` contract.\",\"params\":{\"_transition\":\"The state transition data.\"},\"returns\":{\"transitionHash\":\"The hash of the performed state transition.\"}},\"sendMessage(bytes,bool)\":{\"details\":\"Sends message to the program. As result of execution, the `MessageQueueingRequested` event will be emitted.\",\"params\":{\"_callReply\":\"Whether to set `call` flag in the reply message.\",\"_payload\":\"The payload of the message.\"},\"returns\":{\"messageId\":\"Message ID of the sent message.\"}},\"sendReply(bytes32,bytes)\":{\"details\":\"Sends reply message to the program. Note that this function does not return `bytes32 messageId` of the sent message, if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` or use SDK in `ethexe/sdk/src/mirror.rs`. As result of execution, the `ReplyQueueingRequested` event will be emitted.\",\"params\":{\"_payload\":\"The payload of the reply message.\",\"_repliedTo\":\"Message ID to which the reply is sent.\"}},\"transferLockedValueToInheritor()\":{\"details\":\"Transfers locked value to the inheritor. Note that this function can be called only after program exited. As result of execution, the `LockedValueTransferRequested` event will be emitted.\"}},\"stateVariables\":{\"ETH_EVENT_ADDR\":{\"details\":\"Special address to which Sails contract sends messages so that Mirror can decode events and re-remit then as Solidity events: - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs\"},\"exited\":{\"details\":\"The bool flag indicates whether the program is exited.\"},\"inheritor\":{\"details\":\"The address of the inheritor, which is set by the program on exit. Inheritor specifies the address to which all available program value should be transferred.\"},\"initializer\":{\"details\":\"The address eligible to send first (init) message.\"},\"isSmall\":{\"details\":\"Flag that indicates what type this `Mirror` smart contract is: - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation (which is usually more expensive in terms of gas to create). This is generally the more popular way and is the one you will most likely use if you are writing programs using the Sails framework. This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`. User writes WASM smart contract on Sails framework called \\\"\\u0421ounter\\\": - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)` and waits for the code to be validated. User also generates \\\"Solidity ABI Interface\\\" to allow incrementing counter or calling other methods within WASM smart contract. Next, we assume user uploads `CounterAbi` smart contract to Ethereum: ```solidity interface ICounter { function init(bool _callReply, uint32 counter) external returns (bytes32 messageId); function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId); // ... other methods } contract CounterAbi is ICounter { function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {} function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {} } ``` User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`, where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as \\\"proxy implementation\\\", and Etherscan will think that `Mirror` has `CounterAbi` methods. User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract: `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror` to create new message and pass the Solidity call to the WASM smart contract on the Sails framework. WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`. - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation (which is usually less expensive in terms of gas to create). This case is suitable if the user develops WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`.\"},\"nonce\":{\"details\":\"Source for message ids unique generation. In-fact represents amount of messages received from Ethereum. Zeroed nonce is always represent init message.\"},\"router\":{\"details\":\"Address of the `Router` contract, which is the sole authority to modify the state of this contract and transfer funds from it. forge-lint: disable-next-item(screaming-snake-case-immutable)\"},\"stateHash\":{\"details\":\"Program's current state hash.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/instrumented/MirrorWithInstrumentation.sol\":\"MirrorWithInstrumentation\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/ICallbacks.sol\":{\"keccak256\":\"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf\",\"dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/instrumented/MirrorWithInstrumentation.sol\":{\"keccak256\":\"0xc002925722169b36e61932b56597254170088077891987bca8fe2bbfae79211b\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://1ac128a982b363e26047b01034e7ea31ef77e15acb577f2ce2540473a6352b3e\",\"dweb:/ipfs/Qma7uJQdz3hr58oUN1zxkDrCZhZywh6f6A12nEpUhVdGNa\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AbiInterfaceAlreadySet"},{"inputs":[],"type":"error","name":"CallerNotRouter"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"EtherTransferToRouterFailed"},{"inputs":[],"type":"error","name":"InheritorMustBeZero"},{"inputs":[],"type":"error","name":"InitMessageNotCreated"},{"inputs":[],"type":"error","name":"InitMessageNotCreatedAndCallerNotInitializer"},{"inputs":[],"type":"error","name":"InitializerAlreadySet"},{"inputs":[],"type":"error","name":"InvalidActorId"},{"inputs":[],"type":"error","name":"InvalidFallbackCall"},{"inputs":[],"type":"error","name":"IsSmallAlreadySet"},{"inputs":[],"type":"error","name":"ProgramExited"},{"inputs":[],"type":"error","name":"ProgramNotExited"},{"inputs":[],"type":"error","name":"TransferLockedValueToInheritorExternalFailed"},{"inputs":[],"type":"error","name":"WVaraTransferFailed"},{"inputs":[{"internalType":"uint256","name":"topic0","type":"uint256","indexed":true}],"type":"event","name":"DebugEvent","anonymous":true},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageCallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bool","name":"callReply","type":"bool","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"OwnedBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"ReplyCallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"destination","type":"address","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyTransferFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"inheritor","type":"address","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"TransferLockedValueToInheritorFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUp"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceTopUpWithPermit"},{"inputs":[],"stateMutability":"view","type":"function","name":"exited","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"inheritor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_initializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"},{"internalType":"bool","name":"_isSmall","type":"bool"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initializer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Gear.StateTransition","name":"_transition","type":"tuple","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bool","name":"exited","type":"bool"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"bool","name":"valueToReceiveNegativeSign","type":"bool"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]},{"internalType":"bool","name":"call","type":"bool"}]}]}],"stateMutability":"payable","type":"function","name":"performStateTransition","outputs":[{"internalType":"bytes32","name":"transitionHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"bool","name":"_callReply","type":"bool"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"messageId","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"transferLockedValueToInheritor"}],"devdoc":{"kind":"dev","methods":{"claimValue(bytes32)":{"details":"Claim value from message in mailbox. As result of execution, the `ValueClaimingRequested` event will be emitted.","params":{"_claimedId":"Message ID of the value to be claimed."}},"constructor":{"details":"Minimal constructor that only sets the immutable `Router` address.","params":{"_router":"The address of the `Router` contract."}},"executableBalanceTopUp(uint128)":{"details":"Tops up the executable balance of the program. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.","params":{"_value":"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."}},"executableBalanceTopUpWithPermit(uint128,uint256,uint8,bytes32,bytes32)":{"details":"Tops up the executable balance of the program. Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router` using permit signature, which can save one transaction for user. As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.","params":{"_deadline":"Deadline for the transaction to be executed.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_v":"ECDSA signature parameter.","_value":"The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."}},"initialize(address,address,bool,uint128)":{"details":"Initializes the contract with the given parameters. Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default, so we do the initialization separately after creating `Mirror` in this method.","params":{"_abiInterface":"The address of the ABI interface. This address will be displayed as \"proxy implementation\" and is necessary to show the available methods of `Mirror` smart contract on Etherscan. In case it is a Sails framework smart contract, the user can set his own ABI.","_initialExecutableBalance":"The initial executable balance to be transferred to the program.","_initializer":"The address of the initializer. Only this address will be able to send the first (init) message.","_isSmall":"The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details."}},"performStateTransition((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[]))":{"details":"Performs state transition for the `Mirror` contract.","params":{"_transition":"The state transition data."},"returns":{"transitionHash":"The hash of the performed state transition."}},"sendMessage(bytes,bool)":{"details":"Sends message to the program. As result of execution, the `MessageQueueingRequested` event will be emitted.","params":{"_callReply":"Whether to set `call` flag in the reply message.","_payload":"The payload of the message."},"returns":{"messageId":"Message ID of the sent message."}},"sendReply(bytes32,bytes)":{"details":"Sends reply message to the program. Note that this function does not return `bytes32 messageId` of the sent message, if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)` or use SDK in `ethexe/sdk/src/mirror.rs`. As result of execution, the `ReplyQueueingRequested` event will be emitted.","params":{"_payload":"The payload of the reply message.","_repliedTo":"Message ID to which the reply is sent."}},"transferLockedValueToInheritor()":{"details":"Transfers locked value to the inheritor. Note that this function can be called only after program exited. As result of execution, the `LockedValueTransferRequested` event will be emitted."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/instrumented/MirrorWithInstrumentation.sol":"MirrorWithInstrumentation"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/ICallbacks.sol":{"keccak256":"0xbb45458e83d140696120ac50f5a363df99d4d98d5e3de24971835916b831e4e0","urls":["bzz-raw://1afffa7aacdec21cbb23839467aec722261dce3f6bd945475dc12742629076cf","dweb:/ipfs/QmQSvuiLoPDph41V8EPWLXSFpX9u4yDPi2wScFNbvMifHR"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/instrumented/MirrorWithInstrumentation.sol":{"keccak256":"0xc002925722169b36e61932b56597254170088077891987bca8fe2bbfae79211b","urls":["bzz-raw://1ac128a982b363e26047b01034e7ea31ef77e15acb577f2ce2540473a6352b3e","dweb:/ipfs/Qma7uJQdz3hr58oUN1zxkDrCZhZywh6f6A12nEpUhVdGNa"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":82561,"contract":"src/instrumented/MirrorWithInstrumentation.sol:MirrorWithInstrumentation","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":82564,"contract":"src/instrumented/MirrorWithInstrumentation.sol:MirrorWithInstrumentation","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":82567,"contract":"src/instrumented/MirrorWithInstrumentation.sol:MirrorWithInstrumentation","label":"exited","offset":0,"slot":"2","type":"t_bool"},{"astId":82570,"contract":"src/instrumented/MirrorWithInstrumentation.sol:MirrorWithInstrumentation","label":"inheritor","offset":1,"slot":"2","type":"t_address"},{"astId":82573,"contract":"src/instrumented/MirrorWithInstrumentation.sol:MirrorWithInstrumentation","label":"initializer","offset":0,"slot":"3","type":"t_address"},{"astId":82576,"contract":"src/instrumented/MirrorWithInstrumentation.sol:MirrorWithInstrumentation","label":"isSmall","offset":20,"slot":"3","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/instrumented/MirrorWithInstrumentation.sol","id":84078,"exportedSymbols":{"ERC1967Utils":[45701],"Gear":[88588],"Hashes":[41483],"ICallbacks":[73742],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001],"Memory":[41257],"MirrorWithInstrumentation":[84077],"StorageSlot":[49089]},"nodeType":"SourceUnit","src":"74:45964:167","nodes":[{"id":82530,"nodeType":"PragmaDirective","src":"74:24:167","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":82532,"nodeType":"ImportDirective","src":"100:84:167","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":45702,"symbolAliases":[{"foreign":{"id":82531,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"108:12:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82534,"nodeType":"ImportDirective","src":"185:74:167","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":82533,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"193:11:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82536,"nodeType":"ImportDirective","src":"260:60:167","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/Memory.sol","file":"frost-secp256k1-evm/utils/Memory.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":82535,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"268:6:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82538,"nodeType":"ImportDirective","src":"321:73:167","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":82537,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"329:6:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82540,"nodeType":"ImportDirective","src":"395:46:167","nodes":[],"absolutePath":"src/ICallbacks.sol","file":"src/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":73743,"symbolAliases":[{"foreign":{"id":82539,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73742,"src":"403:10:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82542,"nodeType":"ImportDirective","src":"442:40:167","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":82541,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"450:7:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82544,"nodeType":"ImportDirective","src":"483:40:167","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":82543,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"491:7:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82546,"nodeType":"ImportDirective","src":"524:50:167","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":82545,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"532:12:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82548,"nodeType":"ImportDirective","src":"575:44:167","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":84078,"sourceUnit":88589,"symbolAliases":[{"foreign":{"id":82547,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"583:4:167","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84077,"nodeType":"ContractDefinition","src":"2621:43416:167","nodes":[{"id":82555,"nodeType":"VariableDeclaration","src":"2919:85:167","nodes":[],"constant":true,"documentation":{"id":82552,"nodeType":"StructuredDocumentation","src":"2673:241:167","text":" @dev Special address to which Sails contract sends messages so that Mirror can decode events\n and re-remit then as Solidity events:\n - https://github.com/gear-tech/sails/blob/master/rs/src/solidity.rs"},"mutability":"constant","name":"ETH_EVENT_ADDR","nameLocation":"2945:14:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82553,"name":"address","nodeType":"ElementaryTypeName","src":"2919:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307846466646664666664646666666464666464666464646464666664646466666666646664646466646","id":82554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2962:42:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF"},"visibility":"internal"},{"id":82558,"nodeType":"VariableDeclaration","src":"3247:31:167","nodes":[],"baseFunctions":[74295],"constant":false,"documentation":{"id":82556,"nodeType":"StructuredDocumentation","src":"3011:231:167","text":" @dev Address of the `Router` contract, which is the sole authority\n to modify the state of this contract and transfer funds from it.\n forge-lint: disable-next-item(screaming-snake-case-immutable)"},"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"3272:6:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82557,"name":"address","nodeType":"ElementaryTypeName","src":"3247:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":82561,"nodeType":"VariableDeclaration","src":"3343:24:167","nodes":[],"baseFunctions":[74301],"constant":false,"documentation":{"id":82559,"nodeType":"StructuredDocumentation","src":"3285:53:167","text":" @dev Program's current state hash."},"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"3358:9:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3343:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":82564,"nodeType":"VariableDeclaration","src":"3577:20:167","nodes":[],"baseFunctions":[74307],"constant":false,"documentation":{"id":82562,"nodeType":"StructuredDocumentation","src":"3374:198:167","text":" @dev Source for message ids unique generation.\n In-fact represents amount of messages received from Ethereum.\n Zeroed nonce is always represent init message."},"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"3592:5:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82563,"name":"uint256","nodeType":"ElementaryTypeName","src":"3577:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":82567,"nodeType":"VariableDeclaration","src":"3687:18:167","nodes":[],"baseFunctions":[74313],"constant":false,"documentation":{"id":82565,"nodeType":"StructuredDocumentation","src":"3604:78:167","text":" @dev The bool flag indicates whether the program is exited."},"functionSelector":"5ce6c327","mutability":"mutable","name":"exited","nameLocation":"3699:6:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82566,"name":"bool","nodeType":"ElementaryTypeName","src":"3687:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"public"},{"id":82570,"nodeType":"VariableDeclaration","src":"3959:24:167","nodes":[],"baseFunctions":[74319],"constant":false,"documentation":{"id":82568,"nodeType":"StructuredDocumentation","src":"3760:194:167","text":" @dev The address of the inheritor, which is set by the program on exit.\n Inheritor specifies the address to which all available program value should be transferred."},"functionSelector":"36a52a18","mutability":"mutable","name":"inheritor","nameLocation":"3974:9:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82569,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":82573,"nodeType":"VariableDeclaration","src":"4069:26:167","nodes":[],"baseFunctions":[74325],"constant":false,"documentation":{"id":82571,"nodeType":"StructuredDocumentation","src":"3990:74:167","text":" @dev The address eligible to send first (init) message."},"functionSelector":"9ce110d7","mutability":"mutable","name":"initializer","nameLocation":"4084:11:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82572,"name":"address","nodeType":"ElementaryTypeName","src":"4069:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":82576,"nodeType":"VariableDeclaration","src":"7430:12:167","nodes":[],"constant":false,"documentation":{"id":82574,"nodeType":"StructuredDocumentation","src":"4102:3323:167","text":" @dev Flag that indicates what type this `Mirror` smart contract is:\n - If `false`, it means that `Mirror` (clone) uses the `MirrorProxy` implementation\n (which is usually more expensive in terms of gas to create). This is generally the\n more popular way and is the one you will most likely use if you are writing programs using the Sails framework.\n This also means that all unknown selectors (calls) in `Mirror` will be processed in `Mirror.fallback()` and\n new message will be created for them implicitly via `_sendMessage(msg.data, callReply)`.\n User writes WASM smart contract on Sails framework called \"Сounter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n User uploads WASM to Ethereum network via the call `IRouter(router).requestCodeValidation(bytes32 _codeId)`\n and waits for the code to be validated.\n User also generates \"Solidity ABI Interface\" to allow incrementing counter or calling other methods within WASM smart contract.\n Next, we assume user uploads `CounterAbi` smart contract to Ethereum:\n ```solidity\n interface ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId);\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId);\n // ... other methods\n }\n contract CounterAbi is ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {}\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {}\n }\n ```\n User calls `IRouter(router).createProgramWithAbiInterface(bytes32 _codeId, bytes32 _salt, address _overrideInitializer, address _abiInterface)`,\n where `_abiInterface = address(CounterAbi)`. See how `Mirror.initialize(...)` works; it will set `CounterAbi` as \"proxy implementation\",\n and Etherscan will think that `Mirror` has `CounterAbi` methods.\n User can use any Ethereum-compatible client (Alloy, Viem, Ethers) to call method on the smart contract:\n `ICounter(mirror).counterAdd(bool _callReply=false, uint32 value=42)`, the client will automatically encode the call\n and send it, but in this case the `!isSmall` flag in `Mirror.fallback()` will be triggered, which will force `Mirror`\n to create new message and pass the Solidity call to the WASM smart contract on the Sails framework.\n WASM smart contract will send reply and we will process it in `Mirror.performStateTransition(...)`.\n - If `true`, it means that `Mirror` (clone) uses the `MirrorProxySmall` implementation\n (which is usually less expensive in terms of gas to create). This case is suitable if the user develops\n WASM smart contracts using lower-level libraries like `gstd` / `gcore`. This also means that all unknown selectors\n (calls) in `Mirror` will NOT be processed in `Mirror.fallback()`."},"mutability":"mutable","name":"isSmall","nameLocation":"7435:7:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82575,"name":"bool","nodeType":"ElementaryTypeName","src":"7430:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"id":82579,"nodeType":"VariableDeclaration","src":"7449:77:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID","nameLocation":"7475:47:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82577,"name":"uint256","nodeType":"ElementaryTypeName","src":"7449:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":82578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7525:1:167","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":82582,"nodeType":"VariableDeclaration","src":"7532:76:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID","nameLocation":"7558:46:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82580,"name":"uint256","nodeType":"ElementaryTypeName","src":"7532:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":82581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7607:1:167","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":82585,"nodeType":"VariableDeclaration","src":"7615:76:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER","nameLocation":"7641:46:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82583,"name":"uint256","nodeType":"ElementaryTypeName","src":"7615:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":82584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7690:1:167","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":82588,"nodeType":"VariableDeclaration","src":"7697:75:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER","nameLocation":"7723:45:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82586,"name":"uint256","nodeType":"ElementaryTypeName","src":"7697:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":82587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7771:1:167","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"id":82591,"nodeType":"VariableDeclaration","src":"7779:75:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES","nameLocation":"7805:45:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82589,"name":"uint256","nodeType":"ElementaryTypeName","src":"7779:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":82590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7853:1:167","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"id":82594,"nodeType":"VariableDeclaration","src":"7860:74:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES","nameLocation":"7886:44:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82592,"name":"uint256","nodeType":"ElementaryTypeName","src":"7860:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":82593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7933:1:167","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"id":82597,"nodeType":"VariableDeclaration","src":"7941:74:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES","nameLocation":"7967:44:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82595,"name":"uint256","nodeType":"ElementaryTypeName","src":"7941:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":82596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8014:1:167","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"id":82600,"nodeType":"VariableDeclaration","src":"8021:73:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES","nameLocation":"8047:43:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82598,"name":"uint256","nodeType":"ElementaryTypeName","src":"8021:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":82599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8093:1:167","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"id":82603,"nodeType":"VariableDeclaration","src":"8101:75:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR","nameLocation":"8127:45:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82601,"name":"uint256","nodeType":"ElementaryTypeName","src":"8101:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":82602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8175:1:167","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"id":82606,"nodeType":"VariableDeclaration","src":"8182:75:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR","nameLocation":"8208:44:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82604,"name":"uint256","nodeType":"ElementaryTypeName","src":"8182:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":82605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8255:2:167","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"id":82609,"nodeType":"VariableDeclaration","src":"8264:80:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH","nameLocation":"8290:49:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82607,"name":"uint256","nodeType":"ElementaryTypeName","src":"8264:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3131","id":82608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8342:2:167","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"visibility":"internal"},{"id":82612,"nodeType":"VariableDeclaration","src":"8350:79:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH","nameLocation":"8376:48:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82610,"name":"uint256","nodeType":"ElementaryTypeName","src":"8350:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3132","id":82611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8427:2:167","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"internal"},{"id":82615,"nodeType":"VariableDeclaration","src":"8436:74:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH","nameLocation":"8462:43:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82613,"name":"uint256","nodeType":"ElementaryTypeName","src":"8436:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3133","id":82614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8508:2:167","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"visibility":"internal"},{"id":82618,"nodeType":"VariableDeclaration","src":"8516:73:167","nodes":[],"constant":true,"mutability":"constant","name":"PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH","nameLocation":"8542:42:167","scope":84077,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82616,"name":"uint256","nodeType":"ElementaryTypeName","src":"8516:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3134","id":82617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8587:2:167","typeDescriptions":{"typeIdentifier":"t_rational_14_by_1","typeString":"int_const 14"},"value":"14"},"visibility":"internal"},{"id":82622,"nodeType":"EventDefinition","src":"8596:51:167","nodes":[],"anonymous":true,"eventSelector":"e6fc1df15bb41e2a123ea1d440db6747be3ed04da67b92ac280ad10a97b799d8","name":"DebugEvent","nameLocation":"8602:10:167","parameters":{"id":82621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82620,"indexed":true,"mutability":"mutable","name":"topic0","nameLocation":"8629:6:167","nodeType":"VariableDeclaration","scope":82622,"src":"8613:22:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82619,"name":"uint256","nodeType":"ElementaryTypeName","src":"8613:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8612:24:167"}},{"id":82633,"nodeType":"FunctionDefinition","src":"8808:62:167","nodes":[],"body":{"id":82632,"nodeType":"Block","src":"8837:33:167","nodes":[],"statements":[{"expression":{"id":82630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82628,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"8847:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82629,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82625,"src":"8856:7:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8847:16:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82631,"nodeType":"ExpressionStatement","src":"8847:16:167"}]},"documentation":{"id":82623,"nodeType":"StructuredDocumentation","src":"8653:150:167","text":" @dev Minimal constructor that only sets the immutable `Router` address.\n @param _router The address of the `Router` contract."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":82626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82625,"mutability":"mutable","name":"_router","nameLocation":"8828:7:167","nodeType":"VariableDeclaration","scope":82633,"src":"8820:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82624,"name":"address","nodeType":"ElementaryTypeName","src":"8820:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8819:17:167"},"returnParameters":{"id":82627,"nodeType":"ParameterList","parameters":[],"src":"8837:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82641,"nodeType":"ModifierDefinition","src":"9027:83:167","nodes":[],"body":{"id":82640,"nodeType":"Block","src":"9059:51:167","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82636,"name":"_onlyAfterInitMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82654,"src":"9069:21:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":82637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9069:23:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82638,"nodeType":"ExpressionStatement","src":"9069:23:167"},{"id":82639,"nodeType":"PlaceholderStatement","src":"9102:1:167"}]},"documentation":{"id":82634,"nodeType":"StructuredDocumentation","src":"8899:123:167","text":" @dev Functions marked with this modifier can only be called if the init message has been created before."},"name":"onlyAfterInitMessage","nameLocation":"9036:20:167","parameters":{"id":82635,"nodeType":"ParameterList","parameters":[],"src":"9056:2:167"},"virtual":false,"visibility":"internal"},{"id":82654,"nodeType":"FunctionDefinition","src":"9216:107:167","nodes":[],"body":{"id":82653,"nodeType":"Block","src":"9263:60:167","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82646,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82564,"src":"9281:5:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":82647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9289:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9281:9:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82649,"name":"InitMessageNotCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74253,"src":"9292:21:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9292:23:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82645,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9273:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9273:43:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82652,"nodeType":"ExpressionStatement","src":"9273:43:167"}]},"documentation":{"id":82642,"nodeType":"StructuredDocumentation","src":"9116:95:167","text":" @dev Internal function to check if the init message has been created before."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyAfterInitMessage","nameLocation":"9225:21:167","parameters":{"id":82643,"nodeType":"ParameterList","parameters":[],"src":"9246:2:167"},"returnParameters":{"id":82644,"nodeType":"ParameterList","parameters":[],"src":"9263:0:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":82662,"nodeType":"ModifierDefinition","src":"9490:109:167","nodes":[],"body":{"id":82661,"nodeType":"Block","src":"9535:64:167","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82657,"name":"_onlyAfterInitMessageOrInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82680,"src":"9545:34:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":82658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9545:36:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82659,"nodeType":"ExpressionStatement","src":"9545:36:167"},{"id":82660,"nodeType":"PlaceholderStatement","src":"9591:1:167"}]},"documentation":{"id":82655,"nodeType":"StructuredDocumentation","src":"9329:156:167","text":" @dev Functions marked with this modifier can only be called if the init message has been created before or the caller is the initializer."},"name":"onlyAfterInitMessageOrInitializer","nameLocation":"9499:33:167","parameters":{"id":82656,"nodeType":"ParameterList","parameters":[],"src":"9532:2:167"},"virtual":false,"visibility":"internal"},{"id":82680,"nodeType":"FunctionDefinition","src":"9738:172:167","nodes":[],"body":{"id":82679,"nodeType":"Block","src":"9798:112:167","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":82674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82667,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82564,"src":"9816:5:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":82668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9824:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9816:9:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82670,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9829:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9833:6:167","memberName":"sender","nodeType":"MemberAccess","src":"9829:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":82672,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82573,"src":"9843:11:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9829:25:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9816:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82675,"name":"InitMessageNotCreatedAndCallerNotInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74256,"src":"9856:44:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9856:46:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82666,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9808:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9808:95:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82678,"nodeType":"ExpressionStatement","src":"9808:95:167"}]},"documentation":{"id":82663,"nodeType":"StructuredDocumentation","src":"9605:128:167","text":" @dev Internal function to check if the init message has been created before or the caller is the initializer."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyAfterInitMessageOrInitializer","nameLocation":"9747:34:167","parameters":{"id":82664,"nodeType":"ParameterList","parameters":[],"src":"9781:2:167"},"returnParameters":{"id":82665,"nodeType":"ParameterList","parameters":[],"src":"9798:0:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":82688,"nodeType":"ModifierDefinition","src":"10021:67:167","nodes":[],"body":{"id":82687,"nodeType":"Block","src":"10045:43:167","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82683,"name":"_onlyIfActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82700,"src":"10055:13:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":82684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10055:15:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82685,"nodeType":"ExpressionStatement","src":"10055:15:167"},{"id":82686,"nodeType":"PlaceholderStatement","src":"10080:1:167"}]},"documentation":{"id":82681,"nodeType":"StructuredDocumentation","src":"9916:100:167","text":" @dev Functions marked with this modifier can only be called if program is active."},"name":"onlyIfActive","nameLocation":"10030:12:167","parameters":{"id":82682,"nodeType":"ParameterList","parameters":[],"src":"10042:2:167"},"virtual":false,"visibility":"internal"},{"id":82700,"nodeType":"FunctionDefinition","src":"10175:89:167","nodes":[],"body":{"id":82699,"nodeType":"Block","src":"10214:50:167","nodes":[],"statements":[{"expression":{"arguments":[{"id":82694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10232:7:167","subExpression":{"id":82693,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82567,"src":"10233:6:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82695,"name":"ProgramExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74259,"src":"10241:13:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10241:15:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82692,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10224:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10224:33:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82698,"nodeType":"ExpressionStatement","src":"10224:33:167"}]},"documentation":{"id":82689,"nodeType":"StructuredDocumentation","src":"10094:76:167","text":" @dev Internal function to check if the program is active."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyIfActive","nameLocation":"10184:13:167","parameters":{"id":82690,"nodeType":"ParameterList","parameters":[],"src":"10197:2:167"},"returnParameters":{"id":82691,"nodeType":"ParameterList","parameters":[],"src":"10214:0:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":82708,"nodeType":"ModifierDefinition","src":"10375:67:167","nodes":[],"body":{"id":82707,"nodeType":"Block","src":"10399:43:167","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82703,"name":"_onlyIfExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82719,"src":"10409:13:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":82704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10409:15:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82705,"nodeType":"ExpressionStatement","src":"10409:15:167"},{"id":82706,"nodeType":"PlaceholderStatement","src":"10434:1:167"}]},"documentation":{"id":82701,"nodeType":"StructuredDocumentation","src":"10270:100:167","text":" @dev Functions marked with this modifier can only be called if program is exited."},"name":"onlyIfExited","nameLocation":"10384:12:167","parameters":{"id":82702,"nodeType":"ParameterList","parameters":[],"src":"10396:2:167"},"virtual":false,"visibility":"internal"},{"id":82719,"nodeType":"FunctionDefinition","src":"10529:91:167","nodes":[],"body":{"id":82718,"nodeType":"Block","src":"10568:52:167","nodes":[],"statements":[{"expression":{"arguments":[{"id":82713,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82567,"src":"10586:6:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82714,"name":"ProgramNotExited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74262,"src":"10594:16:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10594:18:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82712,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10578:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10578:35:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82717,"nodeType":"ExpressionStatement","src":"10578:35:167"}]},"documentation":{"id":82709,"nodeType":"StructuredDocumentation","src":"10448:76:167","text":" @dev Internal function to check if the program is exited."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyIfExited","nameLocation":"10538:13:167","parameters":{"id":82710,"nodeType":"ParameterList","parameters":[],"src":"10551:2:167"},"returnParameters":{"id":82711,"nodeType":"ParameterList","parameters":[],"src":"10568:0:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":82727,"nodeType":"ModifierDefinition","src":"10726:63:167","nodes":[],"body":{"id":82726,"nodeType":"Block","src":"10748:41:167","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82722,"name":"_onlyRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82741,"src":"10758:11:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":82723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10758:13:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82724,"nodeType":"ExpressionStatement","src":"10758:13:167"},{"id":82725,"nodeType":"PlaceholderStatement","src":"10781:1:167"}]},"documentation":{"id":82720,"nodeType":"StructuredDocumentation","src":"10626:95:167","text":" @dev Functions marked with this modifier can only be called by the `Router`."},"name":"onlyRouter","nameLocation":"10735:10:167","parameters":{"id":82721,"nodeType":"ParameterList","parameters":[],"src":"10745:2:167"},"virtual":false,"visibility":"internal"},{"id":82741,"nodeType":"FunctionDefinition","src":"10881:102:167","nodes":[],"body":{"id":82740,"nodeType":"Block","src":"10918:65:167","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82732,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10936:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10940:6:167","memberName":"sender","nodeType":"MemberAccess","src":"10936:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":82734,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"10950:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10936:20:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82736,"name":"CallerNotRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74265,"src":"10958:15:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10958:17:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82731,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10928:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10928:48:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82739,"nodeType":"ExpressionStatement","src":"10928:48:167"}]},"documentation":{"id":82728,"nodeType":"StructuredDocumentation","src":"10795:81:167","text":" @dev Internal function to check if the caller is the `Router`."},"implemented":true,"kind":"function","modifiers":[],"name":"_onlyRouter","nameLocation":"10890:11:167","parameters":{"id":82729,"nodeType":"ParameterList","parameters":[],"src":"10901:2:167"},"returnParameters":{"id":82730,"nodeType":"ParameterList","parameters":[],"src":"10918:0:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":82749,"nodeType":"ModifierDefinition","src":"11105:69:167","nodes":[],"body":{"id":82748,"nodeType":"Block","src":"11130:44:167","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82744,"name":"_whenNotPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82765,"src":"11140:14:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":82745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11140:16:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82746,"nodeType":"ExpressionStatement","src":"11140:16:167"},{"id":82747,"nodeType":"PlaceholderStatement","src":"11166:1:167"}]},"documentation":{"id":82742,"nodeType":"StructuredDocumentation","src":"10989:111:167","text":" @dev Functions marked with this modifier can only be called when the `Router` is not paused."},"name":"whenNotPaused","nameLocation":"11114:13:167","parameters":{"id":82743,"nodeType":"ParameterList","parameters":[],"src":"11127:2:167"},"virtual":false,"visibility":"internal"},{"id":82765,"nodeType":"FunctionDefinition","src":"11266:108:167","nodes":[],"body":{"id":82764,"nodeType":"Block","src":"11306:68:167","nodes":[],"statements":[{"expression":{"arguments":[{"id":82759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11324:25:167","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":82755,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"11333:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82754,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"11325:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$74985_$","typeString":"type(contract IRouter)"}},"id":82756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11325:15:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":82757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11341:6:167","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":74748,"src":"11325:22:167","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":82758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11325:24:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82760,"name":"EnforcedPause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74268,"src":"11351:13:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11351:15:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82753,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11316:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11316:51:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82763,"nodeType":"ExpressionStatement","src":"11316:51:167"}]},"documentation":{"id":82750,"nodeType":"StructuredDocumentation","src":"11180:81:167","text":" @dev Internal function to check if the `Router` is not paused."},"implemented":true,"kind":"function","modifiers":[],"name":"_whenNotPaused","nameLocation":"11275:14:167","parameters":{"id":82751,"nodeType":"ParameterList","parameters":[],"src":"11289:2:167"},"returnParameters":{"id":82752,"nodeType":"ParameterList","parameters":[],"src":"11306:0:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":82776,"nodeType":"ModifierDefinition","src":"11512:89:167","nodes":[],"body":{"id":82775,"nodeType":"Block","src":"11551:50:167","nodes":[],"statements":[{"expression":{"arguments":[{"id":82771,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82768,"src":"11577:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":82770,"name":"_retrievingVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82806,"src":"11561:15:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":82772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11561:22:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82773,"nodeType":"ExpressionStatement","src":"11561:22:167"},{"id":82774,"nodeType":"PlaceholderStatement","src":"11593:1:167"}]},"documentation":{"id":82766,"nodeType":"StructuredDocumentation","src":"11380:127:167","text":" @dev Non-zero Vara value must be transferred from source to `Router` in functions marked with this modifier."},"name":"retrievingVara","nameLocation":"11521:14:167","parameters":{"id":82769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82768,"mutability":"mutable","name":"value","nameLocation":"11544:5:167","nodeType":"VariableDeclaration","scope":82776,"src":"11536:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82767,"name":"uint128","nodeType":"ElementaryTypeName","src":"11536:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"11535:15:167"},"virtual":false,"visibility":"internal"},{"id":82806,"nodeType":"FunctionDefinition","src":"11710:228:167","nodes":[],"body":{"id":82805,"nodeType":"Block","src":"11759:179:167","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":82784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82779,"src":"11773:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11782:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11773:10:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82804,"nodeType":"IfStatement","src":"11769:163:167","trueBody":{"id":82803,"nodeType":"Block","src":"11785:147:167","statements":[{"assignments":[82786],"declarations":[{"constant":false,"id":82786,"mutability":"mutable","name":"success","nameLocation":"11804:7:167","nodeType":"VariableDeclaration","scope":82803,"src":"11799:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82785,"name":"bool","nodeType":"ElementaryTypeName","src":"11799:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":82796,"initialValue":{"arguments":[{"expression":{"id":82791,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11842:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11846:6:167","memberName":"sender","nodeType":"MemberAccess","src":"11842:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82793,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"11854:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82779,"src":"11862:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":82788,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"11821:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82787,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83985,"src":"11814:6:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$75001_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":82789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11814:14:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":82790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11829:12:167","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"11814:27:167","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":82795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11814:54:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"11799:69:167"},{"expression":{"arguments":[{"id":82798,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82786,"src":"11890:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82799,"name":"WVaraTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74271,"src":"11899:19:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11899:21:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82797,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11882:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:39:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82802,"nodeType":"ExpressionStatement","src":"11882:39:167"}]}}]},"documentation":{"id":82777,"nodeType":"StructuredDocumentation","src":"11607:98:167","text":" @dev Internal function to transfer non-zero Vara value from source to `Router`."},"implemented":true,"kind":"function","modifiers":[],"name":"_retrievingVara","nameLocation":"11719:15:167","parameters":{"id":82780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82779,"mutability":"mutable","name":"value","nameLocation":"11743:5:167","nodeType":"VariableDeclaration","scope":82806,"src":"11735:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82778,"name":"uint128","nodeType":"ElementaryTypeName","src":"11735:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"11734:15:167"},"returnParameters":{"id":82781,"nodeType":"ParameterList","parameters":[],"src":"11759:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":82833,"nodeType":"FunctionDefinition","src":"12077:215:167","nodes":[],"body":{"id":82832,"nodeType":"Block","src":"12127:165:167","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":82814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82809,"src":"12141:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12150:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12141:10:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82831,"nodeType":"IfStatement","src":"12137:149:167","trueBody":{"id":82830,"nodeType":"Block","src":"12153:133:167","statements":[{"assignments":[82816,null],"declarations":[{"constant":false,"id":82816,"mutability":"mutable","name":"success","nameLocation":"12173:7:167","nodeType":"VariableDeclaration","scope":82830,"src":"12168:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82815,"name":"bool","nodeType":"ElementaryTypeName","src":"12168:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":82823,"initialValue":{"arguments":[{"hexValue":"","id":82821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12211:2:167","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":82817,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"12185:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12192:4:167","memberName":"call","nodeType":"MemberAccess","src":"12185:11:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":82820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":82819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82809,"src":"12204:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"12185:25:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":82822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12185:29:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"12167:47:167"},{"expression":{"arguments":[{"id":82825,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82816,"src":"12236:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82826,"name":"EtherTransferToRouterFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74274,"src":"12245:27:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12245:29:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82824,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12228:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12228:47:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82829,"nodeType":"ExpressionStatement","src":"12228:47:167"}]}}]},"documentation":{"id":82807,"nodeType":"StructuredDocumentation","src":"11944:128:167","text":" @dev Non-zero Ether value must be transferred from source to `Router` in functions marked with this modifier."},"implemented":true,"kind":"function","modifiers":[],"name":"_retrievingEther","nameLocation":"12086:16:167","parameters":{"id":82810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82809,"mutability":"mutable","name":"value","nameLocation":"12111:5:167","nodeType":"VariableDeclaration","scope":82833,"src":"12103:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82808,"name":"uint128","nodeType":"ElementaryTypeName","src":"12103:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"12102:15:167"},"returnParameters":{"id":82811,"nodeType":"ParameterList","parameters":[],"src":"12127:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":82851,"nodeType":"FunctionDefinition","src":"12677:216:167","nodes":[],"body":{"id":82850,"nodeType":"Block","src":"12835:58:167","nodes":[],"statements":[{"expression":{"arguments":[{"id":82846,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82836,"src":"12865:8:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":82847,"name":"_callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82838,"src":"12875:10:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":82845,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83276,"src":"12852:12:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes calldata,bool) returns (bytes32)"}},"id":82848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12852:34:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":82844,"id":82849,"nodeType":"Return","src":"12845:41:167"}]},"baseFunctions":[74335],"documentation":{"id":82834,"nodeType":"StructuredDocumentation","src":"12347:325:167","text":" @dev Sends message to the program.\n As result of execution, the `MessageQueueingRequested` event will be emitted.\n @param _payload The payload of the message.\n @param _callReply Whether to set `call` flag in the reply message.\n @return messageId Message ID of the sent message."},"functionSelector":"42129d00","implemented":true,"kind":"function","modifiers":[{"id":82841,"kind":"modifierInvocation","modifierName":{"id":82840,"name":"whenNotPaused","nameLocations":["12781:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"12781:13:167"},"nodeType":"ModifierInvocation","src":"12781:13:167"}],"name":"sendMessage","nameLocation":"12686:11:167","parameters":{"id":82839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82836,"mutability":"mutable","name":"_payload","nameLocation":"12713:8:167","nodeType":"VariableDeclaration","scope":82851,"src":"12698:23:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":82835,"name":"bytes","nodeType":"ElementaryTypeName","src":"12698:5:167","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":82838,"mutability":"mutable","name":"_callReply","nameLocation":"12728:10:167","nodeType":"VariableDeclaration","scope":82851,"src":"12723:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82837,"name":"bool","nodeType":"ElementaryTypeName","src":"12723:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12697:42:167"},"returnParameters":{"id":82844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82843,"mutability":"mutable","name":"messageId","nameLocation":"12820:9:167","nodeType":"VariableDeclaration","scope":82851,"src":"12812:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12812:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12811:19:167"},"scope":84077,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":82886,"nodeType":"FunctionDefinition","src":"13434:340:167","nodes":[],"body":{"id":82885,"nodeType":"Block","src":"13607:167:167","nodes":[],"statements":[{"assignments":[82866],"declarations":[{"constant":false,"id":82866,"mutability":"mutable","name":"_value","nameLocation":"13625:6:167","nodeType":"VariableDeclaration","scope":82885,"src":"13617:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82865,"name":"uint128","nodeType":"ElementaryTypeName","src":"13617:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":82872,"initialValue":{"arguments":[{"expression":{"id":82869,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13642:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13646:5:167","memberName":"value","nodeType":"MemberAccess","src":"13642:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13634:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":82867,"name":"uint128","nodeType":"ElementaryTypeName","src":"13634:7:167","typeDescriptions":{}}},"id":82871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13634:18:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"13617:35:167"},{"expression":{"arguments":[{"id":82874,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82866,"src":"13680:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":82873,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82833,"src":"13663:16:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":82875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13663:24:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82876,"nodeType":"ExpressionStatement","src":"13663:24:167"},{"eventCall":{"arguments":[{"id":82878,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82854,"src":"13726:10:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":82879,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13738:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13742:6:167","memberName":"sender","nodeType":"MemberAccess","src":"13738:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82881,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82856,"src":"13750:8:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":82882,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82866,"src":"13760:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":82877,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74165,"src":"13703:22:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":82883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13703:64:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82884,"nodeType":"EmitStatement","src":"13698:69:167"}]},"baseFunctions":[74343],"documentation":{"id":82852,"nodeType":"StructuredDocumentation","src":"12899:530:167","text":" @dev Sends reply message to the program.\n Note that this function does not return `bytes32 messageId` of the sent message,\n if you want to calculate the `messageId` then use `gprimitives::MessageId::generate_reply(replied_to)`\n or use SDK in `ethexe/sdk/src/mirror.rs`.\n As result of execution, the `ReplyQueueingRequested` event will be emitted.\n @param _repliedTo Message ID to which the reply is sent.\n @param _payload The payload of the reply message."},"functionSelector":"7a8e0cdd","implemented":true,"kind":"function","modifiers":[{"id":82859,"kind":"modifierInvocation","modifierName":{"id":82858,"name":"whenNotPaused","nameLocations":["13539:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"13539:13:167"},"nodeType":"ModifierInvocation","src":"13539:13:167"},{"id":82861,"kind":"modifierInvocation","modifierName":{"id":82860,"name":"onlyIfActive","nameLocations":["13561:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82688,"src":"13561:12:167"},"nodeType":"ModifierInvocation","src":"13561:12:167"},{"id":82863,"kind":"modifierInvocation","modifierName":{"id":82862,"name":"onlyAfterInitMessage","nameLocations":["13582:20:167"],"nodeType":"IdentifierPath","referencedDeclaration":82641,"src":"13582:20:167"},"nodeType":"ModifierInvocation","src":"13582:20:167"}],"name":"sendReply","nameLocation":"13443:9:167","parameters":{"id":82857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82854,"mutability":"mutable","name":"_repliedTo","nameLocation":"13461:10:167","nodeType":"VariableDeclaration","scope":82886,"src":"13453:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13453:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":82856,"mutability":"mutable","name":"_payload","nameLocation":"13488:8:167","nodeType":"VariableDeclaration","scope":82886,"src":"13473:23:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":82855,"name":"bytes","nodeType":"ElementaryTypeName","src":"13473:5:167","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13452:45:167"},"returnParameters":{"id":82864,"nodeType":"ParameterList","parameters":[],"src":"13607:0:167"},"scope":84077,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":82905,"nodeType":"FunctionDefinition","src":"14064:165:167","nodes":[],"body":{"id":82904,"nodeType":"Block","src":"14161:68:167","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":82899,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82889,"src":"14199:10:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":82900,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14211:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14215:6:167","memberName":"sender","nodeType":"MemberAccess","src":"14211:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":82898,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74172,"src":"14176:22:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":82902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14176:46:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82903,"nodeType":"EmitStatement","src":"14171:51:167"}]},"baseFunctions":[74349],"documentation":{"id":82887,"nodeType":"StructuredDocumentation","src":"13847:212:167","text":" @dev Claim value from message in mailbox.\n As result of execution, the `ValueClaimingRequested` event will be emitted.\n @param _claimedId Message ID of the value to be claimed."},"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[{"id":82892,"kind":"modifierInvocation","modifierName":{"id":82891,"name":"whenNotPaused","nameLocations":["14113:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"14113:13:167"},"nodeType":"ModifierInvocation","src":"14113:13:167"},{"id":82894,"kind":"modifierInvocation","modifierName":{"id":82893,"name":"onlyIfActive","nameLocations":["14127:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82688,"src":"14127:12:167"},"nodeType":"ModifierInvocation","src":"14127:12:167"},{"id":82896,"kind":"modifierInvocation","modifierName":{"id":82895,"name":"onlyAfterInitMessage","nameLocations":["14140:20:167"],"nodeType":"IdentifierPath","referencedDeclaration":82641,"src":"14140:20:167"},"nodeType":"ModifierInvocation","src":"14140:20:167"}],"name":"claimValue","nameLocation":"14073:10:167","parameters":{"id":82890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82889,"mutability":"mutable","name":"_claimedId","nameLocation":"14092:10:167","nodeType":"VariableDeclaration","scope":82905,"src":"14084:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82888,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14084:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14083:20:167"},"returnParameters":{"id":82897,"nodeType":"ParameterList","parameters":[],"src":"14161:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82923,"nodeType":"FunctionDefinition","src":"14530:168:167","nodes":[],"body":{"id":82922,"nodeType":"Block","src":"14637:61:167","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":82919,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82908,"src":"14684:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":82918,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"14652:31:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":82920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14652:39:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82921,"nodeType":"EmitStatement","src":"14647:44:167"}]},"baseFunctions":[74355],"documentation":{"id":82906,"nodeType":"StructuredDocumentation","src":"14235:290:167","text":" @dev Tops up the executable balance of the program.\n As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\n @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up."},"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[{"id":82911,"kind":"modifierInvocation","modifierName":{"id":82910,"name":"whenNotPaused","nameLocations":["14587:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"14587:13:167"},"nodeType":"ModifierInvocation","src":"14587:13:167"},{"id":82913,"kind":"modifierInvocation","modifierName":{"id":82912,"name":"onlyIfActive","nameLocations":["14601:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82688,"src":"14601:12:167"},"nodeType":"ModifierInvocation","src":"14601:12:167"},{"arguments":[{"id":82915,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82908,"src":"14629:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":82916,"kind":"modifierInvocation","modifierName":{"id":82914,"name":"retrievingVara","nameLocations":["14614:14:167"],"nodeType":"IdentifierPath","referencedDeclaration":82776,"src":"14614:14:167"},"nodeType":"ModifierInvocation","src":"14614:22:167"}],"name":"executableBalanceTopUp","nameLocation":"14539:22:167","parameters":{"id":82909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82908,"mutability":"mutable","name":"_value","nameLocation":"14570:6:167","nodeType":"VariableDeclaration","scope":82923,"src":"14562:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82907,"name":"uint128","nodeType":"ElementaryTypeName","src":"14562:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"14561:16:167"},"returnParameters":{"id":82917,"nodeType":"ParameterList","parameters":[],"src":"14637:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82971,"nodeType":"FunctionDefinition","src":"15405:374:167","nodes":[],"body":{"id":82970,"nodeType":"Block","src":"15580:199:167","nodes":[],"statements":[{"clauses":[{"block":{"id":82957,"nodeType":"Block","src":"15674:2:167","statements":[]},"errorName":"","id":82958,"nodeType":"TryCatchClause","src":"15674:2:167"},{"block":{"id":82959,"nodeType":"Block","src":"15683:2:167","statements":[]},"errorName":"","id":82960,"nodeType":"TryCatchClause","src":"15677:8:167"}],"externalCall":{"arguments":[{"expression":{"id":82945,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15616:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15620:6:167","memberName":"sender","nodeType":"MemberAccess","src":"15616:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":82949,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15636:4:167","typeDescriptions":{"typeIdentifier":"t_contract$_MirrorWithInstrumentation_$84077","typeString":"contract MirrorWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MirrorWithInstrumentation_$84077","typeString":"contract MirrorWithInstrumentation"}],"id":82948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15628:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":82947,"name":"address","nodeType":"ElementaryTypeName","src":"15628:7:167","typeDescriptions":{}}},"id":82950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15628:13:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82951,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82926,"src":"15643:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":82952,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82928,"src":"15651:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82953,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82930,"src":"15662:2:167","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":82954,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82932,"src":"15666:2:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":82955,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82934,"src":"15670:2:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":82942,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82558,"src":"15601:6:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82941,"name":"_wvara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83985,"src":"15594:6:167","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_contract$_IWrappedVara_$75001_$","typeString":"function (address) view returns (contract IWrappedVara)"}},"id":82943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15594:14:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":82944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15609:6:167","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"15594:21:167","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":82956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15594:79:167","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82961,"nodeType":"TryStatement","src":"15590:95:167"},{"expression":{"arguments":[{"id":82963,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82926,"src":"15710:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":82962,"name":"_retrievingVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82806,"src":"15694:15:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":82964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15694:23:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82965,"nodeType":"ExpressionStatement","src":"15694:23:167"},{"eventCall":{"arguments":[{"id":82967,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82926,"src":"15765:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":82966,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"15733:31:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":82968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15733:39:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82969,"nodeType":"EmitStatement","src":"15728:44:167"}]},"baseFunctions":[74369],"documentation":{"id":82924,"nodeType":"StructuredDocumentation","src":"14704:696:167","text":" @dev Tops up the executable balance of the program.\n Unlike `Mirror.executableBalanceTopUp(...)`, this method allows to transfer WVARA ERC20 token from user to `Router`\n using permit signature, which can save one transaction for user.\n As result of execution, the `ExecutableBalanceTopUpRequested` event will be emitted.\n @param _value The amount of WVARA ERC20 token to be transferred from user to `Router` as executable balance top up.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter."},"functionSelector":"c6049692","implemented":true,"kind":"function","modifiers":[{"id":82937,"kind":"modifierInvocation","modifierName":{"id":82936,"name":"whenNotPaused","nameLocations":["15541:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"15541:13:167"},"nodeType":"ModifierInvocation","src":"15541:13:167"},{"id":82939,"kind":"modifierInvocation","modifierName":{"id":82938,"name":"onlyIfActive","nameLocations":["15563:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82688,"src":"15563:12:167"},"nodeType":"ModifierInvocation","src":"15563:12:167"}],"name":"executableBalanceTopUpWithPermit","nameLocation":"15414:32:167","parameters":{"id":82935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82926,"mutability":"mutable","name":"_value","nameLocation":"15455:6:167","nodeType":"VariableDeclaration","scope":82971,"src":"15447:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82925,"name":"uint128","nodeType":"ElementaryTypeName","src":"15447:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":82928,"mutability":"mutable","name":"_deadline","nameLocation":"15471:9:167","nodeType":"VariableDeclaration","scope":82971,"src":"15463:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82927,"name":"uint256","nodeType":"ElementaryTypeName","src":"15463:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":82930,"mutability":"mutable","name":"_v","nameLocation":"15488:2:167","nodeType":"VariableDeclaration","scope":82971,"src":"15482:8:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":82929,"name":"uint8","nodeType":"ElementaryTypeName","src":"15482:5:167","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":82932,"mutability":"mutable","name":"_r","nameLocation":"15500:2:167","nodeType":"VariableDeclaration","scope":82971,"src":"15492:10:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82931,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15492:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":82934,"mutability":"mutable","name":"_s","nameLocation":"15512:2:167","nodeType":"VariableDeclaration","scope":82971,"src":"15504:10:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82933,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15504:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15446:69:167"},"returnParameters":{"id":82940,"nodeType":"ParameterList","parameters":[],"src":"15580:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":82989,"nodeType":"FunctionDefinition","src":"16025:208:167","nodes":[],"body":{"id":82988,"nodeType":"Block","src":"16090:143:167","nodes":[],"statements":[{"assignments":[null,82978],"declarations":[null,{"constant":false,"id":82978,"mutability":"mutable","name":"success","nameLocation":"16108:7:167","nodeType":"VariableDeclaration","scope":82988,"src":"16103:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82977,"name":"bool","nodeType":"ElementaryTypeName","src":"16103:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":82981,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":82979,"name":"_transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83309,"src":"16119:31:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint128_$_t_bool_$","typeString":"function () returns (uint128,bool)"}},"id":82980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16119:33:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"nodeType":"VariableDeclarationStatement","src":"16100:52:167"},{"expression":{"arguments":[{"id":82983,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82978,"src":"16170:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82984,"name":"TransferLockedValueToInheritorExternalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74277,"src":"16179:44:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16179:46:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82982,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16162:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16162:64:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82987,"nodeType":"ExpressionStatement","src":"16162:64:167"}]},"baseFunctions":[74373],"documentation":{"id":82972,"nodeType":"StructuredDocumentation","src":"15785:235:167","text":" @dev Transfers locked value to the inheritor.\n Note that this function can be called only after program exited.\n As result of execution, the `LockedValueTransferRequested` event will be emitted."},"functionSelector":"e43f3433","implemented":true,"kind":"function","modifiers":[{"id":82975,"kind":"modifierInvocation","modifierName":{"id":82974,"name":"whenNotPaused","nameLocations":["16076:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"16076:13:167"},"nodeType":"ModifierInvocation","src":"16076:13:167"}],"name":"transferLockedValueToInheritor","nameLocation":"16034:30:167","parameters":{"id":82973,"nodeType":"ParameterList","parameters":[],"src":"16064:2:167"},"returnParameters":{"id":82976,"nodeType":"ParameterList","parameters":[],"src":"16090:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":83068,"nodeType":"FunctionDefinition","src":"17231:749:167","nodes":[],"body":{"id":83067,"nodeType":"Block","src":"17386:594:167","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":83009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83004,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82573,"src":"17404:11:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":83007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17427:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":83006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17419:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83005,"name":"address","nodeType":"ElementaryTypeName","src":"17419:7:167","typeDescriptions":{}}},"id":83008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17419:10:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17404:25:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83010,"name":"InitializerAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74279,"src":"17431:21:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17431:23:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83003,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17396:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17396:59:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83013,"nodeType":"ExpressionStatement","src":"17396:59:167"},{"expression":{"arguments":[{"id":83016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17474:8:167","subExpression":{"id":83015,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82576,"src":"17475:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83017,"name":"IsSmallAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74281,"src":"17484:17:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17484:19:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83014,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17466:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17466:38:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83020,"nodeType":"ExpressionStatement","src":"17466:38:167"},{"assignments":[83025],"declarations":[{"constant":false,"id":83025,"mutability":"mutable","name":"implementationSlot","nameLocation":"17547:18:167","nodeType":"VariableDeclaration","scope":83067,"src":"17515:50:167","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":83024,"nodeType":"UserDefinedTypeName","pathNode":{"id":83023,"name":"StorageSlot.AddressSlot","nameLocations":["17515:11:167","17527:11:167"],"nodeType":"IdentifierPath","referencedDeclaration":48971,"src":"17515:23:167"},"referencedDeclaration":48971,"src":"17515:23:167","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"id":83031,"initialValue":{"arguments":[{"expression":{"id":83028,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45701,"src":"17607:12:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$45701_$","typeString":"type(library ERC1967Utils)"}},"id":83029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17620:19:167","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":45422,"src":"17607:32:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83026,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"17580:11:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":83027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17592:14:167","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":49000,"src":"17580:26:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$48971_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":83030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17580:60:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17515:125:167"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":83039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83033,"name":"implementationSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83025,"src":"17659:18:167","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":83034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17678:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48970,"src":"17659:24:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":83037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17695:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":83036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17687:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83035,"name":"address","nodeType":"ElementaryTypeName","src":"17687:7:167","typeDescriptions":{}}},"id":83038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17687:10:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17659:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83040,"name":"AbiInterfaceAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74283,"src":"17699:22:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17699:24:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83032,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17651:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17651:73:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83043,"nodeType":"ExpressionStatement","src":"17651:73:167"},{"expression":{"id":83046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83044,"name":"initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82573,"src":"17735:11:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83045,"name":"_initializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82992,"src":"17749:12:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17735:26:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83047,"nodeType":"ExpressionStatement","src":"17735:26:167"},{"expression":{"id":83050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83048,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82576,"src":"17771:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83049,"name":"_isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82996,"src":"17781:8:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17771:18:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83051,"nodeType":"ExpressionStatement","src":"17771:18:167"},{"expression":{"id":83056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":83052,"name":"implementationSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83025,"src":"17799:18:167","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$48971_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":83054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17818:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48970,"src":"17799:24:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83055,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82994,"src":"17826:13:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17799:40:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83057,"nodeType":"ExpressionStatement","src":"17799:40:167"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":83060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83058,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82998,"src":"17854:25:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":83059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17854:30:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83066,"nodeType":"IfStatement","src":"17850:124:167","trueBody":{"id":83065,"nodeType":"Block","src":"17886:88:167","statements":[{"eventCall":{"arguments":[{"id":83062,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82998,"src":"17937:25:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83061,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"17905:31:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":83063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17905:58:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83064,"nodeType":"EmitStatement","src":"17900:63:167"}]}}]},"baseFunctions":[74385],"documentation":{"id":82990,"nodeType":"StructuredDocumentation","src":"16293:933:167","text":" @dev Initializes the contract with the given parameters.\n Note that ERC-1167 (Minimal Proxy Contract) does not support constructors by default,\n so we do the initialization separately after creating `Mirror` in this method.\n @param _initializer The address of the initializer. Only this address will be able to send the first (init) message.\n @param _abiInterface The address of the ABI interface. This address will be displayed as \"proxy implementation\"\n and is necessary to show the available methods of `Mirror` smart contract on Etherscan.\n In case it is a Sails framework smart contract, the user can set his own ABI.\n @param _isSmall The flag indicating if the program is small. See the description of `Mirror.isSmall` field for details.\n @param _initialExecutableBalance The initial executable balance to be transferred to the program."},"functionSelector":"bfa28576","implemented":true,"kind":"function","modifiers":[{"id":83001,"kind":"modifierInvocation","modifierName":{"id":83000,"name":"onlyRouter","nameLocations":["17371:10:167"],"nodeType":"IdentifierPath","referencedDeclaration":82727,"src":"17371:10:167"},"nodeType":"ModifierInvocation","src":"17371:10:167"}],"name":"initialize","nameLocation":"17240:10:167","parameters":{"id":82999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82992,"mutability":"mutable","name":"_initializer","nameLocation":"17259:12:167","nodeType":"VariableDeclaration","scope":83068,"src":"17251:20:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82991,"name":"address","nodeType":"ElementaryTypeName","src":"17251:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82994,"mutability":"mutable","name":"_abiInterface","nameLocation":"17281:13:167","nodeType":"VariableDeclaration","scope":83068,"src":"17273:21:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82993,"name":"address","nodeType":"ElementaryTypeName","src":"17273:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82996,"mutability":"mutable","name":"_isSmall","nameLocation":"17301:8:167","nodeType":"VariableDeclaration","scope":83068,"src":"17296:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":82995,"name":"bool","nodeType":"ElementaryTypeName","src":"17296:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":82998,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"17319:25:167","nodeType":"VariableDeclaration","scope":83068,"src":"17311:33:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82997,"name":"uint128","nodeType":"ElementaryTypeName","src":"17311:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"17250:95:167"},"returnParameters":{"id":83002,"nodeType":"ParameterList","parameters":[],"src":"17386:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":83226,"nodeType":"FunctionDefinition","src":"18194:2818:167","nodes":[],"body":{"id":83225,"nodeType":"Block","src":"18366:2646:167","nodes":[],"statements":[{"documentation":" @dev Verify that the transition belongs to this contract.","eventCall":{"arguments":[{"id":83080,"name":"PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82579,"src":"18485:47:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83079,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"18474:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18474:59:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83082,"nodeType":"EmitStatement","src":"18469:64:167"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":83090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83084,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"18551:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18563:7:167","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"18551:19:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":83088,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18582:4:167","typeDescriptions":{"typeIdentifier":"t_contract$_MirrorWithInstrumentation_$84077","typeString":"contract MirrorWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MirrorWithInstrumentation_$84077","typeString":"contract MirrorWithInstrumentation"}],"id":83087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18574:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83086,"name":"address","nodeType":"ElementaryTypeName","src":"18574:7:167","typeDescriptions":{}}},"id":83089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18574:13:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18551:36:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83091,"name":"InvalidActorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74285,"src":"18589:14:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18589:16:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83083,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18543:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18543:63:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83094,"nodeType":"ExpressionStatement","src":"18543:63:167"},{"eventCall":{"arguments":[{"id":83096,"name":"PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82582,"src":"18632:46:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83095,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"18621:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18621:58:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83098,"nodeType":"EmitStatement","src":"18616:63:167"},{"documentation":" @dev Transfer value to router if valueToReceive is non-zero and has negative sign.","eventCall":{"arguments":[{"id":83100,"name":"PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82585,"src":"18824:46:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83099,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"18813:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18813:58:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83102,"nodeType":"EmitStatement","src":"18808:63:167"},{"condition":{"expression":{"id":83103,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"18885:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18897:26:167","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":87652,"src":"18885:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83111,"nodeType":"IfStatement","src":"18881:113:167","trueBody":{"id":83110,"nodeType":"Block","src":"18925:69:167","statements":[{"expression":{"arguments":[{"expression":{"id":83106,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"18956:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18968:14:167","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"18956:26:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83105,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82833,"src":"18939:16:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":83108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18939:44:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83109,"nodeType":"ExpressionStatement","src":"18939:44:167"}]}},{"eventCall":{"arguments":[{"id":83113,"name":"PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82588,"src":"19019:45:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83112,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19008:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19008:57:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83115,"nodeType":"EmitStatement","src":"19003:62:167"},{"documentation":" @dev Send all outgoing messages.","eventCall":{"arguments":[{"id":83117,"name":"PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82591,"src":"19160:45:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83116,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19149:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19149:57:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83119,"nodeType":"EmitStatement","src":"19144:62:167"},{"assignments":[83121],"declarations":[{"constant":false,"id":83121,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"19224:18:167","nodeType":"VariableDeclaration","scope":83225,"src":"19216:26:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19216:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83126,"initialValue":{"arguments":[{"expression":{"id":83123,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"19259:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19271:8:167","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":87662,"src":"19259:20:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}],"id":83122,"name":"_sendMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83407,"src":"19245:13:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message calldata[] calldata) returns (bytes32)"}},"id":83125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19245:35:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19216:64:167"},{"eventCall":{"arguments":[{"id":83128,"name":"PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82594,"src":"19306:44:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83127,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19295:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19295:56:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83130,"nodeType":"EmitStatement","src":"19290:61:167"},{"documentation":" @dev Send value for each claim.","eventCall":{"arguments":[{"id":83132,"name":"PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82597,"src":"19445:44:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83131,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19434:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19434:56:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83134,"nodeType":"EmitStatement","src":"19429:61:167"},{"assignments":[83136],"declarations":[{"constant":false,"id":83136,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"19508:15:167","nodeType":"VariableDeclaration","scope":83225,"src":"19500:23:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83135,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19500:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83141,"initialValue":{"arguments":[{"expression":{"id":83138,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"19539:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19551:11:167","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":87657,"src":"19539:23:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}],"id":83137,"name":"_claimValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83915,"src":"19526:12:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValueClaim calldata[] calldata) returns (bytes32)"}},"id":83140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19526:37:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19500:63:167"},{"eventCall":{"arguments":[{"id":83143,"name":"PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82600,"src":"19589:43:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83142,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19578:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19578:55:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83145,"nodeType":"EmitStatement","src":"19573:60:167"},{"documentation":" @dev Set inheritor if exited.","eventCall":{"arguments":[{"id":83147,"name":"PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82603,"src":"19725:45:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83146,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19714:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19714:57:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83149,"nodeType":"EmitStatement","src":"19709:62:167"},{"condition":{"expression":{"id":83150,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"19785:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19797:6:167","memberName":"exited","nodeType":"MemberAccess","referencedDeclaration":87643,"src":"19785:18:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83170,"nodeType":"Block","src":"19872:92:167","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":83165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83159,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"19894:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19906:9:167","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":87646,"src":"19894:21:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":83163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19927:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":83162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19919:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83161,"name":"address","nodeType":"ElementaryTypeName","src":"19919:7:167","typeDescriptions":{}}},"id":83164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19919:10:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19894:35:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":83166,"name":"InheritorMustBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74287,"src":"19931:19:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":83167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19931:21:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":83158,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19886:7:167","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":83168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19886:67:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83169,"nodeType":"ExpressionStatement","src":"19886:67:167"}]},"id":83171,"nodeType":"IfStatement","src":"19781:183:167","trueBody":{"id":83157,"nodeType":"Block","src":"19805:61:167","statements":[{"expression":{"arguments":[{"expression":{"id":83153,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"19833:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19845:9:167","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":87646,"src":"19833:21:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":83152,"name":"_setInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83948,"src":"19819:13:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":83155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19819:36:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83156,"nodeType":"ExpressionStatement","src":"19819:36:167"}]}},{"eventCall":{"arguments":[{"id":83173,"name":"PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82606,"src":"19989:44:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83172,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"19978:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19978:56:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83175,"nodeType":"EmitStatement","src":"19973:61:167"},{"documentation":" @dev Update the state hash if changed.","eventCall":{"arguments":[{"id":83177,"name":"PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82609,"src":"20135:49:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83176,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"20124:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20124:61:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83179,"nodeType":"EmitStatement","src":"20119:66:167"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83180,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82561,"src":"20199:9:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83181,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20212:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20224:12:167","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":87640,"src":"20212:24:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20199:37:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83190,"nodeType":"IfStatement","src":"20195:110:167","trueBody":{"id":83189,"nodeType":"Block","src":"20238:67:167","statements":[{"expression":{"arguments":[{"expression":{"id":83185,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20269:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20281:12:167","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":87640,"src":"20269:24:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":83184,"name":"_updateStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83963,"src":"20252:16:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":83187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20252:42:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83188,"nodeType":"ExpressionStatement","src":"20252:42:167"}]}},{"eventCall":{"arguments":[{"id":83192,"name":"PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82612,"src":"20330:48:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83191,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"20319:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20319:60:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83194,"nodeType":"EmitStatement","src":"20314:65:167"},{"documentation":" @dev Return hash of performed state transition.","eventCall":{"arguments":[{"id":83196,"name":"PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82615,"src":"20489:43:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83195,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"20478:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20478:55:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83198,"nodeType":"EmitStatement","src":"20473:60:167"},{"assignments":[83200],"declarations":[{"constant":false,"id":83200,"mutability":"mutable","name":"_stateTransitionHash","nameLocation":"20551:20:167","nodeType":"VariableDeclaration","scope":83225,"src":"20543:28:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20543:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83218,"initialValue":{"arguments":[{"expression":{"id":83203,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20612:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20624:7:167","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"20612:19:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83205,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20645:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20657:12:167","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":87640,"src":"20645:24:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83207,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20683:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20695:6:167","memberName":"exited","nodeType":"MemberAccess","referencedDeclaration":87643,"src":"20683:18:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":83209,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20715:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20727:9:167","memberName":"inheritor","nodeType":"MemberAccess","referencedDeclaration":87646,"src":"20715:21:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83211,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20750:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20762:14:167","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"20750:26:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"id":83213,"name":"_transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83072,"src":"20790:11:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":83214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20802:26:167","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":87652,"src":"20790:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":83215,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83136,"src":"20842:15:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":83216,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83121,"src":"20871:18:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83201,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"20574:4:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":83202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20579:19:167","memberName":"stateTransitionHash","nodeType":"MemberAccess","referencedDeclaration":87939,"src":"20574:24:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_bool_$_t_address_$_t_uint128_$_t_bool_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,bool,address,uint128,bool,bytes32,bytes32) pure returns (bytes32)"}},"id":83217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20574:325:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20543:356:167"},{"eventCall":{"arguments":[{"id":83220,"name":"PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82618,"src":"20925:42:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83219,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82622,"src":"20914:10:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":83221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20914:54:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83222,"nodeType":"EmitStatement","src":"20909:59:167"},{"expression":{"id":83223,"name":"_stateTransitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83200,"src":"20985:20:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83078,"id":83224,"nodeType":"Return","src":"20978:27:167"}]},"baseFunctions":[74394],"documentation":{"id":83069,"nodeType":"StructuredDocumentation","src":"17986:203:167","text":" @dev Performs state transition for the `Mirror` contract.\n @param _transition The state transition data.\n @return transitionHash The hash of the performed state transition."},"functionSelector":"084f443a","implemented":true,"kind":"function","modifiers":[{"id":83075,"kind":"modifierInvocation","modifierName":{"id":83074,"name":"onlyRouter","nameLocations":["18310:10:167"],"nodeType":"IdentifierPath","referencedDeclaration":82727,"src":"18310:10:167"},"nodeType":"ModifierInvocation","src":"18310:10:167"}],"name":"performStateTransition","nameLocation":"18203:22:167","parameters":{"id":83073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83072,"mutability":"mutable","name":"_transition","nameLocation":"18256:11:167","nodeType":"VariableDeclaration","scope":83226,"src":"18226:41:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":83071,"nodeType":"UserDefinedTypeName","pathNode":{"id":83070,"name":"Gear.StateTransition","nameLocations":["18226:4:167","18231:15:167"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"18226:20:167"},"referencedDeclaration":87663,"src":"18226:20:167","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"src":"18225:43:167"},"returnParameters":{"id":83078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83077,"mutability":"mutable","name":"transitionHash","nameLocation":"18346:14:167","nodeType":"VariableDeclaration","scope":83226,"src":"18338:22:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83076,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18338:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18337:24:167"},"scope":84077,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":83276,"nodeType":"FunctionDefinition","src":"21445:760:167","nodes":[],"body":{"id":83275,"nodeType":"Block","src":"21628:577:167","nodes":[],"statements":[{"assignments":[83241],"declarations":[{"constant":false,"id":83241,"mutability":"mutable","name":"_value","nameLocation":"21646:6:167","nodeType":"VariableDeclaration","scope":83275,"src":"21638:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83240,"name":"uint128","nodeType":"ElementaryTypeName","src":"21638:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":83247,"initialValue":{"arguments":[{"expression":{"id":83244,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21663:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":83245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21667:5:167","memberName":"value","nodeType":"MemberAccess","src":"21663:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21655:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":83242,"name":"uint128","nodeType":"ElementaryTypeName","src":"21655:7:167","typeDescriptions":{}}},"id":83246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21655:18:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"21638:35:167"},{"expression":{"arguments":[{"id":83249,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83241,"src":"21701:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83248,"name":"_retrievingEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82833,"src":"21684:16:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":83250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21684:24:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83251,"nodeType":"ExpressionStatement","src":"21684:24:167"},{"assignments":[83253],"declarations":[{"constant":false,"id":83253,"mutability":"mutable","name":"_nonce","nameLocation":"21727:6:167","nodeType":"VariableDeclaration","scope":83275,"src":"21719:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83252,"name":"uint256","nodeType":"ElementaryTypeName","src":"21719:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83255,"initialValue":{"id":83254,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82564,"src":"21736:5:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21719:22:167"},{"assignments":[83258],"declarations":[{"constant":false,"id":83258,"mutability":"mutable","name":"id","nameLocation":"21910:2:167","nodeType":"VariableDeclaration","scope":83275,"src":"21902:10:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21902:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Generate unique message ID by formula:\n - `keccak256(abi.encodePacked(address(this), nonce++))`","id":83259,"nodeType":"VariableDeclarationStatement","src":"21902:10:167"},{"AST":{"nativeSrc":"21947:129:167","nodeType":"YulBlock","src":"21947:129:167","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21968:4:167","nodeType":"YulLiteral","src":"21968:4:167","type":"","value":"0x00"},{"arguments":[{"kind":"number","nativeSrc":"21978:2:167","nodeType":"YulLiteral","src":"21978:2:167","type":"","value":"96"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"21982:7:167","nodeType":"YulIdentifier","src":"21982:7:167"},"nativeSrc":"21982:9:167","nodeType":"YulFunctionCall","src":"21982:9:167"}],"functionName":{"name":"shl","nativeSrc":"21974:3:167","nodeType":"YulIdentifier","src":"21974:3:167"},"nativeSrc":"21974:18:167","nodeType":"YulFunctionCall","src":"21974:18:167"}],"functionName":{"name":"mstore","nativeSrc":"21961:6:167","nodeType":"YulIdentifier","src":"21961:6:167"},"nativeSrc":"21961:32:167","nodeType":"YulFunctionCall","src":"21961:32:167"},"nativeSrc":"21961:32:167","nodeType":"YulExpressionStatement","src":"21961:32:167"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22013:4:167","nodeType":"YulLiteral","src":"22013:4:167","type":"","value":"0x14"},{"name":"_nonce","nativeSrc":"22019:6:167","nodeType":"YulIdentifier","src":"22019:6:167"}],"functionName":{"name":"mstore","nativeSrc":"22006:6:167","nodeType":"YulIdentifier","src":"22006:6:167"},"nativeSrc":"22006:20:167","nodeType":"YulFunctionCall","src":"22006:20:167"},"nativeSrc":"22006:20:167","nodeType":"YulExpressionStatement","src":"22006:20:167"},{"nativeSrc":"22039:27:167","nodeType":"YulAssignment","src":"22039:27:167","value":{"arguments":[{"kind":"number","nativeSrc":"22055:4:167","nodeType":"YulLiteral","src":"22055:4:167","type":"","value":"0x00"},{"kind":"number","nativeSrc":"22061:4:167","nodeType":"YulLiteral","src":"22061:4:167","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"22045:9:167","nodeType":"YulIdentifier","src":"22045:9:167"},"nativeSrc":"22045:21:167","nodeType":"YulFunctionCall","src":"22045:21:167"},"variableNames":[{"name":"id","nativeSrc":"22039:2:167","nodeType":"YulIdentifier","src":"22039:2:167"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83253,"isOffset":false,"isSlot":false,"src":"22019:6:167","valueSize":1},{"declaration":83258,"isOffset":false,"isSlot":false,"src":"22039:2:167","valueSize":1}],"flags":["memory-safe"],"id":83260,"nodeType":"InlineAssembly","src":"21922:154:167"},{"expression":{"id":83262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"22085:7:167","subExpression":{"id":83261,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82564,"src":"22085:5:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83263,"nodeType":"ExpressionStatement","src":"22085:7:167"},{"eventCall":{"arguments":[{"id":83265,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83258,"src":"22133:2:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83266,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"22137:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":83267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22141:6:167","memberName":"sender","nodeType":"MemberAccess","src":"22137:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83268,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83229,"src":"22149:8:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":83269,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83241,"src":"22159:6:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":83270,"name":"_callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83231,"src":"22167:10:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":83264,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74154,"src":"22108:24:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128,bool)"}},"id":83271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22108:70:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83272,"nodeType":"EmitStatement","src":"22103:75:167"},{"expression":{"id":83273,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83258,"src":"22196:2:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83239,"id":83274,"nodeType":"Return","src":"22189:9:167"}]},"documentation":{"id":83227,"nodeType":"StructuredDocumentation","src":"21076:364:167","text":" @dev Internal implementation of `sendMessage` function.\n This function is used to send message to the program and emit `MessageQueueingRequested` event.\n @param _payload The payload of the message.\n @param _callReply Whether to set `call` flag in the reply message.\n @return messageId Message ID of the sent message."},"implemented":true,"kind":"function","modifiers":[{"id":83234,"kind":"modifierInvocation","modifierName":{"id":83233,"name":"onlyIfActive","nameLocations":["21533:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82688,"src":"21533:12:167"},"nodeType":"ModifierInvocation","src":"21533:12:167"},{"id":83236,"kind":"modifierInvocation","modifierName":{"id":83235,"name":"onlyAfterInitMessageOrInitializer","nameLocations":["21554:33:167"],"nodeType":"IdentifierPath","referencedDeclaration":82662,"src":"21554:33:167"},"nodeType":"ModifierInvocation","src":"21554:33:167"}],"name":"_sendMessage","nameLocation":"21454:12:167","parameters":{"id":83232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83229,"mutability":"mutable","name":"_payload","nameLocation":"21482:8:167","nodeType":"VariableDeclaration","scope":83276,"src":"21467:23:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":83228,"name":"bytes","nodeType":"ElementaryTypeName","src":"21467:5:167","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":83231,"mutability":"mutable","name":"_callReply","nameLocation":"21497:10:167","nodeType":"VariableDeclaration","scope":83276,"src":"21492:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83230,"name":"bool","nodeType":"ElementaryTypeName","src":"21492:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21466:42:167"},"returnParameters":{"id":83239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83238,"mutability":"mutable","name":"messageId","nameLocation":"21613:9:167","nodeType":"VariableDeclaration","scope":83276,"src":"21605:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21605:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"21604:19:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83309,"nodeType":"FunctionDefinition","src":"22534:470:167","nodes":[],"body":{"id":83308,"nodeType":"Block","src":"22683:321:167","nodes":[],"statements":[{"assignments":[83287],"declarations":[{"constant":false,"id":83287,"mutability":"mutable","name":"balance","nameLocation":"22701:7:167","nodeType":"VariableDeclaration","scope":83308,"src":"22693:15:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83286,"name":"uint256","nodeType":"ElementaryTypeName","src":"22693:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83293,"initialValue":{"expression":{"arguments":[{"id":83290,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"22719:4:167","typeDescriptions":{"typeIdentifier":"t_contract$_MirrorWithInstrumentation_$84077","typeString":"contract MirrorWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MirrorWithInstrumentation_$84077","typeString":"contract MirrorWithInstrumentation"}],"id":83289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22711:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83288,"name":"address","nodeType":"ElementaryTypeName","src":"22711:7:167","typeDescriptions":{}}},"id":83291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22711:13:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22725:7:167","memberName":"balance","nodeType":"MemberAccess","src":"22711:21:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22693:39:167"},{"assignments":[83295],"declarations":[{"constant":false,"id":83295,"mutability":"mutable","name":"balance128","nameLocation":"22900:10:167","nodeType":"VariableDeclaration","scope":83308,"src":"22892:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83294,"name":"uint128","nodeType":"ElementaryTypeName","src":"22892:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":83300,"initialValue":{"arguments":[{"id":83298,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83287,"src":"22921:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":83297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22913:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":83296,"name":"uint128","nodeType":"ElementaryTypeName","src":"22913:7:167","typeDescriptions":{}}},"id":83299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22913:16:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"22892:37:167"},{"expression":{"components":[{"id":83301,"name":"balance128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83295,"src":"22947:10:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":83303,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82570,"src":"22974:9:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83304,"name":"balance128","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83295,"src":"22985:10:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83302,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84015,"src":"22959:14:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":83305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22959:37:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22946:51:167","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"functionReturnParameters":83285,"id":83307,"nodeType":"Return","src":"22939:58:167"}]},"documentation":{"id":83277,"nodeType":"StructuredDocumentation","src":"22211:318:167","text":" @dev Internal implementation of `transferLockedValueToInheritor` function.\n Note that this function can be called only after program exited.\n @return valueTransferred The amount of WVARA transferred.\n @return transferSuccess The flag indicating if the transfer was successful."},"implemented":true,"kind":"function","modifiers":[{"id":83280,"kind":"modifierInvocation","modifierName":{"id":83279,"name":"onlyIfExited","nameLocations":["22601:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82708,"src":"22601:12:167"},"nodeType":"ModifierInvocation","src":"22601:12:167"}],"name":"_transferLockedValueToInheritor","nameLocation":"22543:31:167","parameters":{"id":83278,"nodeType":"ParameterList","parameters":[],"src":"22574:2:167"},"returnParameters":{"id":83285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83282,"mutability":"mutable","name":"valueTransferred","nameLocation":"22639:16:167","nodeType":"VariableDeclaration","scope":83309,"src":"22631:24:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83281,"name":"uint128","nodeType":"ElementaryTypeName","src":"22631:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83284,"mutability":"mutable","name":"transferSuccess","nameLocation":"22662:15:167","nodeType":"VariableDeclaration","scope":83309,"src":"22657:20:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83283,"name":"bool","nodeType":"ElementaryTypeName","src":"22657:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22630:48:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83407,"nodeType":"FunctionDefinition","src":"23572:1232:167","nodes":[],"body":{"id":83406,"nodeType":"Block","src":"23656:1148:167","nodes":[],"statements":[{"assignments":[83320],"declarations":[{"constant":false,"id":83320,"mutability":"mutable","name":"messagesLen","nameLocation":"23674:11:167","nodeType":"VariableDeclaration","scope":83406,"src":"23666:19:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83319,"name":"uint256","nodeType":"ElementaryTypeName","src":"23666:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83323,"initialValue":{"expression":{"id":83321,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83314,"src":"23688:9:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":83322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23698:6:167","memberName":"length","nodeType":"MemberAccess","src":"23688:16:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23666:38:167"},{"assignments":[83325],"declarations":[{"constant":false,"id":83325,"mutability":"mutable","name":"messagesHashesSize","nameLocation":"23722:18:167","nodeType":"VariableDeclaration","scope":83406,"src":"23714:26:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83324,"name":"uint256","nodeType":"ElementaryTypeName","src":"23714:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83329,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83326,"name":"messagesLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83320,"src":"23743:11:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":83327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23757:2:167","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"23743:16:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23714:45:167"},{"assignments":[83331],"declarations":[{"constant":false,"id":83331,"mutability":"mutable","name":"messagesHashesMemPtr","nameLocation":"23777:20:167","nodeType":"VariableDeclaration","scope":83406,"src":"23769:28:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83330,"name":"uint256","nodeType":"ElementaryTypeName","src":"23769:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83336,"initialValue":{"arguments":[{"id":83334,"name":"messagesHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83325,"src":"23816:18:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83332,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"23800:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":83333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23807:8:167","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"23800:15:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":83335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23800:35:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23769:66:167"},{"assignments":[83338],"declarations":[{"constant":false,"id":83338,"mutability":"mutable","name":"offset","nameLocation":"23853:6:167","nodeType":"VariableDeclaration","scope":83406,"src":"23845:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83337,"name":"uint256","nodeType":"ElementaryTypeName","src":"23845:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83340,"initialValue":{"hexValue":"30","id":83339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23862:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23845:18:167"},{"body":{"id":83397,"nodeType":"Block","src":"23916:785:167","statements":[{"assignments":[83355],"declarations":[{"constant":false,"id":83355,"mutability":"mutable","name":"message","nameLocation":"23952:7:167","nodeType":"VariableDeclaration","scope":83397,"src":"23930:29:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":83354,"nodeType":"UserDefinedTypeName","pathNode":{"id":83353,"name":"Gear.Message","nameLocations":["23930:4:167","23935:7:167"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"23930:12:167"},"referencedDeclaration":87597,"src":"23930:12:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"id":83359,"initialValue":{"baseExpression":{"id":83356,"name":"_messages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83314,"src":"23962:9:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message calldata[] calldata"}},"id":83358,"indexExpression":{"id":83357,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83342,"src":"23972:1:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23962:12:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"nodeType":"VariableDeclarationStatement","src":"23930:44:167"},{"assignments":[83362],"declarations":[{"constant":false,"id":83362,"mutability":"mutable","name":"messageHash","nameLocation":"24080:11:167","nodeType":"VariableDeclaration","scope":83397,"src":"24072:19:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83361,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24072:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev Generate hash for the message.","id":83367,"initialValue":{"arguments":[{"id":83365,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83355,"src":"24111:7:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"expression":{"id":83363,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"24094:4:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":83364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24099:11:167","memberName":"messageHash","nodeType":"MemberAccess","referencedDeclaration":87880,"src":"24094:16:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Message_$87597_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.Message memory) pure returns (bytes32)"}},"id":83366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24094:25:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"24072:47:167"},{"documentation":" @dev Store the message hash in memory at messagesHashes[offset : offset+32].","expression":{"arguments":[{"id":83371,"name":"messagesHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83331,"src":"24283:20:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83372,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83338,"src":"24305:6:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83373,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83362,"src":"24313:11:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83368,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"24257:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":83370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24264:18:167","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"24257:25:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":83374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24257:68:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83375,"nodeType":"ExpressionStatement","src":"24257:68:167"},{"id":83380,"nodeType":"UncheckedBlock","src":"24339:55:167","statements":[{"expression":{"id":83378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83376,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83338,"src":"24367:6:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":83377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24377:2:167","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"24367:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83379,"nodeType":"ExpressionStatement","src":"24367:12:167"}]},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":83381,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83355,"src":"24533:7:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24541:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"24533:20:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24554:2:167","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"24533:23:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24560:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24533:28:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev Send the message based on its type (`Gear.Message` or `Gear.Reply`).","falseBody":{"id":83395,"nodeType":"Block","src":"24632:59:167","statements":[{"expression":{"arguments":[{"id":83392,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83355,"src":"24668:7:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":83391,"name":"_sendReplyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83802,"src":"24650:17:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$87597_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":83393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24650:26:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83394,"nodeType":"ExpressionStatement","src":"24650:26:167"}]},"id":83396,"nodeType":"IfStatement","src":"24529:162:167","trueBody":{"id":83390,"nodeType":"Block","src":"24563:63:167","statements":[{"expression":{"arguments":[{"id":83387,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83355,"src":"24603:7:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":83386,"name":"_sendMailboxedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83461,"src":"24581:21:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$87597_calldata_ptr_$returns$__$","typeString":"function (struct Gear.Message calldata)"}},"id":83388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24581:30:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83389,"nodeType":"ExpressionStatement","src":"24581:30:167"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83345,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83342,"src":"23894:1:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83346,"name":"messagesLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83320,"src":"23898:11:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23894:15:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83398,"initializationExpression":{"assignments":[83342],"declarations":[{"constant":false,"id":83342,"mutability":"mutable","name":"i","nameLocation":"23887:1:167","nodeType":"VariableDeclaration","scope":83398,"src":"23879:9:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83341,"name":"uint256","nodeType":"ElementaryTypeName","src":"23879:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83344,"initialValue":{"hexValue":"30","id":83343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23891:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23879:13:167"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":83349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23911:3:167","subExpression":{"id":83348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83342,"src":"23911:1:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83350,"nodeType":"ExpressionStatement","src":"23911:3:167"},"nodeType":"ForStatement","src":"23874:827:167"},{"expression":{"arguments":[{"id":83401,"name":"messagesHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83331,"src":"24753:20:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":83402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24775:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":83403,"name":"messagesHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83325,"src":"24778:18:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83399,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"24718:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":83400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24725:27:167","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"24718:34:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":83404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24718:79:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83318,"id":83405,"nodeType":"Return","src":"24711:86:167"}]},"documentation":{"id":83310,"nodeType":"StructuredDocumentation","src":"23274:293:167","text":" @dev Internal implementation of `_sendMessages` function.\n It sends all outgoing messages from the `Mirror` contract and emits appropriate events.\n @param _messages The array of messages to be sent.\n @return messagesHash The hash of the sent messages."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessages","nameLocation":"23581:13:167","parameters":{"id":83315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83314,"mutability":"mutable","name":"_messages","nameLocation":"23619:9:167","nodeType":"VariableDeclaration","scope":83407,"src":"23595:33:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.Message[]"},"typeName":{"baseType":{"id":83312,"nodeType":"UserDefinedTypeName","pathNode":{"id":83311,"name":"Gear.Message","nameLocations":["23595:4:167","23600:7:167"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"23595:12:167"},"referencedDeclaration":87597,"src":"23595:12:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"id":83313,"nodeType":"ArrayTypeName","src":"23595:14:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Message_$87597_storage_$dyn_storage_ptr","typeString":"struct Gear.Message[]"}},"visibility":"internal"}],"src":"23594:35:167"},"returnParameters":{"id":83318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83407,"src":"23647:7:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83316,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23647:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23646:9:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83461,"nodeType":"FunctionDefinition","src":"25314:1125:167","nodes":[],"body":{"id":83460,"nodeType":"Block","src":"25385:1054:167","nodes":[],"statements":[{"condition":{"id":83417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"25571:37:167","subExpression":{"arguments":[{"id":83415,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"25599:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}],"id":83414,"name":"_tryParseAndEmitSailsEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83671,"src":"25572:26:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Message_$87597_calldata_ptr_$returns$_t_bool_$","typeString":"function (struct Gear.Message calldata) returns (bool)"}},"id":83416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25572:36:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev First, we'll try to parse event from the Sails framework\n and then emit it on behalf of the `Mirror` smart contract.","id":83459,"nodeType":"IfStatement","src":"25567:866:167","trueBody":{"id":83458,"nodeType":"Block","src":"25610:823:167","statements":[{"condition":{"expression":{"id":83418,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"25878:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25887:4:167","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":87596,"src":"25878:13:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83446,"nodeType":"IfStatement","src":"25874:453:167","trueBody":{"id":83445,"nodeType":"Block","src":"25893:434:167","statements":[{"assignments":[83421,null],"declarations":[{"constant":false,"id":83421,"mutability":"mutable","name":"success","nameLocation":"25917:7:167","nodeType":"VariableDeclaration","scope":83445,"src":"25912:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83420,"name":"bool","nodeType":"ElementaryTypeName","src":"25912:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":83430,"initialValue":{"arguments":[{"expression":{"id":83427,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"25969:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25978:7:167","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"25969:16:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"expression":{"id":83422,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"25929:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25938:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"25929:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25950:4:167","memberName":"call","nodeType":"MemberAccess","src":"25929:25:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":83426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":83425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25960:7:167","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"}],"src":"25929:39:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":83429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25929:57:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"25911:75:167"},{"condition":{"id":83432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"26009:8:167","subExpression":{"id":83431,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83421,"src":"26010:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83444,"nodeType":"IfStatement","src":"26005:308:167","trueBody":{"id":83443,"nodeType":"Block","src":"26019:294:167","statements":[{"documentation":" @dev In case of failed call, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"expression":{"id":83434,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26216:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26225:2:167","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"26216:11:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83436,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26229:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26238:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"26229:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83438,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26251:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26260:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"26251:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83433,"name":"MessageCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"26198:17:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128)"}},"id":83440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26198:68:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83441,"nodeType":"EmitStatement","src":"26193:73:167"},{"functionReturnParameters":83413,"id":83442,"nodeType":"Return","src":"26288:7:167"}]}}]}},{"eventCall":{"arguments":[{"expression":{"id":83448,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26354:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26363:2:167","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"26354:11:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83450,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26367:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"26367:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83452,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26389:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26398:7:167","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"26389:16:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":83454,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83411,"src":"26407:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26416:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"26407:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83447,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74193,"src":"26346:7:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":83456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26346:76:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83457,"nodeType":"EmitStatement","src":"26341:81:167"}]}}]},"documentation":{"id":83408,"nodeType":"StructuredDocumentation","src":"24810:499:167","text":" @dev Internal function to send message that goes to mailbox.\n Value never sent since goes to mailbox.\n Emits `Message` event if it is not event from Sails framework.\n If `_message.call = true`, then call will be made to `_message.destination`\n with _message.payload and gas limit of 500_000 to prevent DoS attacks.\n If call fails, then `MessageCallFailed` event will be emitted.\n @param _message The message to be sent."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMailboxedMessage","nameLocation":"25323:21:167","parameters":{"id":83412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83411,"mutability":"mutable","name":"_message","nameLocation":"25367:8:167","nodeType":"VariableDeclaration","scope":83461,"src":"25345:30:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":83410,"nodeType":"UserDefinedTypeName","pathNode":{"id":83409,"name":"Gear.Message","nameLocations":["25345:4:167","25350:7:167"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"25345:12:167"},"referencedDeclaration":87597,"src":"25345:12:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"25344:32:167"},"returnParameters":{"id":83413,"nodeType":"ParameterList","parameters":[],"src":"25385:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83671,"nodeType":"FunctionDefinition","src":"29518:3845:167","nodes":[],"body":{"id":83670,"nodeType":"Block","src":"29622:3741:167","nodes":[],"statements":[{"assignments":[83471],"declarations":[{"constant":false,"id":83471,"mutability":"mutable","name":"payload","nameLocation":"29647:7:167","nodeType":"VariableDeclaration","scope":83670,"src":"29632:22:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":83470,"name":"bytes","nodeType":"ElementaryTypeName","src":"29632:5:167","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":83474,"initialValue":{"expression":{"id":83472,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83465,"src":"29657:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29666:7:167","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"29657:16:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"29632:41:167"},{"condition":{"id":83490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"29688:86:167","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":83478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83475,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83465,"src":"29690:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29699:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"29690:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":83477,"name":"ETH_EVENT_ADDR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82555,"src":"29714:14:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29690:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":83482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83479,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83465,"src":"29732:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29741:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"29732:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29750:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29732:19:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29690:61:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83484,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83471,"src":"29755:7:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":83485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29763:6:167","memberName":"length","nodeType":"MemberAccess","src":"29755:14:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":83486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29772:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"29755:18:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"29690:83:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29689:85:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83494,"nodeType":"IfStatement","src":"29684:129:167","trueBody":{"id":83493,"nodeType":"Block","src":"29776:37:167","statements":[{"expression":{"hexValue":"66616c7365","id":83491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29797:5:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83469,"id":83492,"nodeType":"Return","src":"29790:12:167"}]}},{"assignments":[83496],"declarations":[{"constant":false,"id":83496,"mutability":"mutable","name":"topicsLength","nameLocation":"29831:12:167","nodeType":"VariableDeclaration","scope":83670,"src":"29823:20:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83495,"name":"uint256","nodeType":"ElementaryTypeName","src":"29823:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83497,"nodeType":"VariableDeclarationStatement","src":"29823:20:167"},{"AST":{"nativeSrc":"29878:224:167","nodeType":"YulBlock","src":"29878:224:167","statements":[{"nativeSrc":"30038:54:167","nodeType":"YulAssignment","src":"30038:54:167","value":{"arguments":[{"kind":"number","nativeSrc":"30058:3:167","nodeType":"YulLiteral","src":"30058:3:167","type":"","value":"248"},{"arguments":[{"name":"payload.offset","nativeSrc":"30076:14:167","nodeType":"YulIdentifier","src":"30076:14:167"}],"functionName":{"name":"calldataload","nativeSrc":"30063:12:167","nodeType":"YulIdentifier","src":"30063:12:167"},"nativeSrc":"30063:28:167","nodeType":"YulFunctionCall","src":"30063:28:167"}],"functionName":{"name":"shr","nativeSrc":"30054:3:167","nodeType":"YulIdentifier","src":"30054:3:167"},"nativeSrc":"30054:38:167","nodeType":"YulFunctionCall","src":"30054:38:167"},"variableNames":[{"name":"topicsLength","nativeSrc":"30038:12:167","nodeType":"YulIdentifier","src":"30038:12:167"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83471,"isOffset":true,"isSlot":false,"src":"30076:14:167","suffix":"offset","valueSize":1},{"declaration":83496,"isOffset":false,"isSlot":false,"src":"30038:12:167","valueSize":1}],"flags":["memory-safe"],"id":83498,"nodeType":"InlineAssembly","src":"29853:249:167"},{"condition":{"id":83507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30116:41:167","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83499,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"30118:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"31","id":83500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30134:1:167","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30118:17:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83502,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"30139:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"34","id":83503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30155:1:167","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"30139:17:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30118:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83506,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30117:40:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83511,"nodeType":"IfStatement","src":"30112:84:167","trueBody":{"id":83510,"nodeType":"Block","src":"30159:37:167","statements":[{"expression":{"hexValue":"66616c7365","id":83508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30180:5:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83469,"id":83509,"nodeType":"Return","src":"30173:12:167"}]}},{"assignments":[83513],"declarations":[{"constant":false,"id":83513,"mutability":"mutable","name":"topicsLengthInBytes","nameLocation":"30214:19:167","nodeType":"VariableDeclaration","scope":83670,"src":"30206:27:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83512,"name":"uint256","nodeType":"ElementaryTypeName","src":"30206:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83514,"nodeType":"VariableDeclarationStatement","src":"30206:27:167"},{"id":83523,"nodeType":"UncheckedBlock","src":"30243:78:167","statements":[{"expression":{"id":83521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83515,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83513,"src":"30267:19:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":83516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30289:1:167","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83517,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"30293:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":83518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30308:2:167","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"30293:17:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30289:21:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30267:43:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83522,"nodeType":"ExpressionStatement","src":"30267:43:167"}]},{"condition":{"id":83529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30335:40:167","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83524,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83471,"src":"30337:7:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":83525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30345:6:167","memberName":"length","nodeType":"MemberAccess","src":"30337:14:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":83526,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83513,"src":"30355:19:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30337:37:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83528,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30336:39:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83533,"nodeType":"IfStatement","src":"30331:83:167","trueBody":{"id":83532,"nodeType":"Block","src":"30377:37:167","statements":[{"expression":{"hexValue":"66616c7365","id":83530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30398:5:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83469,"id":83531,"nodeType":"Return","src":"30391:12:167"}]}},{"assignments":[83536],"declarations":[{"constant":false,"id":83536,"mutability":"mutable","name":"topic1","nameLocation":"30517:6:167","nodeType":"VariableDeclaration","scope":83670,"src":"30509:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83535,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30509:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev We use offset 1 to skip `uint8 topicsLength`","id":83537,"nodeType":"VariableDeclarationStatement","src":"30509:14:167"},{"AST":{"nativeSrc":"30558:70:167","nodeType":"YulBlock","src":"30558:70:167","statements":[{"nativeSrc":"30572:46:167","nodeType":"YulAssignment","src":"30572:46:167","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"30599:14:167","nodeType":"YulIdentifier","src":"30599:14:167"},{"kind":"number","nativeSrc":"30615:1:167","nodeType":"YulLiteral","src":"30615:1:167","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"30595:3:167","nodeType":"YulIdentifier","src":"30595:3:167"},"nativeSrc":"30595:22:167","nodeType":"YulFunctionCall","src":"30595:22:167"}],"functionName":{"name":"calldataload","nativeSrc":"30582:12:167","nodeType":"YulIdentifier","src":"30582:12:167"},"nativeSrc":"30582:36:167","nodeType":"YulFunctionCall","src":"30582:36:167"},"variableNames":[{"name":"topic1","nativeSrc":"30572:6:167","nodeType":"YulIdentifier","src":"30572:6:167"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83471,"isOffset":true,"isSlot":false,"src":"30599:14:167","suffix":"offset","valueSize":1},{"declaration":83536,"isOffset":false,"isSlot":false,"src":"30572:6:167","valueSize":1}],"flags":["memory-safe"],"id":83538,"nodeType":"InlineAssembly","src":"30533:95:167"},{"condition":{"id":83609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"31184:763:167","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83539,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31199:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83540,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"31209:12:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":83541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31222:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31209:21:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31199:31:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83543,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31246:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83544,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74154,"src":"31256:24:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bool_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128,bool)"}},"id":83545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31281:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31256:33:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31246:43:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:90:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83548,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31305:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83549,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74165,"src":"31315:22:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":83550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31338:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31315:31:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31305:41:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:147:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83553,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31362:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83554,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74172,"src":"31372:22:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":83555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31395:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31372:31:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31362:41:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:204:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83558,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31419:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83559,"name":"OwnedBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74177,"src":"31429:26:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":83560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31456:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31429:35:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31419:45:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:265:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83563,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31480:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83564,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74182,"src":"31490:31:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":83565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31522:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31490:40:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31480:50:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:331:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83568,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31546:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83569,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74193,"src":"31556:7:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":83570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31564:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31556:16:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31546:26:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:373:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83573,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31588:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83574,"name":"MessageCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"31598:17:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128)"}},"id":83575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31616:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31598:26:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31588:36:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:425:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83578,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31640:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83579,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74213,"src":"31650:5:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":83580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31656:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31650:14:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31640:24:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:465:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83583,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31680:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83584,"name":"ReplyCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74222,"src":"31690:15:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (uint128,bytes32,bytes4)"}},"id":83585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31706:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31690:24:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31680:34:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:515:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83588,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31730:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83589,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74229,"src":"31740:12:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":83590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31753:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31740:21:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31730:31:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:562:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83593,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31777:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83594,"name":"TransferLockedValueToInheritorFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74236,"src":"31787:36:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":83595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31824:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31787:45:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31777:55:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:633:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83598,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31848:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83599,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"31858:19:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":83600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31878:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31858:28:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31848:38:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:687:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":83606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83603,"name":"topic1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83536,"src":"31902:6:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":83604,"name":"ValueClaimFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74250,"src":"31912:16:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":83605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31929:8:167","memberName":"selector","nodeType":"MemberAccess","src":"31912:25:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"31902:35:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31199:738:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":83608,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31185:762:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"documentation":" @dev SECURITY:\n Very important check because custom events can match our hashes!\n If we miss even 1 event that is emitted by Mirror, user will be able to fake protocol logic!\n Command to re-generate selectors check:\n ```bash\n grep -Po \" event\\s+\\K[^(]+\" ethexe/contracts/src/IMirror.sol | xargs -I{} echo \" topic1 != {}.selector &&\" | sed '$ s/ &&$//'\n ```","id":83613,"nodeType":"IfStatement","src":"31180:806:167","trueBody":{"id":83612,"nodeType":"Block","src":"31949:37:167","statements":[{"expression":{"hexValue":"66616c7365","id":83610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31970:5:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":83469,"id":83611,"nodeType":"Return","src":"31963:12:167"}]}},{"assignments":[83615],"declarations":[{"constant":false,"id":83615,"mutability":"mutable","name":"size","nameLocation":"32037:4:167","nodeType":"VariableDeclaration","scope":83670,"src":"32029:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83614,"name":"uint256","nodeType":"ElementaryTypeName","src":"32029:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83616,"nodeType":"VariableDeclarationStatement","src":"32029:12:167"},{"id":83624,"nodeType":"UncheckedBlock","src":"32051:78:167","statements":[{"expression":{"id":83622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83617,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83615,"src":"32075:4:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":83618,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83471,"src":"32082:7:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":83619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32090:6:167","memberName":"length","nodeType":"MemberAccess","src":"32082:14:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":83620,"name":"topicsLengthInBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83513,"src":"32099:19:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32082:36:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32075:43:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83623,"nodeType":"ExpressionStatement","src":"32075:43:167"}]},{"assignments":[83626],"declarations":[{"constant":false,"id":83626,"mutability":"mutable","name":"memPtr","nameLocation":"32147:6:167","nodeType":"VariableDeclaration","scope":83670,"src":"32139:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83625,"name":"uint256","nodeType":"ElementaryTypeName","src":"32139:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83631,"initialValue":{"arguments":[{"id":83629,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83615,"src":"32172:4:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83627,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"32156:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":83628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32163:8:167","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"32156:15:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":83630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32156:21:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"32139:38:167"},{"AST":{"nativeSrc":"32212:92:167","nodeType":"YulBlock","src":"32212:92:167","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"32239:6:167","nodeType":"YulIdentifier","src":"32239:6:167"},{"arguments":[{"name":"payload.offset","nativeSrc":"32251:14:167","nodeType":"YulIdentifier","src":"32251:14:167"},{"name":"topicsLengthInBytes","nativeSrc":"32267:19:167","nodeType":"YulIdentifier","src":"32267:19:167"}],"functionName":{"name":"add","nativeSrc":"32247:3:167","nodeType":"YulIdentifier","src":"32247:3:167"},"nativeSrc":"32247:40:167","nodeType":"YulFunctionCall","src":"32247:40:167"},{"name":"size","nativeSrc":"32289:4:167","nodeType":"YulIdentifier","src":"32289:4:167"}],"functionName":{"name":"calldatacopy","nativeSrc":"32226:12:167","nodeType":"YulIdentifier","src":"32226:12:167"},"nativeSrc":"32226:68:167","nodeType":"YulFunctionCall","src":"32226:68:167"},"nativeSrc":"32226:68:167","nodeType":"YulExpressionStatement","src":"32226:68:167"}]},"evmVersion":"osaka","externalReferences":[{"declaration":83626,"isOffset":false,"isSlot":false,"src":"32239:6:167","valueSize":1},{"declaration":83471,"isOffset":true,"isSlot":false,"src":"32251:14:167","suffix":"offset","valueSize":1},{"declaration":83615,"isOffset":false,"isSlot":false,"src":"32289:4:167","valueSize":1},{"declaration":83513,"isOffset":false,"isSlot":false,"src":"32267:19:167","valueSize":1}],"flags":["memory-safe"],"id":83632,"nodeType":"InlineAssembly","src":"32187:117:167"},{"assignments":[83635],"declarations":[{"constant":false,"id":83635,"mutability":"mutable","name":"topic2","nameLocation":"32459:6:167","nodeType":"VariableDeclaration","scope":83670,"src":"32451:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83634,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32451:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"documentation":" @dev We use offset 1 to skip `uint8 topicsLength`.\n Regular offsets: `32`, `64`, `96`.","id":83636,"nodeType":"VariableDeclarationStatement","src":"32451:14:167"},{"assignments":[83638],"declarations":[{"constant":false,"id":83638,"mutability":"mutable","name":"topic3","nameLocation":"32483:6:167","nodeType":"VariableDeclaration","scope":83670,"src":"32475:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32475:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83639,"nodeType":"VariableDeclarationStatement","src":"32475:14:167"},{"assignments":[83641],"declarations":[{"constant":false,"id":83641,"mutability":"mutable","name":"topic4","nameLocation":"32507:6:167","nodeType":"VariableDeclaration","scope":83670,"src":"32499:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83640,"name":"bytes32","nodeType":"ElementaryTypeName","src":"32499:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83642,"nodeType":"VariableDeclarationStatement","src":"32499:14:167"},{"AST":{"nativeSrc":"32548:191:167","nodeType":"YulBlock","src":"32548:191:167","statements":[{"nativeSrc":"32562:47:167","nodeType":"YulAssignment","src":"32562:47:167","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"32589:14:167","nodeType":"YulIdentifier","src":"32589:14:167"},{"kind":"number","nativeSrc":"32605:2:167","nodeType":"YulLiteral","src":"32605:2:167","type":"","value":"33"}],"functionName":{"name":"add","nativeSrc":"32585:3:167","nodeType":"YulIdentifier","src":"32585:3:167"},"nativeSrc":"32585:23:167","nodeType":"YulFunctionCall","src":"32585:23:167"}],"functionName":{"name":"calldataload","nativeSrc":"32572:12:167","nodeType":"YulIdentifier","src":"32572:12:167"},"nativeSrc":"32572:37:167","nodeType":"YulFunctionCall","src":"32572:37:167"},"variableNames":[{"name":"topic2","nativeSrc":"32562:6:167","nodeType":"YulIdentifier","src":"32562:6:167"}]},{"nativeSrc":"32622:47:167","nodeType":"YulAssignment","src":"32622:47:167","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"32649:14:167","nodeType":"YulIdentifier","src":"32649:14:167"},{"kind":"number","nativeSrc":"32665:2:167","nodeType":"YulLiteral","src":"32665:2:167","type":"","value":"65"}],"functionName":{"name":"add","nativeSrc":"32645:3:167","nodeType":"YulIdentifier","src":"32645:3:167"},"nativeSrc":"32645:23:167","nodeType":"YulFunctionCall","src":"32645:23:167"}],"functionName":{"name":"calldataload","nativeSrc":"32632:12:167","nodeType":"YulIdentifier","src":"32632:12:167"},"nativeSrc":"32632:37:167","nodeType":"YulFunctionCall","src":"32632:37:167"},"variableNames":[{"name":"topic3","nativeSrc":"32622:6:167","nodeType":"YulIdentifier","src":"32622:6:167"}]},{"nativeSrc":"32682:47:167","nodeType":"YulAssignment","src":"32682:47:167","value":{"arguments":[{"arguments":[{"name":"payload.offset","nativeSrc":"32709:14:167","nodeType":"YulIdentifier","src":"32709:14:167"},{"kind":"number","nativeSrc":"32725:2:167","nodeType":"YulLiteral","src":"32725:2:167","type":"","value":"97"}],"functionName":{"name":"add","nativeSrc":"32705:3:167","nodeType":"YulIdentifier","src":"32705:3:167"},"nativeSrc":"32705:23:167","nodeType":"YulFunctionCall","src":"32705:23:167"}],"functionName":{"name":"calldataload","nativeSrc":"32692:12:167","nodeType":"YulIdentifier","src":"32692:12:167"},"nativeSrc":"32692:37:167","nodeType":"YulFunctionCall","src":"32692:37:167"},"variableNames":[{"name":"topic4","nativeSrc":"32682:6:167","nodeType":"YulIdentifier","src":"32682:6:167"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":83471,"isOffset":true,"isSlot":false,"src":"32589:14:167","suffix":"offset","valueSize":1},{"declaration":83471,"isOffset":true,"isSlot":false,"src":"32649:14:167","suffix":"offset","valueSize":1},{"declaration":83471,"isOffset":true,"isSlot":false,"src":"32709:14:167","suffix":"offset","valueSize":1},{"declaration":83635,"isOffset":false,"isSlot":false,"src":"32562:6:167","valueSize":1},{"declaration":83638,"isOffset":false,"isSlot":false,"src":"32622:6:167","valueSize":1},{"declaration":83641,"isOffset":false,"isSlot":false,"src":"32682:6:167","valueSize":1}],"flags":["memory-safe"],"id":83643,"nodeType":"InlineAssembly","src":"32523:216:167"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83644,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"32753:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":83645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32769:1:167","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32753:17:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83649,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"32889:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":83650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32905:1:167","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32889:17:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83654,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"33033:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"33","id":83655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33049:1:167","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"33033:17:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83659,"name":"topicsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83496,"src":"33185:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"34","id":83660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33201:1:167","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"33185:17:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83664,"nodeType":"IfStatement","src":"33181:154:167","trueBody":{"id":83663,"nodeType":"Block","src":"33204:131:167","statements":[{"AST":{"nativeSrc":"33243:82:167","nodeType":"YulBlock","src":"33243:82:167","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"33266:6:167","nodeType":"YulIdentifier","src":"33266:6:167"},{"name":"size","nativeSrc":"33274:4:167","nodeType":"YulIdentifier","src":"33274:4:167"},{"name":"topic1","nativeSrc":"33280:6:167","nodeType":"YulIdentifier","src":"33280:6:167"},{"name":"topic2","nativeSrc":"33288:6:167","nodeType":"YulIdentifier","src":"33288:6:167"},{"name":"topic3","nativeSrc":"33296:6:167","nodeType":"YulIdentifier","src":"33296:6:167"},{"name":"topic4","nativeSrc":"33304:6:167","nodeType":"YulIdentifier","src":"33304:6:167"}],"functionName":{"name":"log4","nativeSrc":"33261:4:167","nodeType":"YulIdentifier","src":"33261:4:167"},"nativeSrc":"33261:50:167","nodeType":"YulFunctionCall","src":"33261:50:167"},"nativeSrc":"33261:50:167","nodeType":"YulExpressionStatement","src":"33261:50:167"}]},"evmVersion":"osaka","externalReferences":[{"declaration":83626,"isOffset":false,"isSlot":false,"src":"33266:6:167","valueSize":1},{"declaration":83615,"isOffset":false,"isSlot":false,"src":"33274:4:167","valueSize":1},{"declaration":83536,"isOffset":false,"isSlot":false,"src":"33280:6:167","valueSize":1},{"declaration":83635,"isOffset":false,"isSlot":false,"src":"33288:6:167","valueSize":1},{"declaration":83638,"isOffset":false,"isSlot":false,"src":"33296:6:167","valueSize":1},{"declaration":83641,"isOffset":false,"isSlot":false,"src":"33304:6:167","valueSize":1}],"flags":["memory-safe"],"id":83662,"nodeType":"InlineAssembly","src":"33218:107:167"}]}},"id":83665,"nodeType":"IfStatement","src":"33029:306:167","trueBody":{"id":83658,"nodeType":"Block","src":"33052:123:167","statements":[{"AST":{"nativeSrc":"33091:74:167","nodeType":"YulBlock","src":"33091:74:167","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"33114:6:167","nodeType":"YulIdentifier","src":"33114:6:167"},{"name":"size","nativeSrc":"33122:4:167","nodeType":"YulIdentifier","src":"33122:4:167"},{"name":"topic1","nativeSrc":"33128:6:167","nodeType":"YulIdentifier","src":"33128:6:167"},{"name":"topic2","nativeSrc":"33136:6:167","nodeType":"YulIdentifier","src":"33136:6:167"},{"name":"topic3","nativeSrc":"33144:6:167","nodeType":"YulIdentifier","src":"33144:6:167"}],"functionName":{"name":"log3","nativeSrc":"33109:4:167","nodeType":"YulIdentifier","src":"33109:4:167"},"nativeSrc":"33109:42:167","nodeType":"YulFunctionCall","src":"33109:42:167"},"nativeSrc":"33109:42:167","nodeType":"YulExpressionStatement","src":"33109:42:167"}]},"evmVersion":"osaka","externalReferences":[{"declaration":83626,"isOffset":false,"isSlot":false,"src":"33114:6:167","valueSize":1},{"declaration":83615,"isOffset":false,"isSlot":false,"src":"33122:4:167","valueSize":1},{"declaration":83536,"isOffset":false,"isSlot":false,"src":"33128:6:167","valueSize":1},{"declaration":83635,"isOffset":false,"isSlot":false,"src":"33136:6:167","valueSize":1},{"declaration":83638,"isOffset":false,"isSlot":false,"src":"33144:6:167","valueSize":1}],"flags":["memory-safe"],"id":83657,"nodeType":"InlineAssembly","src":"33066:99:167"}]}},"id":83666,"nodeType":"IfStatement","src":"32885:450:167","trueBody":{"id":83653,"nodeType":"Block","src":"32908:115:167","statements":[{"AST":{"nativeSrc":"32947:66:167","nodeType":"YulBlock","src":"32947:66:167","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"32970:6:167","nodeType":"YulIdentifier","src":"32970:6:167"},{"name":"size","nativeSrc":"32978:4:167","nodeType":"YulIdentifier","src":"32978:4:167"},{"name":"topic1","nativeSrc":"32984:6:167","nodeType":"YulIdentifier","src":"32984:6:167"},{"name":"topic2","nativeSrc":"32992:6:167","nodeType":"YulIdentifier","src":"32992:6:167"}],"functionName":{"name":"log2","nativeSrc":"32965:4:167","nodeType":"YulIdentifier","src":"32965:4:167"},"nativeSrc":"32965:34:167","nodeType":"YulFunctionCall","src":"32965:34:167"},"nativeSrc":"32965:34:167","nodeType":"YulExpressionStatement","src":"32965:34:167"}]},"evmVersion":"osaka","externalReferences":[{"declaration":83626,"isOffset":false,"isSlot":false,"src":"32970:6:167","valueSize":1},{"declaration":83615,"isOffset":false,"isSlot":false,"src":"32978:4:167","valueSize":1},{"declaration":83536,"isOffset":false,"isSlot":false,"src":"32984:6:167","valueSize":1},{"declaration":83635,"isOffset":false,"isSlot":false,"src":"32992:6:167","valueSize":1}],"flags":["memory-safe"],"id":83652,"nodeType":"InlineAssembly","src":"32922:91:167"}]}},"id":83667,"nodeType":"IfStatement","src":"32749:586:167","trueBody":{"id":83648,"nodeType":"Block","src":"32772:107:167","statements":[{"AST":{"nativeSrc":"32811:58:167","nodeType":"YulBlock","src":"32811:58:167","statements":[{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"32834:6:167","nodeType":"YulIdentifier","src":"32834:6:167"},{"name":"size","nativeSrc":"32842:4:167","nodeType":"YulIdentifier","src":"32842:4:167"},{"name":"topic1","nativeSrc":"32848:6:167","nodeType":"YulIdentifier","src":"32848:6:167"}],"functionName":{"name":"log1","nativeSrc":"32829:4:167","nodeType":"YulIdentifier","src":"32829:4:167"},"nativeSrc":"32829:26:167","nodeType":"YulFunctionCall","src":"32829:26:167"},"nativeSrc":"32829:26:167","nodeType":"YulExpressionStatement","src":"32829:26:167"}]},"evmVersion":"osaka","externalReferences":[{"declaration":83626,"isOffset":false,"isSlot":false,"src":"32834:6:167","valueSize":1},{"declaration":83615,"isOffset":false,"isSlot":false,"src":"32842:4:167","valueSize":1},{"declaration":83536,"isOffset":false,"isSlot":false,"src":"32848:6:167","valueSize":1}],"flags":["memory-safe"],"id":83647,"nodeType":"InlineAssembly","src":"32786:83:167"}]}},{"expression":{"hexValue":"74727565","id":83668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33352:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":83469,"id":83669,"nodeType":"Return","src":"33345:11:167"}]},"documentation":{"id":83462,"nodeType":"StructuredDocumentation","src":"26445:3068:167","text":" @dev Tries to parse an event from the Sails framework and emit it in Solidity notation.\n User writes WASM smart contract on Sails framework called \"Counter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n Example of defining Solidity events in WASM contract based on Sails framework:\n ```rust\n #[event]\n #[derive(Clone, Debug, PartialEq, Encode, TypeInfo)]\n #[codec(crate = scale_codec)]\n #[scale_info(crate = scale_info)]\n pub enum CounterEvents {\n Added {\n #[indexed]\n source: ActorId,\n value: u32,\n },\n }\n ```\n User also generates \"Solidity ABI interface\" that allows services like Etherscan to decode events from `Mirror`\n (since we use the ABI interface as \"proxy implementation\"):\n ```solidity\n interface ICounter {\n event Added(address indexed source, uint32 value);\n // ... other events\n }\n ```\n Now let's imagine that the user wants to calculate something in WASM contract and send it to Ethereum as event,\n which will then be emitted by `Mirror` smart contract as showed on services like Etherscan:\n ```rust\n #[service(events = CounterEvents)]\n impl CounterService<'_> {\n #[export]\n pub fn add(&mut self, value: u32) -> u32 {\n let mut data_mut = self.data.borrow_mut();\n data_mut.counter = data_mut.counter.checked_add(value).expect(\"failed to add\");\n let source = Syscall::message_source();\n self.emit_eth_event(CounterEvents::Added { source, value })\n .expect(\"failed to emit eth event\");\n data_mut.counter\n }\n }\n ```\n All the `emit_eth_event` method in the Sails framework does is call the syscall\n `gcore::msg::send(destination=ETH_EVENT_ADDR, payload, value=0)`, where `payload`\n is encoded in Solidity notation as described below.\n Format in which the Sails framework sends events:\n - `uint8 topicsLength` (can be `1`, `2`, `3`, `4`).\n specifies which opcode (`log1`, `log2`, `log3`, `log4`) should be called.\n - `bytes32 topic1` (required)\n should never match our event selectors!\n - `bytes32 topic2` (optional)\n - `bytes32 topic3` (optional)\n - `bytes32 topic4` (optional)\n - `bytes payload` (optional)\n contains encoded data of event in form of `abi.encode(...)`.\n @param _message The message to be parsed and emitted as Solidity event.\n @return isSailsEvent `true` in case of success and `false` in case of error (no matching event found)."},"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseAndEmitSailsEvent","nameLocation":"29527:26:167","parameters":{"id":83466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83465,"mutability":"mutable","name":"_message","nameLocation":"29576:8:167","nodeType":"VariableDeclaration","scope":83671,"src":"29554:30:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":83464,"nodeType":"UserDefinedTypeName","pathNode":{"id":83463,"name":"Gear.Message","nameLocations":["29554:4:167","29559:7:167"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"29554:12:167"},"referencedDeclaration":87597,"src":"29554:12:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"29553:32:167"},"returnParameters":{"id":83469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83468,"mutability":"mutable","name":"isSailsEvent","nameLocation":"29608:12:167","nodeType":"VariableDeclaration","scope":83671,"src":"29603:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83467,"name":"bool","nodeType":"ElementaryTypeName","src":"29603:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29602:19:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83802,"nodeType":"FunctionDefinition","src":"39330:1645:167","nodes":[],"body":{"id":83801,"nodeType":"Block","src":"39397:1578:167","nodes":[],"statements":[{"condition":{"expression":{"id":83678,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"39411:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39420:4:167","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":87596,"src":"39411:13:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83799,"nodeType":"Block","src":"40626:343:167","statements":[{"assignments":[83767],"declarations":[{"constant":false,"id":83767,"mutability":"mutable","name":"transferSuccess","nameLocation":"40645:15:167","nodeType":"VariableDeclaration","scope":83799,"src":"40640:20:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83766,"name":"bool","nodeType":"ElementaryTypeName","src":"40640:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83774,"initialValue":{"arguments":[{"expression":{"id":83769,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40678:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40687:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40678:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83771,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40700:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40709:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40700:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83768,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84015,"src":"40663:14:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":83773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40663:52:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"40640:75:167"},{"condition":{"id":83776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40733:16:167","subExpression":{"id":83775,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83767,"src":"40734:15:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83785,"nodeType":"IfStatement","src":"40729:117:167","trueBody":{"id":83784,"nodeType":"Block","src":"40751:95:167","statements":[{"eventCall":{"arguments":[{"expression":{"id":83778,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40794:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40803:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40794:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83780,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40816:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40825:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40816:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83777,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"40774:19:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":83782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40774:57:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83783,"nodeType":"EmitStatement","src":"40769:62:167"}]}},{"eventCall":{"arguments":[{"expression":{"id":83787,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40871:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40880:7:167","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"40871:16:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":83789,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40889:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40898:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40889:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":83791,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40905:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40914:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40905:21:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40927:2:167","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"40905:24:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":83794,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40931:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40940:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40931:21:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40953:4:167","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"40931:26:167","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":83786,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74213,"src":"40865:5:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":83797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40865:93:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83798,"nodeType":"EmitStatement","src":"40860:98:167"}]},"id":83800,"nodeType":"IfStatement","src":"39407:1562:167","trueBody":{"id":83765,"nodeType":"Block","src":"39426:1194:167","statements":[{"assignments":[83681],"declarations":[{"constant":false,"id":83681,"mutability":"mutable","name":"isSuccessReply","nameLocation":"39445:14:167","nodeType":"VariableDeclaration","scope":83765,"src":"39440:19:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83680,"name":"bool","nodeType":"ElementaryTypeName","src":"39440:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83689,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":83688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":83682,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"39462:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39471:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"39462:21:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39484:4:167","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"39462:26:167","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":83686,"indexExpression":{"hexValue":"30","id":83685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39489:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39462:29:167","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":83687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39495:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39462:34:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"39440:56:167"},{"assignments":[83691],"declarations":[{"constant":false,"id":83691,"mutability":"mutable","name":"payload","nameLocation":"39524:7:167","nodeType":"VariableDeclaration","scope":83765,"src":"39511:20:167","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":83690,"name":"bytes","nodeType":"ElementaryTypeName","src":"39511:5:167","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":83692,"nodeType":"VariableDeclarationStatement","src":"39511:20:167"},{"condition":{"id":83693,"name":"isSuccessReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83681,"src":"39550:14:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83716,"nodeType":"Block","src":"39631:348:167","statements":[{"expression":{"id":83714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83700,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83691,"src":"39801:7:167","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":83703,"name":"ICallbacks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73742,"src":"39855:10:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICallbacks_$73742_$","typeString":"type(contract ICallbacks)"}},"id":83704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39866:12:167","memberName":"onErrorReply","nodeType":"MemberAccess","referencedDeclaration":73741,"src":"39855:23:167","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_bytes32_$_t_bytes_calldata_ptr_$_t_bytes4_$returns$__$","typeString":"function ICallbacks.onErrorReply(bytes32,bytes calldata,bytes4) payable"}},"id":83705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39879:8:167","memberName":"selector","nodeType":"MemberAccess","src":"39855:32:167","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":83706,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"39889:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39898:2:167","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87580,"src":"39889:11:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83708,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"39902:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39911:7:167","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"39902:16:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":83710,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"39920:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39929:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"39920:21:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39942:4:167","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"39920:26:167","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":83701,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"39811:3:167","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":83702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39815:18:167","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"39811:22:167","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":83713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39811:153:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"39801:163:167","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":83715,"nodeType":"ExpressionStatement","src":"39801:163:167"}]},"id":83717,"nodeType":"IfStatement","src":"39546:433:167","trueBody":{"id":83699,"nodeType":"Block","src":"39566:59:167","statements":[{"expression":{"id":83697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83694,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83691,"src":"39584:7:167","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":83695,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"39594:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39603:7:167","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":87586,"src":"39594:16:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"39584:26:167","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":83698,"nodeType":"ExpressionStatement","src":"39584:26:167"}]}},{"assignments":[83719,null],"declarations":[{"constant":false,"id":83719,"mutability":"mutable","name":"success","nameLocation":"39999:7:167","nodeType":"VariableDeclaration","scope":83765,"src":"39994:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83718,"name":"bool","nodeType":"ElementaryTypeName","src":"39994:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":83729,"initialValue":{"arguments":[{"id":83727,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83691,"src":"40074:7:167","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"expression":{"id":83720,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40011:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40020:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40011:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40032:4:167","memberName":"call","nodeType":"MemberAccess","src":"40011:25:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":83726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas","value"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"3530305f303030","id":83723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40042:7:167","typeDescriptions":{"typeIdentifier":"t_rational_500000_by_1","typeString":"int_const 500000"},"value":"500_000"},{"expression":{"id":83724,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40058:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40067:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40058:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"40011:62:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gasvalue","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":83728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40011:71:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"39993:89:167"},{"condition":{"id":83731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40101:8:167","subExpression":{"id":83730,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83719,"src":"40102:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83764,"nodeType":"IfStatement","src":"40097:513:167","trueBody":{"id":83763,"nodeType":"Block","src":"40111:499:167","statements":[{"assignments":[83733],"declarations":[{"constant":false,"id":83733,"mutability":"mutable","name":"transferSuccess","nameLocation":"40134:15:167","nodeType":"VariableDeclaration","scope":83763,"src":"40129:20:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83732,"name":"bool","nodeType":"ElementaryTypeName","src":"40129:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83740,"initialValue":{"arguments":[{"expression":{"id":83735,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40167:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40176:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40167:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83737,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40189:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40198:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40189:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83734,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84015,"src":"40152:14:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":83739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40152:52:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"40129:75:167"},{"condition":{"id":83742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"40226:16:167","subExpression":{"id":83741,"name":"transferSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83733,"src":"40227:15:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83751,"nodeType":"IfStatement","src":"40222:125:167","trueBody":{"id":83750,"nodeType":"Block","src":"40244:103:167","statements":[{"eventCall":{"arguments":[{"expression":{"id":83744,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40291:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40300:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87583,"src":"40291:20:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83746,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40313:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40322:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40313:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83743,"name":"ReplyTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74243,"src":"40271:19:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":83748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40271:57:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83749,"nodeType":"EmitStatement","src":"40266:62:167"}]}},{"documentation":" @dev In case of failed call, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"expression":{"id":83753,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40526:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40535:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87589,"src":"40526:14:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":83755,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40542:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40551:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40542:21:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40564:2:167","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":87629,"src":"40542:24:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":83758,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83675,"src":"40568:8:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message calldata"}},"id":83759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40577:12:167","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":87593,"src":"40568:21:167","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$87633_calldata_ptr","typeString":"struct Gear.ReplyDetails calldata"}},"id":83760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40590:4:167","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":87632,"src":"40568:26:167","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":83752,"name":"ReplyCallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74222,"src":"40510:15:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (uint128,bytes32,bytes4)"}},"id":83761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40510:85:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83762,"nodeType":"EmitStatement","src":"40505:90:167"}]}}]}}]},"documentation":{"id":83672,"nodeType":"StructuredDocumentation","src":"33369:5956:167","text":" @dev Internal function to send reply message.\n Non-zero value always sent since never goes to mailbox.\n Emits `Reply` event if `_message.call = false`.\n If `_message.call = true`, the call will be made to `_message.destination` with\n gas limit of 500_000 to prevent DoS attacks and with `_message.value`.\n The `_message.replyDetails` will also be evaluated to determine the reply's success.\n If `gear_core::message::ReplyCode` is successful, `_message.payload` will be used.\n If unsuccessful, `payload = ICallbacks.onErrorReply(_message.id, _message.payload, _message.replyDetails.code)`\n will be used and the appropriate method on `_message.destination` will be called.\n Function will also always attempt to send `_message.value`. If this fails for some reason,\n the `ReplyTransferFailed` event will be emitted.\n If call fails, then `ReplyCallFailed` event will be emitted.\n User writes WASM smart contract on Sails framework called \"Counter\":\n - https://github.com/gear-foundation/vara-eth-demo/blob/master/app/src/lib.rs\n All the contract method does is return `u32` as result (reply):\n ```rust\n #[service(events = CounterEvents)]\n impl CounterService<'_> {\n #[export]\n pub fn add(&mut self, value: u32) -> u32 {\n let mut data_mut = self.data.borrow_mut();\n data_mut.counter = data_mut.counter.checked_add(value).expect(\"failed to add\");\n let source = Syscall::message_source();\n self.emit_eth_event(CounterEvents::Added { source, value })\n .expect(\"failed to emit eth event\");\n data_mut.counter\n }\n }\n User also generates \"Solidity ABI Interface\" to allow incrementing counter or calling other methods within WASM smart contract.\n Next, we assume user uploads `CounterAbi` smart contract to Ethereum:\n ```solidity\n interface ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId);\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId);\n // ... other methods\n }\n contract CounterAbi is ICounter {\n function init(bool _callReply, uint32 counter) external returns (bytes32 messageId) {}\n function counterAdd(bool _callReply, uint32 value) external returns (bytes32 messageId) {}\n }\n ```\n User also generates \"Solidity Callback Interface\" and implements own `CounterCaller` smart contract,\n which will handle reply hooks in methods starting with `replyOn_`:\n ```solidity\n interface ICounterCallbacks {\n function replyOn_init(bytes32 messageId) external;\n function replyOn_counterAdd(bytes32 messageId, uint32 reply) external;\n // ... other methods\n function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode) external payable;\n }\n contract CounterCaller is ICounterCallbacks {\n ICounter public immutable MIRROR;\n constructor(ICounter _mirror) {\n MIRROR = _mirror;\n }\n modifier onlyMirror() {\n _onlyMirror();\n _;\n }\n function _onlyMirror() internal view {\n require(msg.sender == address(MIRROR));\n }\n // Call `Counter` constructor on our platform\n function init(uint32 counter) external {\n // `bool _callReply = true`\n bytes32 _messageId = MIRROR.init(true, counter);\n }\n function replyOn_init(bytes32 messageId) external onlyMirror {\n // ...\n }\n // Compute `Counter.add(uint32 value) -> uint32 reply` on our platform\n mapping(bytes32 messageId => bool knownMessage) public counterAddInputs;\n mapping(bytes32 messageId => uint32 output) public counterAddResults;\n function counterAdd(uint32 value) external returns (bytes32 messageId) {\n // `bool _callReply = true`\n bytes32 _messageId = MIRROR.counterAdd(true, value);\n counterAddInputs[_messageId] = true;\n messageId = _messageId;\n }\n function replyOn_counterAdd(bytes32 messageId, uint32 reply) external onlyMirror {\n counterAddResults[messageId] = reply;\n }\n // Handle `Counter` errors on our platform\n event ErrorReply(bytes32 messageId, bytes payload, bytes4 replyCode);\n function onErrorReply(bytes32 messageId, bytes calldata payload, bytes4 replyCode)\n external\n payable\n onlyMirror\n {\n emit ErrorReply(messageId, payload, replyCode);\n }\n }\n ```\n User calls `CounterCaller.counterAdd(uint32 value)`, and the smart contract calls `ICounter.counterAdd(bool _callReply=true, uint32 value)`.\n Result calculated in WASM smart contract on Sails framework in `Counter.add(uint32 value) -> uint32 reply` method will be passed to\n `replyOn_counterAdd(bytes32 messageId, uint32 reply)`.\n @param _message The reply message to be sent."},"implemented":true,"kind":"function","modifiers":[],"name":"_sendReplyMessage","nameLocation":"39339:17:167","parameters":{"id":83676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83675,"mutability":"mutable","name":"_message","nameLocation":"39379:8:167","nodeType":"VariableDeclaration","scope":83802,"src":"39357:30:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_calldata_ptr","typeString":"struct Gear.Message"},"typeName":{"id":83674,"nodeType":"UserDefinedTypeName","pathNode":{"id":83673,"name":"Gear.Message","nameLocations":["39357:4:167","39362:7:167"],"nodeType":"IdentifierPath","referencedDeclaration":87597,"src":"39357:12:167"},"referencedDeclaration":87597,"src":"39357:12:167","typeDescriptions":{"typeIdentifier":"t_struct$_Message_$87597_storage_ptr","typeString":"struct Gear.Message"}},"visibility":"internal"}],"src":"39356:32:167"},"returnParameters":{"id":83677,"nodeType":"ParameterList","parameters":[],"src":"39397:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83915,"nodeType":"FunctionDefinition","src":"41513:1028:167","nodes":[],"body":{"id":83914,"nodeType":"Block","src":"41608:933:167","nodes":[],"statements":[{"assignments":[83813],"declarations":[{"constant":false,"id":83813,"mutability":"mutable","name":"claimsLen","nameLocation":"41626:9:167","nodeType":"VariableDeclaration","scope":83914,"src":"41618:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83812,"name":"uint256","nodeType":"ElementaryTypeName","src":"41618:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83816,"initialValue":{"expression":{"id":83814,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83807,"src":"41638:7:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":83815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41646:6:167","memberName":"length","nodeType":"MemberAccess","src":"41638:14:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41618:34:167"},{"assignments":[83818],"declarations":[{"constant":false,"id":83818,"mutability":"mutable","name":"claimsHashesSize","nameLocation":"41670:16:167","nodeType":"VariableDeclaration","scope":83914,"src":"41662:24:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83817,"name":"uint256","nodeType":"ElementaryTypeName","src":"41662:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83822,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83819,"name":"claimsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83813,"src":"41689:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":83820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41701:2:167","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"41689:14:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41662:41:167"},{"assignments":[83824],"declarations":[{"constant":false,"id":83824,"mutability":"mutable","name":"claimsHashesMemPtr","nameLocation":"41721:18:167","nodeType":"VariableDeclaration","scope":83914,"src":"41713:26:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83823,"name":"uint256","nodeType":"ElementaryTypeName","src":"41713:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83829,"initialValue":{"arguments":[{"id":83827,"name":"claimsHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83818,"src":"41758:16:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83825,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41742:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":83826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41749:8:167","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"41742:15:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":83828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41742:33:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41713:62:167"},{"assignments":[83831],"declarations":[{"constant":false,"id":83831,"mutability":"mutable","name":"offset","nameLocation":"41793:6:167","nodeType":"VariableDeclaration","scope":83914,"src":"41785:14:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83830,"name":"uint256","nodeType":"ElementaryTypeName","src":"41785:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83833,"initialValue":{"hexValue":"30","id":83832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41802:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41785:18:167"},{"body":{"id":83905,"nodeType":"Block","src":"41854:588:167","statements":[{"assignments":[83848],"declarations":[{"constant":false,"id":83848,"mutability":"mutable","name":"claim","nameLocation":"41893:5:167","nodeType":"VariableDeclaration","scope":83905,"src":"41868:30:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim"},"typeName":{"id":83847,"nodeType":"UserDefinedTypeName","pathNode":{"id":83846,"name":"Gear.ValueClaim","nameLocations":["41868:4:167","41873:10:167"],"nodeType":"IdentifierPath","referencedDeclaration":87703,"src":"41868:15:167"},"referencedDeclaration":87703,"src":"41868:15:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_storage_ptr","typeString":"struct Gear.ValueClaim"}},"visibility":"internal"}],"id":83852,"initialValue":{"baseExpression":{"id":83849,"name":"_claims","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83807,"src":"41901:7:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim calldata[] calldata"}},"id":83851,"indexExpression":{"id":83850,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83835,"src":"41909:1:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41901:10:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"41868:43:167"},{"assignments":[83854],"declarations":[{"constant":false,"id":83854,"mutability":"mutable","name":"claimHash","nameLocation":"41933:9:167","nodeType":"VariableDeclaration","scope":83905,"src":"41925:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41925:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":83864,"initialValue":{"arguments":[{"expression":{"id":83857,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"41965:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41971:9:167","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":87698,"src":"41965:15:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83859,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"41982:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41988:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87700,"src":"41982:17:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83861,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42001:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42007:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42001:11:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":83855,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41945:4:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":83856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41950:14:167","memberName":"valueClaimHash","nodeType":"MemberAccess","referencedDeclaration":87902,"src":"41945:19:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_address_$_t_uint128_$returns$_t_bytes32_$","typeString":"function (bytes32,address,uint128) pure returns (bytes32)"}},"id":83863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41945:68:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"41925:88:167"},{"expression":{"arguments":[{"id":83868,"name":"claimsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83824,"src":"42053:18:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83869,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83831,"src":"42073:6:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":83870,"name":"claimHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83854,"src":"42081:9:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":83865,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"42027:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":83867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42034:18:167","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"42027:25:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":83871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42027:64:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83872,"nodeType":"ExpressionStatement","src":"42027:64:167"},{"id":83877,"nodeType":"UncheckedBlock","src":"42105:55:167","statements":[{"expression":{"id":83875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83873,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83831,"src":"42133:6:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":83874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42143:2:167","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"42133:12:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83876,"nodeType":"ExpressionStatement","src":"42133:12:167"}]},{"assignments":[83879],"declarations":[{"constant":false,"id":83879,"mutability":"mutable","name":"success","nameLocation":"42179:7:167","nodeType":"VariableDeclaration","scope":83905,"src":"42174:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83878,"name":"bool","nodeType":"ElementaryTypeName","src":"42174:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":83886,"initialValue":{"arguments":[{"expression":{"id":83881,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42204:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42210:11:167","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":87700,"src":"42204:17:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":83883,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42223:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42229:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42223:11:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83880,"name":"_transferEther","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84015,"src":"42189:14:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$_t_bool_$","typeString":"function (address,uint128) returns (bool)"}},"id":83885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42189:46:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"42174:61:167"},{"condition":{"id":83887,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83879,"src":"42253:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":83903,"nodeType":"Block","src":"42348:84:167","statements":[{"eventCall":{"arguments":[{"expression":{"id":83897,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42388:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42394:9:167","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":87698,"src":"42388:15:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83899,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42405:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42411:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42405:11:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83896,"name":"ValueClaimFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74250,"src":"42371:16:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":83901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42371:46:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83902,"nodeType":"EmitStatement","src":"42366:51:167"}]},"id":83904,"nodeType":"IfStatement","src":"42249:183:167","trueBody":{"id":83895,"nodeType":"Block","src":"42262:80:167","statements":[{"eventCall":{"arguments":[{"expression":{"id":83889,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42298:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42304:9:167","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":87698,"src":"42298:15:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":83891,"name":"claim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83848,"src":"42315:5:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_calldata_ptr","typeString":"struct Gear.ValueClaim calldata"}},"id":83892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42321:5:167","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":87702,"src":"42315:11:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83888,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74229,"src":"42285:12:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":83893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42285:42:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83894,"nodeType":"EmitStatement","src":"42280:47:167"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":83840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83838,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83835,"src":"41834:1:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":83839,"name":"claimsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83813,"src":"41838:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41834:13:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83906,"initializationExpression":{"assignments":[83835],"declarations":[{"constant":false,"id":83835,"mutability":"mutable","name":"i","nameLocation":"41827:1:167","nodeType":"VariableDeclaration","scope":83906,"src":"41819:9:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83834,"name":"uint256","nodeType":"ElementaryTypeName","src":"41819:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":83837,"initialValue":{"hexValue":"30","id":83836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41831:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41819:13:167"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":83842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41849:3:167","subExpression":{"id":83841,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83835,"src":"41849:1:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":83843,"nodeType":"ExpressionStatement","src":"41849:3:167"},"nodeType":"ForStatement","src":"41814:628:167"},{"expression":{"arguments":[{"id":83909,"name":"claimsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83824,"src":"42494:18:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":83910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42514:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":83911,"name":"claimsHashesSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83818,"src":"42517:16:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":83907,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"42459:6:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":83908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42466:27:167","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"42459:34:167","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":83912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42459:75:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":83811,"id":83913,"nodeType":"Return","src":"42452:82:167"}]},"documentation":{"id":83803,"nodeType":"StructuredDocumentation","src":"41080:428:167","text":" @dev Internal function to claim values from messages in mailbox.\n It transfers value to each claim destination and emits appropriate events:\n - `ValueClaimed` event is emitted if transfer is successful\n - `ValueClaimFailed` event is emitted if transfer fails\n @param _claims The array of value claims to be claimed.\n @return claimsHash The hash of the claimed values."},"implemented":true,"kind":"function","modifiers":[],"name":"_claimValues","nameLocation":"41522:12:167","parameters":{"id":83808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83807,"mutability":"mutable","name":"_claims","nameLocation":"41562:7:167","nodeType":"VariableDeclaration","scope":83915,"src":"41535:34:167","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValueClaim[]"},"typeName":{"baseType":{"id":83805,"nodeType":"UserDefinedTypeName","pathNode":{"id":83804,"name":"Gear.ValueClaim","nameLocations":["41535:4:167","41540:10:167"],"nodeType":"IdentifierPath","referencedDeclaration":87703,"src":"41535:15:167"},"referencedDeclaration":87703,"src":"41535:15:167","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$87703_storage_ptr","typeString":"struct Gear.ValueClaim"}},"id":83806,"nodeType":"ArrayTypeName","src":"41535:17:167","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$87703_storage_$dyn_storage_ptr","typeString":"struct Gear.ValueClaim[]"}},"visibility":"internal"}],"src":"41534:36:167"},"returnParameters":{"id":83811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83810,"mutability":"mutable","name":"claimsHash","nameLocation":"41596:10:167","nodeType":"VariableDeclaration","scope":83915,"src":"41588:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41588:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"41587:20:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83948,"nodeType":"FunctionDefinition","src":"42807:586:167","nodes":[],"body":{"id":83947,"nodeType":"Block","src":"42871:522:167","nodes":[],"statements":[{"documentation":" @dev Set inheritor.","expression":{"id":83925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83923,"name":"exited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82567,"src":"42936:6:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":83924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42945:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"42936:13:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83926,"nodeType":"ExpressionStatement","src":"42936:13:167"},{"expression":{"id":83929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83927,"name":"inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82570,"src":"42959:9:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83928,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83918,"src":"42971:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"42959:22:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":83930,"nodeType":"ExpressionStatement","src":"42959:22:167"},{"assignments":[83932,83934],"declarations":[{"constant":false,"id":83932,"mutability":"mutable","name":"value","nameLocation":"43090:5:167","nodeType":"VariableDeclaration","scope":83947,"src":"43082:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83931,"name":"uint128","nodeType":"ElementaryTypeName","src":"43082:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":83934,"mutability":"mutable","name":"success","nameLocation":"43102:7:167","nodeType":"VariableDeclaration","scope":83947,"src":"43097:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83933,"name":"bool","nodeType":"ElementaryTypeName","src":"43097:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"documentation":" @dev Transfer all available balance to the inheritor.","id":83937,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":83935,"name":"_transferLockedValueToInheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83309,"src":"43113:31:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_uint128_$_t_bool_$","typeString":"function () returns (uint128,bool)"}},"id":83936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43113:33:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_bool_$","typeString":"tuple(uint128,bool)"}},"nodeType":"VariableDeclarationStatement","src":"43081:65:167"},{"condition":{"id":83939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"43160:8:167","subExpression":{"id":83938,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83934,"src":"43161:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":83946,"nodeType":"IfStatement","src":"43156:231:167","trueBody":{"id":83945,"nodeType":"Block","src":"43170:217:167","statements":[{"documentation":" @dev In case of failed transfer, we emit appropriate event to inform external users.","eventCall":{"arguments":[{"id":83941,"name":"_inheritor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83918,"src":"43358:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":83942,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83932,"src":"43370:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":83940,"name":"TransferLockedValueToInheritorFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74236,"src":"43321:36:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":83943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43321:55:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83944,"nodeType":"EmitStatement","src":"43316:60:167"}]}}]},"documentation":{"id":83916,"nodeType":"StructuredDocumentation","src":"42604:198:167","text":" @dev Sets the inheritor address, sets exited flag to `true` and\n transfer all available balance to the inheritor.\n @param _inheritor The address of the inheritor."},"implemented":true,"kind":"function","modifiers":[{"id":83921,"kind":"modifierInvocation","modifierName":{"id":83920,"name":"onlyIfActive","nameLocations":["42858:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":82688,"src":"42858:12:167"},"nodeType":"ModifierInvocation","src":"42858:12:167"}],"name":"_setInheritor","nameLocation":"42816:13:167","parameters":{"id":83919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83918,"mutability":"mutable","name":"_inheritor","nameLocation":"42838:10:167","nodeType":"VariableDeclaration","scope":83948,"src":"42830:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83917,"name":"address","nodeType":"ElementaryTypeName","src":"42830:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"42829:20:167"},"returnParameters":{"id":83922,"nodeType":"ParameterList","parameters":[],"src":"42871:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83963,"nodeType":"FunctionDefinition","src":"43496:281:167","nodes":[],"body":{"id":83962,"nodeType":"Block","src":"43550:227:167","nodes":[],"statements":[{"documentation":" @dev Set state hash.","expression":{"id":83956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":83954,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82561,"src":"43616:9:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":83955,"name":"_stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83951,"src":"43628:10:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"43616:22:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":83957,"nodeType":"ExpressionStatement","src":"43616:22:167"},{"documentation":" @dev Emits an event signaling that the state has changed.","eventCall":{"arguments":[{"id":83959,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82561,"src":"43760:9:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":83958,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"43747:12:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":83960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43747:23:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":83961,"nodeType":"EmitStatement","src":"43742:28:167"}]},"documentation":{"id":83949,"nodeType":"StructuredDocumentation","src":"43399:92:167","text":" @dev Updates the state hash.\n @param _stateHash The new state hash."},"implemented":true,"kind":"function","modifiers":[],"name":"_updateStateHash","nameLocation":"43505:16:167","parameters":{"id":83952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83951,"mutability":"mutable","name":"_stateHash","nameLocation":"43530:10:167","nodeType":"VariableDeclaration","scope":83963,"src":"43522:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":83950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43522:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"43521:20:167"},"returnParameters":{"id":83953,"nodeType":"ParameterList","parameters":[],"src":"43550:0:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":83985,"nodeType":"FunctionDefinition","src":"43951:182:167","nodes":[],"body":{"id":83984,"nodeType":"Block","src":"44023:110:167","nodes":[],"statements":[{"assignments":[83973],"declarations":[{"constant":false,"id":83973,"mutability":"mutable","name":"wvaraAddr","nameLocation":"44041:9:167","nodeType":"VariableDeclaration","scope":83984,"src":"44033:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83972,"name":"address","nodeType":"ElementaryTypeName","src":"44033:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":83979,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":83975,"name":"routerAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83966,"src":"44061:10:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":83974,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"44053:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$74985_$","typeString":"type(contract IRouter)"}},"id":83976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44053:19:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$74985","typeString":"contract IRouter"}},"id":83977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44073:11:167","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":74679,"src":"44053:31:167","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":83978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44053:33:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"44033:53:167"},{"expression":{"arguments":[{"id":83981,"name":"wvaraAddr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83973,"src":"44116:9:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":83980,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"44103:12:167","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":83982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44103:23:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"functionReturnParameters":83971,"id":83983,"nodeType":"Return","src":"44096:30:167"}]},"documentation":{"id":83964,"nodeType":"StructuredDocumentation","src":"43819:127:167","text":" @dev Get the `WrappedVara` contract instance.\n @param routerAddr The address of the `Router` contract."},"implemented":true,"kind":"function","modifiers":[],"name":"_wvara","nameLocation":"43960:6:167","parameters":{"id":83967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83966,"mutability":"mutable","name":"routerAddr","nameLocation":"43975:10:167","nodeType":"VariableDeclaration","scope":83985,"src":"43967:18:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83965,"name":"address","nodeType":"ElementaryTypeName","src":"43967:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"43966:20:167"},"returnParameters":{"id":83971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83970,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":83985,"src":"44009:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":83969,"nodeType":"UserDefinedTypeName","pathNode":{"id":83968,"name":"IWrappedVara","nameLocations":["44009:12:167"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"44009:12:167"},"referencedDeclaration":75001,"src":"44009:12:167","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"src":"44008:14:167"},"scope":84077,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":84015,"nodeType":"FunctionDefinition","src":"44375:253:167","nodes":[],"body":{"id":84014,"nodeType":"Block","src":"44458:170:167","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":83997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":83995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83990,"src":"44472:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":83996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44481:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44472:10:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":84011,"nodeType":"IfStatement","src":"44468:133:167","trueBody":{"id":84010,"nodeType":"Block","src":"44484:117:167","statements":[{"assignments":[83999,null],"declarations":[{"constant":false,"id":83999,"mutability":"mutable","name":"success","nameLocation":"44504:7:167","nodeType":"VariableDeclaration","scope":84010,"src":"44499:12:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83998,"name":"bool","nodeType":"ElementaryTypeName","src":"44499:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":84007,"initialValue":{"arguments":[{"hexValue":"","id":84005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"44559:2:167","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":84000,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83988,"src":"44516:11:167","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":84001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44528:4:167","memberName":"call","nodeType":"MemberAccess","src":"44516:16:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":84004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["gas","value"],"nodeType":"FunctionCallOptions","options":[{"hexValue":"355f303030","id":84002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44538:5:167","typeDescriptions":{"typeIdentifier":"t_rational_5000_by_1","typeString":"int_const 5000"},"value":"5_000"},{"id":84003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83990,"src":"44552:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"44516:42:167","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gasvalue","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":84006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44516:46:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"44498:64:167"},{"expression":{"id":84008,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83999,"src":"44583:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":83994,"id":84009,"nodeType":"Return","src":"44576:14:167"}]}},{"expression":{"hexValue":"74727565","id":84012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44617:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":83994,"id":84013,"nodeType":"Return","src":"44610:11:167"}]},"documentation":{"id":83986,"nodeType":"StructuredDocumentation","src":"44139:231:167","text":" @dev Transfer ETH to destination address.\n It has gas limit of 5_000 to prevent DoS attacks.\n @param destination The address to transfer ETH to.\n @param value The amount of ETH to transfer."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferEther","nameLocation":"44384:14:167","parameters":{"id":83991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83988,"mutability":"mutable","name":"destination","nameLocation":"44407:11:167","nodeType":"VariableDeclaration","scope":84015,"src":"44399:19:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83987,"name":"address","nodeType":"ElementaryTypeName","src":"44399:7:167","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":83990,"mutability":"mutable","name":"value","nameLocation":"44428:5:167","nodeType":"VariableDeclaration","scope":84015,"src":"44420:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":83989,"name":"uint128","nodeType":"ElementaryTypeName","src":"44420:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"44398:36:167"},"returnParameters":{"id":83994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84015,"src":"44452:4:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":83992,"name":"bool","nodeType":"ElementaryTypeName","src":"44452:4:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"44451:6:167"},"scope":84077,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":84076,"nodeType":"FunctionDefinition","src":"44929:1106:167","nodes":[],"body":{"id":84075,"nodeType":"Block","src":"44971:1064:167","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":84030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":84021,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"44985:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":84022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44989:5:167","memberName":"value","nodeType":"MemberAccess","src":"44985:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":84023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44997:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44985:13:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":84025,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45002:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":84026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45006:4:167","memberName":"data","nodeType":"MemberAccess","src":"45002:8:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":84027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45011:6:167","memberName":"length","nodeType":"MemberAccess","src":"45002:15:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":84028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45021:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45002:20:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"44985:37:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":84051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"45146:8:167","subExpression":{"id":84044,"name":"isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82576,"src":"45147:7:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":84046,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45158:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":84047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45162:4:167","memberName":"data","nodeType":"MemberAccess","src":"45158:8:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":84048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45167:6:167","memberName":"length","nodeType":"MemberAccess","src":"45158:15:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783234","id":84049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45177:4:167","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"src":"45158:23:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"45146:35:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":84072,"nodeType":"Block","src":"45976:53:167","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":84069,"name":"InvalidFallbackCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74289,"src":"45997:19:167","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":84070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45997:21:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":84071,"nodeType":"RevertStatement","src":"45990:28:167"}]},"id":84073,"nodeType":"IfStatement","src":"45142:887:167","trueBody":{"id":84068,"nodeType":"Block","src":"45183:787:167","statements":[{"assignments":[84054],"declarations":[{"constant":false,"id":84054,"mutability":"mutable","name":"callReply","nameLocation":"45646:9:167","nodeType":"VariableDeclaration","scope":84068,"src":"45638:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84053,"name":"uint256","nodeType":"ElementaryTypeName","src":"45638:7:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"documentation":" @dev We only allow arbitrary calls to `!isSmall` `Mirror` contracts,\n which are more likely to come from their ABI interfaces.\n The minimum call data length is 0x24 (36 bytes) because:\n - 0x04 (4 bytes) for the function selector [0x00..0x04)\n - 0x20 (32 bytes) for the bool `callReply` [0x04..0x24)","id":84055,"nodeType":"VariableDeclarationStatement","src":"45638:17:167"},{"AST":{"nativeSrc":"45695:63:167","nodeType":"YulBlock","src":"45695:63:167","statements":[{"nativeSrc":"45713:31:167","nodeType":"YulAssignment","src":"45713:31:167","value":{"arguments":[{"kind":"number","nativeSrc":"45739:4:167","nodeType":"YulLiteral","src":"45739:4:167","type":"","value":"0x04"}],"functionName":{"name":"calldataload","nativeSrc":"45726:12:167","nodeType":"YulIdentifier","src":"45726:12:167"},"nativeSrc":"45726:18:167","nodeType":"YulFunctionCall","src":"45726:18:167"},"variableNames":[{"name":"callReply","nativeSrc":"45713:9:167","nodeType":"YulIdentifier","src":"45713:9:167"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":84054,"isOffset":false,"isSlot":false,"src":"45713:9:167","valueSize":1}],"flags":["memory-safe"],"id":84056,"nodeType":"InlineAssembly","src":"45670:88:167"},{"assignments":[84058],"declarations":[{"constant":false,"id":84058,"mutability":"mutable","name":"messageId","nameLocation":"45780:9:167","nodeType":"VariableDeclaration","scope":84068,"src":"45772:17:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84057,"name":"bytes32","nodeType":"ElementaryTypeName","src":"45772:7:167","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":84066,"initialValue":{"arguments":[{"expression":{"id":84060,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45805:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":84061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45809:4:167","memberName":"data","nodeType":"MemberAccess","src":"45805:8:167","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84062,"name":"callReply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84054,"src":"45815:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":84063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45828:1:167","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45815:14:167","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":84059,"name":"_sendMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83276,"src":"45792:12:167","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes calldata,bool) returns (bytes32)"}},"id":84065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45792:38:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"45772:58:167"},{"AST":{"nativeSrc":"45870:90:167","nodeType":"YulBlock","src":"45870:90:167","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"45895:4:167","nodeType":"YulLiteral","src":"45895:4:167","type":"","value":"0x00"},{"name":"messageId","nativeSrc":"45901:9:167","nodeType":"YulIdentifier","src":"45901:9:167"}],"functionName":{"name":"mstore","nativeSrc":"45888:6:167","nodeType":"YulIdentifier","src":"45888:6:167"},"nativeSrc":"45888:23:167","nodeType":"YulFunctionCall","src":"45888:23:167"},"nativeSrc":"45888:23:167","nodeType":"YulExpressionStatement","src":"45888:23:167"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"45935:4:167","nodeType":"YulLiteral","src":"45935:4:167","type":"","value":"0x00"},{"kind":"number","nativeSrc":"45941:4:167","nodeType":"YulLiteral","src":"45941:4:167","type":"","value":"0x20"}],"functionName":{"name":"return","nativeSrc":"45928:6:167","nodeType":"YulIdentifier","src":"45928:6:167"},"nativeSrc":"45928:18:167","nodeType":"YulFunctionCall","src":"45928:18:167"},"nativeSrc":"45928:18:167","nodeType":"YulExpressionStatement","src":"45928:18:167"}]},"evmVersion":"osaka","externalReferences":[{"declaration":84058,"isOffset":false,"isSlot":false,"src":"45901:9:167","valueSize":1}],"flags":["memory-safe"],"id":84067,"nodeType":"InlineAssembly","src":"45845:115:167"}]}},"id":84074,"nodeType":"IfStatement","src":"44981:1048:167","trueBody":{"id":84043,"nodeType":"Block","src":"45024:112:167","statements":[{"assignments":[84032],"declarations":[{"constant":false,"id":84032,"mutability":"mutable","name":"value","nameLocation":"45046:5:167","nodeType":"VariableDeclaration","scope":84043,"src":"45038:13:167","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":84031,"name":"uint128","nodeType":"ElementaryTypeName","src":"45038:7:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":84038,"initialValue":{"arguments":[{"expression":{"id":84035,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"45062:3:167","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":84036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45066:5:167","memberName":"value","nodeType":"MemberAccess","src":"45062:9:167","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"45054:7:167","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":84033,"name":"uint128","nodeType":"ElementaryTypeName","src":"45054:7:167","typeDescriptions":{}}},"id":84037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45054:18:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"45038:34:167"},{"eventCall":{"arguments":[{"id":84040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84032,"src":"45119:5:167","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":84039,"name":"OwnedBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74177,"src":"45092:26:167","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":84041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45092:33:167","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84042,"nodeType":"EmitStatement","src":"45087:38:167"}]}}]},"documentation":{"id":84016,"nodeType":"StructuredDocumentation","src":"44634:290:167","text":" @dev Fallback function for top-up owned balance in native currency (ETH)\n and for sending arbitrary calls to `!isSmall` `Mirror` contracts\n as messages to Sails framework.\n See the description of `Mirror.isSmall` field for details."},"implemented":true,"kind":"fallback","modifiers":[{"id":84019,"kind":"modifierInvocation","modifierName":{"id":84018,"name":"whenNotPaused","nameLocations":["44957:13:167"],"nodeType":"IdentifierPath","referencedDeclaration":82749,"src":"44957:13:167"},"nodeType":"ModifierInvocation","src":"44957:13:167"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":84017,"nodeType":"ParameterList","parameters":[],"src":"44937:2:167"},"returnParameters":{"id":84020,"nodeType":"ParameterList","parameters":[],"src":"44971:0:167"},"scope":84077,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":82550,"name":"IMirror","nameLocations":["2659:7:167"],"nodeType":"IdentifierPath","referencedDeclaration":74395,"src":"2659:7:167"},"id":82551,"nodeType":"InheritanceSpecifier","src":"2659:7:167"}],"canonicalName":"MirrorWithInstrumentation","contractDependencies":[],"contractKind":"contract","documentation":{"id":82549,"nodeType":"StructuredDocumentation","src":"621:1999:167","text":" @dev Mirror smart contract is responsible for storing the minimal state of programs on our platform\n and transitioning from one state to another by calling `performStateTransition(...)`. It's built\n on actor-model architecture, and in Ethereum, we implement this through \"request-response\" model.\n This means we have two types of events:\n - \"Requested\" events - when user calls one of the methods marked as \"Primary Gear logic\" we emit such an event,\n and all our nodes process it off-chain\n - \"Responded\" events - when we receive response from our nodes and transmit it back to Ethereum.\n All logic called within `performStateTransition(...)` and leading to methods marked as\n \"Private calls related to performStateTransition\" are such events.\n It's important not to confuse these two, as this is how we implement the actor model in Ethereum.\n Mirror economic model has two balances:\n - Owned balance in the native currency (ETH) and is represented as `u128`, since no amount of ETH can exceed `u128::MAX`.\n This balance type can be topped up via `fallback() external payable` and is also used throughout the protocol as `value`.\n - Executable balance in the ERC20 WVARA token is also represented as `u128`, since we also represent it as `u128` on our chain.\n It is used only in the `executableBalanceTopUp(...)` method to top up the executable balance of program on our platform.\n You must top up this balance type, since it allows the program to execute. Developers of WASM smart contracts on the\n Sails framework must develop revenue model for their dApp and top up the program's executable balance so that users\n can use it for free. This is called the \"reverse-gas model\". Developer can also require the presence of `value` in\n the owned balance when calling methods in a WASM smart contract to protect their program from spam."},"fullyImplemented":true,"linearizedBaseContracts":[84077,74395],"name":"MirrorWithInstrumentation","nameLocation":"2630:25:167","scope":84078,"usedErrors":[74253,74256,74259,74262,74265,74268,74271,74274,74277,74279,74281,74283,74285,74287,74289],"usedEvents":[74141,74154,74165,74172,74177,74182,74193,74202,74213,74222,74229,74236,74243,74250,82622]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":167} \ No newline at end of file diff --git a/ethexe/ethereum/abi/POAMiddleware.json b/ethexe/ethereum/abi/POAMiddleware.json index c645216949c..9c278ac1f81 100644 --- a/ethexe/ethereum/abi/POAMiddleware.json +++ b/ethexe/ethereum/abi/POAMiddleware.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowedVaultImplVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"changeSlashExecutor","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"changeSlashRequester","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"disableOperator","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"disableVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"distributeOperatorRewards","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"distributeStakerRewards","inputs":[{"name":"","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"enableOperator","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"enableVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"eraDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"executeSlash","inputs":[{"name":"","type":"tuple[]","internalType":"struct IMiddleware.SlashIdentifier[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"getActiveOperatorsStakeAt","inputs":[{"name":"","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"getOperatorStakeAt","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"initialize","inputs":[{"name":"_params","type":"tuple","internalType":"struct IMiddleware.InitParams","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"eraDuration","type":"uint48","internalType":"uint48"},{"name":"minVaultEpochDuration","type":"uint48","internalType":"uint48"},{"name":"operatorGracePeriod","type":"uint48","internalType":"uint48"},{"name":"vaultGracePeriod","type":"uint48","internalType":"uint48"},{"name":"minVetoDuration","type":"uint48","internalType":"uint48"},{"name":"minSlashExecutionDelay","type":"uint48","internalType":"uint48"},{"name":"allowedVaultImplVersion","type":"uint64","internalType":"uint64"},{"name":"vetoSlasherImplType","type":"uint64","internalType":"uint64"},{"name":"maxResolverSetEpochsDelay","type":"uint256","internalType":"uint256"},{"name":"maxAdminFee","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"address","internalType":"address"},{"name":"router","type":"address","internalType":"address"},{"name":"symbiotic","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makeElectionAt","inputs":[{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"maxAdminFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"maxResolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"minSlashExecutionDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"minVaultEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"minVetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"operatorGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"registerVault","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestSlash","inputs":[{"name":"","type":"tuple[]","internalType":"struct IMiddleware.SlashData[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"vaults","type":"tuple[]","internalType":"struct IMiddleware.VaultSlashData[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setValidators","inputs":[{"name":"validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"subnetwork","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"symbioticContracts","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}],"stateMutability":"pure"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"unregisterVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaultGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"vetoSlasherImplType","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"BurnerHookNotSupported","inputs":[]},{"type":"error","name":"DelegatorNotInitialized","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EraDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"IncompatibleSlasherType","inputs":[]},{"type":"error","name":"IncompatibleStakerRewardsVersion","inputs":[]},{"type":"error","name":"IncompatibleVaultVersion","inputs":[]},{"type":"error","name":"IncorrectTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidStakerRewardsVault","inputs":[]},{"type":"error","name":"MaxValidatorsMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinVaultEpochDurationLessThanTwoEras","inputs":[]},{"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch","inputs":[]},{"type":"error","name":"MinVetoDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"NonFactoryStakerRewards","inputs":[]},{"type":"error","name":"NonFactoryVault","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegisteredOperator","inputs":[]},{"type":"error","name":"NotRegisteredVault","inputs":[]},{"type":"error","name":"NotRouter","inputs":[]},{"type":"error","name":"NotSlashExecutor","inputs":[]},{"type":"error","name":"NotSlashRequester","inputs":[]},{"type":"error","name":"NotVaultOwner","inputs":[]},{"type":"error","name":"OperatorDoesNotExist","inputs":[]},{"type":"error","name":"OperatorDoesNotOptIn","inputs":[]},{"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"OperatorGracePeriodNotPassed","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"ResolverMismatch","inputs":[]},{"type":"error","name":"ResolverSetDelayMustBeAtLeastThree","inputs":[]},{"type":"error","name":"ResolverSetDelayTooLong","inputs":[]},{"type":"error","name":"SlasherNotInitialized","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownCollateral","inputs":[]},{"type":"error","name":"UnsupportedBurner","inputs":[]},{"type":"error","name":"UnsupportedDelegatorHook","inputs":[]},{"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"VaultGracePeriodNotPassed","inputs":[]},{"type":"error","name":"VaultWrongEpochDuration","inputs":[]},{"type":"error","name":"VetoDurationTooLong","inputs":[]},{"type":"error","name":"VetoDurationTooShort","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f51602061125a5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161119390816100c78239608051818181610bdd0152610cac0152f35b6001600160401b0319166001600160401b039081175f51602061125a5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806305c4fdf914610eb65780630a71094c14610e615780632633b70f1461060a5780632acde09814610238578063373bba1f146102385780633ccce7891461060a5780633d15e74e146102385780634455a38f14610238578063461e7a8e146102385780634f1ef28614610c3157806352d1902d14610bcb5780636c2eb350146109f05780636d1064eb1461060a5780636e5c79321461091b578063709d06ae14610238578063715018a6146108b4578063729e2f361461089b57806379a8b245146102385780637fbe95b51461077a57806386c241a11461060a5780638da5cb5b146107465780639300c9261461060f578063936f43301461060a578063945cf2dd1461023857806396115bc21461060a5780639e03231114610238578063ab12275314610405578063ad3cb1cc146103a7578063af96299514610352578063b5e5ad1214610339578063bcf339341461027a578063c639e2d614610238578063c9b0b1e914610238578063ceebb69a14610265578063d55a5bdf14610238578063d8dfeb4514610265578063d99ddfc71461023d578063d99fcd6614610238578063f2fde38b1461020d5763f887ea40146101d1575f80fd5b34610209575f366003190112610209575f5160206111535f395f51905f5254600701546040516001600160a01b039091168152602090f35b5f80fd5b3461020957602036600319011261020957610236610229610ed8565b610231611056565b610fe5565b005b610265565b3461020957604036600319011261020957610256610ed8565b5061025f610f82565b50610fae565b34610209575f36600319011215610fae575f80fd5b34610209575f3660031901126102095760405161014081018181106001600160401b03821117610325575f91610120916040528281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152015260405162461bcd60e51b8152806103216004820160609060208152600f60208201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60408201520190565b0390fd5b634e487b7160e01b5f52604160045260245ffd5b346102095760203660031901126102095761025f610f6d565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260061b01011115610fae575f80fd5b34610209575f3660031901126102095760408051906103c68183610f31565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610209576102e0366003190112610209575f5160206111735f395f51905f52546001600160401b0360ff8260401c1615911680159081610602575b60011490816105f8575b1590816105ef575b506105e0578060016001600160401b03195f5160206111735f395f51905f525416175f5160206111735f395f51905f52556105b0575b6004356001600160a01b0381168103610209576104b0906104a8611089565b610231611089565b6104b8611089565b6105126040516104c9604082610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c657761726556310060208201526104fb611056565b80516020918201205f19015f9081522060ff191690565b5f5160206111535f395f51905f5281905561018435906001600160a01b03821682036102095760070180546001600160a01b0319166001600160a01b0390921691909117905561055e57005b60ff60401b195f5160206111735f395f51905f5254165f5160206111735f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f5160206111735f395f51905f525416175f5160206111735f395f51905f5255610489565b63f92ee8a960e01b5f5260045ffd5b90501582610453565b303b15915061044b565b829150610441565b610f18565b34610209576020366003190112610209576004356001600160401b038111610209573660238201121561020957806004013561064a81610f97565b916106586040519384610f31565b818352602083016024819360051b8301019136831161020957602401905b82821061072e57505050610688611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f700549151906001600160401b03821161032557600160401b8211610325578254828455808310610704575b50915f5260205f20915f5b8281106106e757005b81516001600160a01b0316818501556020909101906001016106de565b835f52828060205f20019103905f5b8281106107215750506106d3565b5f82820155600101610713565b6020809161073b84610f04565b815201910190610676565b34610209575f366003190112610209575f5160206111135f395f51905f52546040516001600160a01b039091168152602090f35b34610209576040366003190112610209576004356001600160401b03811161020957606060031982360301126102095760405190606082018281106001600160401b038211176103255760405280600401356001600160401b038111610209578101366023820112156102095760048101356107f581610f97565b916108036040519384610f31565b818352602060048185019360061b830101019036821161020957602401915b818310610850578560406108456044888885526024810135602086015201610f04565b91015261025f610f82565b604083360312610209576040519060408201908282106001600160401b0383111761032557604092602092845261088686610f04565b81528286013583820152815201920191610822565b346102095760603660031901126102095761025f610ed8565b34610209575f366003190112610209576108cc611056565b5f5160206111135f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461020957604036600319011261020957610934610f6d565b507f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70054604051806020835491828152019081935f5260205f20905f5b8181106109d15750505081610986910382610f31565b604051918291602083019060208452518091526040830191905f5b8181106109af575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109a1565b82546001600160a01b0316845260209093019260019283019201610970565b34610209575f36600319011261020957610a08611056565b5f5160206111735f395f51905f525460ff8160401c16908115610bb6575b506105e0575f5160206111735f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f5160206111135f395f51905f5254610a78906001600160a01b03166104a8611089565b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260205f5160206111535f395f51905f52546040906007610aef8351610abe8582610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563200868201526104fb611056565b91825f5160206111535f395f51905f5255610b4b8451610b10606082610f31565b602281527f6d6964646c65776172652e73746f726167652e504f414d6964646c657761726587820152612b1960f11b868201526104fb611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70055810154910180546001600160a01b0319166001600160a01b03929092169190911790555f5160206111735f395f51905f52805468ff0000000000000000191690555160028152a1005b600291506001600160401b0316101581610a26565b34610209575f366003190112610209577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610c225760206040515f5160206111335f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261020957610c45610ed8565b602435906001600160401b038211610209573660238301121561020957816004013590610c7182610f52565b91610c7f6040519384610f31565b8083526020830193366024838301011161020957815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e3f575b50610c2257610ce4611056565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610e0b575b50610d265784634c9c8ce360e01b5f5260045260245ffd5b805f5160206111335f395f51905f52869203610df95750823b15610de7575f5160206111335f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610dce575f8091610236945190845af43d15610dc6573d91610daa83610f52565b92610db86040519485610f31565b83523d5f602085013e6110b4565b6060916110b4565b50505034610dd857005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610e37575b81610e2760209383610f31565b8101031261020957519086610d0e565b3d9150610e1a565b5f5160206111335f395f51905f52546001600160a01b03161415905084610cd7565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260051b01011115610fae575f80fd5b3461020957604036600319011261020957610ecf610ed8565b5061025f610eee565b600435906001600160a01b038216820361020957565b602435906001600160a01b038216820361020957565b35906001600160a01b038216820361020957565b346102095760203660031901126102095761025f610ed8565b90601f801991011681019081106001600160401b0382111761032557604052565b6001600160401b03811161032557601f01601f191660200190565b6004359065ffffffffffff8216820361020957565b6024359065ffffffffffff8216820361020957565b6001600160401b0381116103255760051b60200190565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b6044820152606490fd5b6001600160a01b03168015611043575f5160206111135f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206111135f395f51905f52546001600160a01b0316330361107657565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206111735f395f51905f525460401c16156110a557565b631afcd79f60e31b5f5260045ffd5b906110d857508051156110c957602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580611109575b6110e9575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156110e156fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"805:6592:164:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;805:6592:164;;7983:34:30;7979:146;;-1:-1:-1;805:6592:164;;;;;;;;1052:13:60;805:6592:164;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;8085:29:30;;805:6592:164;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;805:6592:164;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806305c4fdf914610eb65780630a71094c14610e615780632633b70f1461060a5780632acde09814610238578063373bba1f146102385780633ccce7891461060a5780633d15e74e146102385780634455a38f14610238578063461e7a8e146102385780634f1ef28614610c3157806352d1902d14610bcb5780636c2eb350146109f05780636d1064eb1461060a5780636e5c79321461091b578063709d06ae14610238578063715018a6146108b4578063729e2f361461089b57806379a8b245146102385780637fbe95b51461077a57806386c241a11461060a5780638da5cb5b146107465780639300c9261461060f578063936f43301461060a578063945cf2dd1461023857806396115bc21461060a5780639e03231114610238578063ab12275314610405578063ad3cb1cc146103a7578063af96299514610352578063b5e5ad1214610339578063bcf339341461027a578063c639e2d614610238578063c9b0b1e914610238578063ceebb69a14610265578063d55a5bdf14610238578063d8dfeb4514610265578063d99ddfc71461023d578063d99fcd6614610238578063f2fde38b1461020d5763f887ea40146101d1575f80fd5b34610209575f366003190112610209575f5160206111535f395f51905f5254600701546040516001600160a01b039091168152602090f35b5f80fd5b3461020957602036600319011261020957610236610229610ed8565b610231611056565b610fe5565b005b610265565b3461020957604036600319011261020957610256610ed8565b5061025f610f82565b50610fae565b34610209575f36600319011215610fae575f80fd5b34610209575f3660031901126102095760405161014081018181106001600160401b03821117610325575f91610120916040528281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152015260405162461bcd60e51b8152806103216004820160609060208152600f60208201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60408201520190565b0390fd5b634e487b7160e01b5f52604160045260245ffd5b346102095760203660031901126102095761025f610f6d565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260061b01011115610fae575f80fd5b34610209575f3660031901126102095760408051906103c68183610f31565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610209576102e0366003190112610209575f5160206111735f395f51905f52546001600160401b0360ff8260401c1615911680159081610602575b60011490816105f8575b1590816105ef575b506105e0578060016001600160401b03195f5160206111735f395f51905f525416175f5160206111735f395f51905f52556105b0575b6004356001600160a01b0381168103610209576104b0906104a8611089565b610231611089565b6104b8611089565b6105126040516104c9604082610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c657761726556310060208201526104fb611056565b80516020918201205f19015f9081522060ff191690565b5f5160206111535f395f51905f5281905561018435906001600160a01b03821682036102095760070180546001600160a01b0319166001600160a01b0390921691909117905561055e57005b60ff60401b195f5160206111735f395f51905f5254165f5160206111735f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f5160206111735f395f51905f525416175f5160206111735f395f51905f5255610489565b63f92ee8a960e01b5f5260045ffd5b90501582610453565b303b15915061044b565b829150610441565b610f18565b34610209576020366003190112610209576004356001600160401b038111610209573660238201121561020957806004013561064a81610f97565b916106586040519384610f31565b818352602083016024819360051b8301019136831161020957602401905b82821061072e57505050610688611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f700549151906001600160401b03821161032557600160401b8211610325578254828455808310610704575b50915f5260205f20915f5b8281106106e757005b81516001600160a01b0316818501556020909101906001016106de565b835f52828060205f20019103905f5b8281106107215750506106d3565b5f82820155600101610713565b6020809161073b84610f04565b815201910190610676565b34610209575f366003190112610209575f5160206111135f395f51905f52546040516001600160a01b039091168152602090f35b34610209576040366003190112610209576004356001600160401b03811161020957606060031982360301126102095760405190606082018281106001600160401b038211176103255760405280600401356001600160401b038111610209578101366023820112156102095760048101356107f581610f97565b916108036040519384610f31565b818352602060048185019360061b830101019036821161020957602401915b818310610850578560406108456044888885526024810135602086015201610f04565b91015261025f610f82565b604083360312610209576040519060408201908282106001600160401b0383111761032557604092602092845261088686610f04565b81528286013583820152815201920191610822565b346102095760603660031901126102095761025f610ed8565b34610209575f366003190112610209576108cc611056565b5f5160206111135f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461020957604036600319011261020957610934610f6d565b507f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70054604051806020835491828152019081935f5260205f20905f5b8181106109d15750505081610986910382610f31565b604051918291602083019060208452518091526040830191905f5b8181106109af575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109a1565b82546001600160a01b0316845260209093019260019283019201610970565b34610209575f36600319011261020957610a08611056565b5f5160206111735f395f51905f525460ff8160401c16908115610bb6575b506105e0575f5160206111735f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f5160206111135f395f51905f5254610a78906001600160a01b03166104a8611089565b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260205f5160206111535f395f51905f52546040906007610aef8351610abe8582610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563200868201526104fb611056565b91825f5160206111535f395f51905f5255610b4b8451610b10606082610f31565b602281527f6d6964646c65776172652e73746f726167652e504f414d6964646c657761726587820152612b1960f11b868201526104fb611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70055810154910180546001600160a01b0319166001600160a01b03929092169190911790555f5160206111735f395f51905f52805468ff0000000000000000191690555160028152a1005b600291506001600160401b0316101581610a26565b34610209575f366003190112610209577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610c225760206040515f5160206111335f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261020957610c45610ed8565b602435906001600160401b038211610209573660238301121561020957816004013590610c7182610f52565b91610c7f6040519384610f31565b8083526020830193366024838301011161020957815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e3f575b50610c2257610ce4611056565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610e0b575b50610d265784634c9c8ce360e01b5f5260045260245ffd5b805f5160206111335f395f51905f52869203610df95750823b15610de7575f5160206111335f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610dce575f8091610236945190845af43d15610dc6573d91610daa83610f52565b92610db86040519485610f31565b83523d5f602085013e6110b4565b6060916110b4565b50505034610dd857005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610e37575b81610e2760209383610f31565b8101031261020957519086610d0e565b3d9150610e1a565b5f5160206111335f395f51905f52546001600160a01b03161415905084610cd7565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260051b01011115610fae575f80fd5b3461020957604036600319011261020957610ecf610ed8565b5061025f610eee565b600435906001600160a01b038216820361020957565b602435906001600160a01b038216820361020957565b35906001600160a01b038216820361020957565b346102095760203660031901126102095761025f610ed8565b90601f801991011681019081106001600160401b0382111761032557604052565b6001600160401b03811161032557601f01601f191660200190565b6004359065ffffffffffff8216820361020957565b6024359065ffffffffffff8216820361020957565b6001600160401b0381116103255760051b60200190565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b6044820152606490fd5b6001600160a01b03168015611043575f5160206111135f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206111135f395f51905f52546001600160a01b0316330361107657565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206111735f395f51905f525460401c16156110a557565b631afcd79f60e31b5f5260045ffd5b906110d857508051156110c957602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580611109575b6110e9575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156110e156fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"805:6592:164:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:25;805:6592;4535:25;;;805:6592;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;2985:17;;805:6592;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;2357:1:29;805:6592:164;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;805:6592:164;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:25;;;;;;;805:6592;4535:25;;805:6592;;;;;;;;;;-1:-1:-1;;;805:6592:164;;;;;;;4535:25;;;;805:6592;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;;;4301:16:30;805:6592:164;;4724:16:30;;:34;;;;805:6592:164;4803:1:30;4788:16;:50;;;;805:6592:164;4853:13:30;:30;;;;805:6592:164;4849:91:30;;;805:6592:164;4803:1:30;-1:-1:-1;;;;;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;4977:67:30;;805:6592:164;;;-1:-1:-1;;;;;805:6592:164;;;;;;6959:1:30;;6891:76;;:::i;:::-;;;:::i;6959:1::-;6891:76;;:::i;:::-;7075:37:164;805:6592;;;;;;:::i;:::-;;;;;;;;;2303:62:29;;:::i;:::-;1800:178:73;;;;;;;-1:-1:-1;;1800:178:73;;;;;;-1:-1:-1;;1800:178:73;;1707:277;7075:37:164;-1:-1:-1;;;;;;;;;;;1106:66:164;;;1806:14;805:6592;;-1:-1:-1;;;;;805:6592:164;;;;;;1795:8;;805:6592;;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;;;;;;;5064:101:30;;805:6592:164;5064:101:30;-1:-1:-1;;;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;;;;;;805:6592:164;5140:14:30;805:6592:164;;;4803:1:30;805:6592:164;;5140:14:30;805:6592:164;4977:67:30;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;4977:67:30;;4849:91;6496:23;;;805:6592:164;4906:23:30;805:6592:164;;4906:23:30;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;805:6592:164;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2303:62:29;;;;;:::i;:::-;1333:66:164;805:6592;;;;-1:-1:-1;;;;;805:6592:164;;;;-1:-1:-1;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;805:6592:164;;;;;;;-1:-1:-1;;;;;805:6592:164;3975:40:29;805:6592:164;;3975:40:29;805:6592:164;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;1333:66;805:6592;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;-1:-1:-1;805:6592:164;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;805:6592:164;;;;;;6429:44:30;;;;;805:6592:164;6425:105:30;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;805:6592:164;;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;6959:1:30;;-1:-1:-1;;;;;805:6592:164;6891:76:30;;:::i;6959:1::-;6654:20;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;2249:17;7075:37;805:6592;;;;;;:::i;:::-;;;;;;;;;2303:62:29;;:::i;7075:37:164:-;1106:66;;-1:-1:-1;;;;;;;;;;;1106:66:164;7284:37;805:6592;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;805:6592:164;;;;2303:62:29;;:::i;7284:37:164:-;1333:66;1106;2249:17;;805:6592;2229:17;;805:6592;;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;805:6592:164;;;;1955:1;805:6592;;6654:20:30;805:6592:164;6429:44:30;1955:1:164;805:6592;;-1:-1:-1;;;;;805:6592:164;6448:25:30;;6429:44;;;805:6592:164;;;;;;-1:-1:-1;;805:6592:164;;;;4824:6:60;-1:-1:-1;;;;;805:6592:164;4815:4:60;4807:23;4803:145;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;4803:145:60;4578:29;;;805:6592:164;4908:29:60;805:6592:164;;4908:29:60;805:6592:164;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4401:6:60;805:6592:164;4392:4:60;4384:23;;;:120;;;;805:6592:164;4367:251:60;;;2303:62:29;;:::i;:::-;805:6592:164;;-1:-1:-1;;;5865:52:60;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;5865:52:60;;805:6592:164;;5865:52:60;;;805:6592:164;-1:-1:-1;5861:437:60;;1805:47:53;;;;805:6592:164;6227:60:60;805:6592:164;;;;6227:60:60;5861:437;5959:40;-1:-1:-1;;;;;;;;;;;5959:40:60;;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;805:6592:164;;;;;2407:36:53;-1:-1:-1;;2407:36:53;805:6592:164;;2458:15:53;:11;;805:6592:164;4065:25:66;;4107:55;4065:25;;;;;;805:6592:164;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;805:6592:164:-;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;805:6592:164;6159:70:53;6199:19;;;805:6592:164;6199:19:53;805:6592:164;;6199:19:53;1744:119;1805:47;;;805:6592:164;1805:47:53;805:6592:164;;;;1805:47:53;5955:120:60;6026:34;;;805:6592:164;6026:34:60;805:6592:164;;;;6026:34:60;5865:52;;;;805:6592:164;5865:52:60;;805:6592:164;5865:52:60;;;;;;805:6592:164;5865:52:60;;;:::i;:::-;;;805:6592:164;;;;;5865:52:60;;;;;;;-1:-1:-1;5865:52:60;;4384:120;-1:-1:-1;;;;;;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;4462:42:60;;;-1:-1:-1;4384:120:60;;;805:6592:164;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;:::i;:::-;;;;-1:-1:-1;;;;;805:6592:164;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;805:6592:164;;;;;;:::o;:::-;;;-1:-1:-1;;;;;805:6592:164;;;;;;:::o;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;:::o;:::-;-1:-1:-1;;;;;805:6592:164;;;;;;-1:-1:-1;;805:6592:164;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;805:6592:164;;;;;;;;;:::o;5424:95::-;805:6592;;-1:-1:-1;;;5487:25:164;;805:6592;5487:25;;;805:6592;;;;;;-1:-1:-1;;;805:6592:164;;;;;;4535:25;3405:215:29;-1:-1:-1;;;;;805:6592:164;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;805:6592:164;;;;;;;-1:-1:-1;;;;;805:6592:164;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;805:6592:164;;3509:1:29;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;805:6592:164;;-1:-1:-1;2763:40:29;7082:141:30;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;4437:582:66;;4609:8;;-1:-1:-1;805:6592:164;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;805:6592:164;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;805:6592:164;;;;4933:24:66;805:6592:164;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":3037,"length":32},{"start":3244,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowedVaultImplVersion()":"c9b0b1e9","changeSlashExecutor(address)":"86c241a1","changeSlashRequester(address)":"6d1064eb","collateral()":"d8dfeb45","disableOperator()":"d99fcd66","disableVault(address)":"3ccce789","distributeOperatorRewards(address,uint256,bytes32)":"729e2f36","distributeStakerRewards(((address,uint256)[],uint256,address),uint48)":"7fbe95b5","enableOperator()":"3d15e74e","enableVault(address)":"936f4330","eraDuration()":"4455a38f","executeSlash((address,uint256)[])":"af962995","getActiveOperatorsStakeAt(uint48)":"b5e5ad12","getOperatorStakeAt(address,uint48)":"d99ddfc7","initialize((address,uint48,uint48,uint48,uint48,uint48,uint48,uint64,uint64,uint256,uint256,address,address,(address,address,address,address,address,address,address,address,address,address)))":"ab122753","makeElectionAt(uint48,uint256)":"6e5c7932","maxAdminFee()":"c639e2d6","maxResolverSetEpochsDelay()":"9e032311","minSlashExecutionDelay()":"373bba1f","minVaultEpochDuration()":"945cf2dd","minVetoDuration()":"461e7a8e","operatorGracePeriod()":"709d06ae","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registerOperator()":"2acde098","registerVault(address,address)":"05c4fdf9","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestSlash((address,uint48,(address,uint256)[])[])":"0a71094c","router()":"f887ea40","setValidators(address[])":"9300c926","subnetwork()":"ceebb69a","symbioticContracts()":"bcf33934","transferOwnership(address)":"f2fde38b","unregisterOperator(address)":"96115bc2","unregisterVault(address)":"2633b70f","upgradeToAndCall(address,bytes)":"4f1ef286","vaultGracePeriod()":"79a8b245","vetoSlasherImplType()":"d55a5bdf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BurnerHookNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleSlasherType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleStakerRewardsVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleVaultVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStakerRewardsVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValidatorsMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSlashExecutionDelayMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVaultEpochDurationLessThanTwoEras\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoAndSlashDelayTooLongForVaultEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryStakerRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashExecutor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashRequester\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotOptIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayMustBeAtLeastThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedDelegatorHook\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultWrongEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooShort\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowedVaultImplVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"changeSlashExecutor\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"changeSlashRequester\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"disableVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"distributeOperatorRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"distributeStakerRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"enableVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eraDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.SlashIdentifier[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"name\":\"executeSlash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"getActiveOperatorsStakeAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"getOperatorStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"eraDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVaultEpochDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"operatorGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vaultGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVetoDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minSlashExecutionDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint64\",\"name\":\"allowedVaultImplVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"vetoSlasherImplType\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"maxResolverSetEpochsDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAdminFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"symbiotic\",\"type\":\"tuple\"}],\"internalType\":\"struct IMiddleware.InitParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"makeElectionAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxResolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minSlashExecutionDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVaultEpochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registerVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.VaultSlashData[]\",\"name\":\"vaults\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IMiddleware.SlashData[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"name\":\"requestSlash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"setValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subnetwork\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbioticContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"unregisterVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoSlasherImplType\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"BurnerHookNotSupported()\":[{\"details\":\"Emitted when vault's slasher has a burner hook.\"}],\"DelegatorNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's delegator is not initialized.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EraDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `eraDuration` is equal to zero.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncompatibleSlasherType()\":[{\"details\":\"Emitted in `registerVault` when the vaults' slasher type is not supported.\"}],\"IncompatibleStakerRewardsVersion()\":[{\"details\":\"Emitted when rewards contract has incompatible version.\"}],\"IncompatibleVaultVersion()\":[{\"details\":\"Emitted when the vault has incompatible version.\"}],\"IncorrectTimestamp()\":[{\"details\":\"Emitted when requested timestamp is in the future.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidStakerRewardsVault()\":[{\"details\":\"Emitted in `registerVault` when the vault in rewards contract is not the same as in the function parameter.\"}],\"MaxValidatorsMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `maxValidators` is equal to zero.\"}],\"MinSlashExecutionDelayMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minSlashExecutionDelay` is equal to zero.\"}],\"MinVaultEpochDurationLessThanTwoEras()\":[{\"details\":\"Emitted when `minVaultEpochDuration` is less than `2 * eraDuration`.\"}],\"MinVetoAndSlashDelayTooLongForVaultEpoch()\":[{\"details\":\"Emitted when `minVetoDuration + minSlashExecutionDelay` is greater than `minVaultEpochDuration`.\"}],\"MinVetoDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minVetoDuration` is equal to zero.\"}],\"NonFactoryStakerRewards()\":[{\"details\":\"Emitted when rewards contract was not created by the StakerRewardsFactory.\"}],\"NonFactoryVault()\":[{\"details\":\"Emitted when trying to register the vault from unknown factory.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"NotRegisteredOperator()\":[{\"details\":\"Emitted when `SlashData` contains the operator that is not registered in the Middleware.\"}],\"NotRegisteredVault()\":[{\"details\":\"Emitted when the vault is not registered in the Middleware.\"}],\"NotRouter()\":[{\"details\":\"Emitted when the `msg.sender` is not the Router contract.\"}],\"NotSlashExecutor()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash executor.\"}],\"NotSlashRequester()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash requester.\"}],\"NotVaultOwner()\":[{\"details\":\"Emitted when `msg.sender` is no the owner.\"}],\"OperatorDoesNotExist()\":[{\"details\":\"Emitted when the operator is not registered in the OperatorRegistry.\"}],\"OperatorDoesNotOptIn()\":[{\"details\":\"Emitted when the operator is not opted-in to the Middleware.\"}],\"OperatorGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `operatorGracePeriod` is less than `minVaultEpochDuration`.\"}],\"OperatorGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the operator earlier then `operatorGracePeriod`.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"ResolverMismatch()\":[{\"details\":\"Emitted when slasher's veto resolver is not the same as in the Middleware.\"}],\"ResolverSetDelayMustBeAtLeastThree()\":[{\"details\":\"Emitted when `maxResolverSetEpochsDelay` is less than `3`.\"}],\"ResolverSetDelayTooLong()\":[{\"details\":\"Emitted when the slasher's delay to update the resolver is greater than the one in the Middleware.\"}],\"SlasherNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's slasher is not initialized.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"UnknownCollateral()\":[{\"details\":\"Emitted when trying to distribute rewards with collateral that is not equal to the one in the Middleware.\"}],\"UnsupportedBurner()\":[{\"details\":\"Emitted when vault's burner is equal to `address(0)`.\"}],\"UnsupportedDelegatorHook()\":[{\"details\":\"Emitted when the delegator's hook is not equal to `address(0)`.\"}],\"VaultGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `vaultGracePeriod` is less than `minVaultEpochDuration`.\"}],\"VaultGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the vault earlier then `vaultGracePeriod`.\"}],\"VaultWrongEpochDuration()\":[{\"details\":\"Emitted when trying to register the vault with `epochDuration` less than `minVaultEpochDuration`.\"}],\"VetoDurationTooLong()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` + `minShashExecutionDelay` is greater than vaultEpochDuration.\"}],\"VetoDurationTooShort()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` less than `minVetoDuration`.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerOperator()\":{\"details\":\"Operator must be registered in operator registry.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setValidators(address[])\":{\"details\":\"Sets validators for POA middleware.\",\"params\":{\"validators\":\"The addresses of validators to set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"IncompatibleStakerRewardsVersion()\":[{\"notice\":\"The version of the rewards contract is a index of the whitelisted versions in StakerRewardsFactory.\"}],\"IncompatibleVaultVersion()\":[{\"notice\":\"The version of the vault is a index of the whitelisted versions in VaultFactory.\"}]},\"kind\":\"user\",\"methods\":{\"disableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"enableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"registerOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/POAMiddleware.sol\":\"POAMiddleware\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IPOAMiddleware.sol\":{\"keccak256\":\"0xb19dc08506f6ab2bfff299612ad74193309387a992bef197f153bfedb0483819\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d103acee55668c5f0d5e9c3ebdf6ef4adef5947b971b5701133239f05f80d3e9\",\"dweb:/ipfs/QmfV4FMQwcQHbMZ33nqR1V9JzECzUaLpiq8mWdRPiaQbrN\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/POAMiddleware.sol\":{\"keccak256\":\"0x9e795d47b231857445d3f283f7f8dc73bc93df8e9c67a567c29eb5c2d41261ab\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6d3c70e2b2c5f0610cf83b4994e8fb0fe00a24504e8160db14e69f847996cf75\",\"dweb:/ipfs/QmWU5neTMaxrHu1vSBxSqBg7CqF2VhuNvHdyX1ZZEdqBV7\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48\",\"dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"BurnerHookNotSupported"},{"inputs":[],"type":"error","name":"DelegatorNotInitialized"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EraDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"IncompatibleSlasherType"},{"inputs":[],"type":"error","name":"IncompatibleStakerRewardsVersion"},{"inputs":[],"type":"error","name":"IncompatibleVaultVersion"},{"inputs":[],"type":"error","name":"IncorrectTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidStakerRewardsVault"},{"inputs":[],"type":"error","name":"MaxValidatorsMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinVaultEpochDurationLessThanTwoEras"},{"inputs":[],"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch"},{"inputs":[],"type":"error","name":"MinVetoDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"NonFactoryStakerRewards"},{"inputs":[],"type":"error","name":"NonFactoryVault"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotRegisteredOperator"},{"inputs":[],"type":"error","name":"NotRegisteredVault"},{"inputs":[],"type":"error","name":"NotRouter"},{"inputs":[],"type":"error","name":"NotSlashExecutor"},{"inputs":[],"type":"error","name":"NotSlashRequester"},{"inputs":[],"type":"error","name":"NotVaultOwner"},{"inputs":[],"type":"error","name":"OperatorDoesNotExist"},{"inputs":[],"type":"error","name":"OperatorDoesNotOptIn"},{"inputs":[],"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"OperatorGracePeriodNotPassed"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"ResolverMismatch"},{"inputs":[],"type":"error","name":"ResolverSetDelayMustBeAtLeastThree"},{"inputs":[],"type":"error","name":"ResolverSetDelayTooLong"},{"inputs":[],"type":"error","name":"SlasherNotInitialized"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownCollateral"},{"inputs":[],"type":"error","name":"UnsupportedBurner"},{"inputs":[],"type":"error","name":"UnsupportedDelegatorHook"},{"inputs":[],"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"VaultGracePeriodNotPassed"},{"inputs":[],"type":"error","name":"VaultWrongEpochDuration"},{"inputs":[],"type":"error","name":"VetoDurationTooLong"},{"inputs":[],"type":"error","name":"VetoDurationTooShort"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"allowedVaultImplVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"changeSlashExecutor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"changeSlashRequester"},{"inputs":[],"stateMutability":"pure","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"disableOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"disableVault"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"distributeOperatorRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct Gear.StakerRewardsCommitment","name":"","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"pure","type":"function","name":"distributeStakerRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"enableOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"enableVault"},{"inputs":[],"stateMutability":"pure","type":"function","name":"eraDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"struct IMiddleware.SlashIdentifier[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"executeSlash"},{"inputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"pure","type":"function","name":"getActiveOperatorsStakeAt","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"pure","type":"function","name":"getOperatorStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IMiddleware.InitParams","name":"_params","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint48","name":"eraDuration","type":"uint48"},{"internalType":"uint48","name":"minVaultEpochDuration","type":"uint48"},{"internalType":"uint48","name":"operatorGracePeriod","type":"uint48"},{"internalType":"uint48","name":"vaultGracePeriod","type":"uint48"},{"internalType":"uint48","name":"minVetoDuration","type":"uint48"},{"internalType":"uint48","name":"minSlashExecutionDelay","type":"uint48"},{"internalType":"uint64","name":"allowedVaultImplVersion","type":"uint64"},{"internalType":"uint64","name":"vetoSlasherImplType","type":"uint64"},{"internalType":"uint256","name":"maxResolverSetEpochsDelay","type":"uint256"},{"internalType":"uint256","name":"maxAdminFee","type":"uint256"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"router","type":"address"},{"internalType":"struct Gear.SymbioticContracts","name":"symbiotic","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"makeElectionAt","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxResolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minSlashExecutionDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minVaultEpochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minVetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"operatorGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"registerVault"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"struct IMiddleware.SlashData[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"struct IMiddleware.VaultSlashData[]","name":"vaults","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]}],"stateMutability":"pure","type":"function","name":"requestSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address[]","name":"validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"setValidators"},{"inputs":[],"stateMutability":"pure","type":"function","name":"subnetwork","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"symbioticContracts","outputs":[{"internalType":"struct Gear.SymbioticContracts","name":"","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"unregisterVault"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"pure","type":"function","name":"vaultGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"vetoSlasherImplType","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"registerOperator()":{"details":"Operator must be registered in operator registry."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":""},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setValidators(address[])":{"details":"Sets validators for POA middleware.","params":{"validators":"The addresses of validators to set."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"disableOperator()":{"notice":"This function can be called only be operator themselves."},"enableOperator()":{"notice":"This function can be called only be operator themselves."},"registerOperator()":{"notice":"This function can be called only be operator themselves."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/POAMiddleware.sol":"POAMiddleware"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IPOAMiddleware.sol":{"keccak256":"0xb19dc08506f6ab2bfff299612ad74193309387a992bef197f153bfedb0483819","urls":["bzz-raw://d103acee55668c5f0d5e9c3ebdf6ef4adef5947b971b5701133239f05f80d3e9","dweb:/ipfs/QmfV4FMQwcQHbMZ33nqR1V9JzECzUaLpiq8mWdRPiaQbrN"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/POAMiddleware.sol":{"keccak256":"0x9e795d47b231857445d3f283f7f8dc73bc93df8e9c67a567c29eb5c2d41261ab","urls":["bzz-raw://6d3c70e2b2c5f0610cf83b4994e8fb0fe00a24504e8160db14e69f847996cf75","dweb:/ipfs/QmWU5neTMaxrHu1vSBxSqBg7CqF2VhuNvHdyX1ZZEdqBV7"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e","urls":["bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48","dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/POAMiddleware.sol","id":79423,"exportedSymbols":{"Gear":[84058],"IMiddleware":[74131],"IPOAMiddleware":[74411],"MapWithTimeData":[84346],"OwnableUpgradeable":[42322],"POAMiddleware":[79422],"ReentrancyGuardTransientUpgradeable":[43943],"SlotDerivation":[48965],"StorageSlot":[49089],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:7324:164","nodes":[{"id":78842,"nodeType":"PragmaDirective","src":"74:24:164","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":78844,"nodeType":"ImportDirective","src":"100:101:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":78843,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78846,"nodeType":"ImportDirective","src":"202:140:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":78845,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"215:35:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78848,"nodeType":"ImportDirective","src":"343:88:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":78847,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"351:15:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78850,"nodeType":"ImportDirective","src":"432:80:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":78849,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"440:14:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78852,"nodeType":"ImportDirective","src":"513:74:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":78851,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"521:11:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78854,"nodeType":"ImportDirective","src":"588:48:164","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":78853,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"596:11:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78856,"nodeType":"ImportDirective","src":"637:54:164","nodes":[],"absolutePath":"src/IPOAMiddleware.sol","file":"src/IPOAMiddleware.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":74412,"symbolAliases":[{"foreign":{"id":78855,"name":"IPOAMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74411,"src":"645:14:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78858,"nodeType":"ImportDirective","src":"692:44:164","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":84059,"symbolAliases":[{"foreign":{"id":78857,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"700:4:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78860,"nodeType":"ImportDirective","src":"737:66:164","nodes":[],"absolutePath":"src/libraries/MapWithTimeData.sol","file":"src/libraries/MapWithTimeData.sol","nameLocation":"-1:-1:-1","scope":79423,"sourceUnit":84347,"symbolAliases":[{"foreign":{"id":78859,"name":"MapWithTimeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84346,"src":"745:15:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79422,"nodeType":"ContractDefinition","src":"805:6592:164","nodes":[{"id":78873,"nodeType":"VariableDeclaration","src":"1066:106:164","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1091:12:164","scope":79422,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1066:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830623863353661663663633961643430316164323235626665393664663737663330343962613137656164616331636239356565383964663165363964313030","id":78872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:66:164","typeDescriptions":{"typeIdentifier":"t_rational_5223398203118087324979291777783578297303922957705888423515209926851254931712_by_1","typeString":"int_const 5223...(68 digits omitted)...1712"},"value":"0x0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100"},"visibility":"private"},{"id":78876,"nodeType":"VariableDeclaration","src":"1289:110:164","nodes":[],"constant":true,"mutability":"constant","name":"POA_SLOT_STORAGE","nameLocation":"1314:16:164","scope":79422,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78874,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838343939333932623366626166323931366134313962353431616365346465663737616137303037336535363932383465633961393635333439393466373030","id":78875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1333:66:164","typeDescriptions":{"typeIdentifier":"t_rational_59976018179433309946144826079876057780106175984062073030302583158790876886784_by_1","typeString":"int_const 5997...(69 digits omitted)...6784"},"value":"0x8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f700"},"visibility":"private"},{"id":78884,"nodeType":"FunctionDefinition","src":"1474:53:164","nodes":[],"body":{"id":78883,"nodeType":"Block","src":"1488:39:164","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78880,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"1498:20:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":78881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1498:22:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78882,"nodeType":"ExpressionStatement","src":"1498:22:164"}]},"documentation":{"id":78877,"nodeType":"StructuredDocumentation","src":"1406:63:164","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":78878,"nodeType":"ParameterList","parameters":[],"src":"1485:2:164"},"returnParameters":{"id":78879,"nodeType":"ParameterList","parameters":[],"src":"1488:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":78918,"nodeType":"FunctionDefinition","src":"1533:294:164","nodes":[],"body":{"id":78917,"nodeType":"Block","src":"1601:226:164","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":78893,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78887,"src":"1626:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":78894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1634:5:164","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":73862,"src":"1626:13:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78892,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"1611:14:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":78895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1611:29:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78896,"nodeType":"ExpressionStatement","src":"1611:29:164"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78897,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"1650:31:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":78898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1650:33:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78899,"nodeType":"ExpressionStatement","src":"1650:33:164"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655631","id":78901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1710:33:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""},"value":"middleware.storage.MiddlewareV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""}],"id":78900,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79397,"src":"1694:15:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":78902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1694:50:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78903,"nodeType":"ExpressionStatement","src":"1694:50:164"},{"assignments":[78906],"declarations":[{"constant":false,"id":78906,"mutability":"mutable","name":"$","nameLocation":"1770:1:164","nodeType":"VariableDeclaration","scope":78917,"src":"1754:17:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":78905,"nodeType":"UserDefinedTypeName","pathNode":{"id":78904,"name":"Storage","nameLocations":["1754:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"1754:7:164"},"referencedDeclaration":73928,"src":"1754:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":78909,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78907,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79336,"src":"1774:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":78908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1774:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1754:30:164"},{"expression":{"id":78915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":78910,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78906,"src":"1795:1:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":78912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1797:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"1795:8:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":78913,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78887,"src":"1806:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":78914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1814:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73886,"src":"1806:14:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1795:25:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78916,"nodeType":"ExpressionStatement","src":"1795:25:164"}]},"functionSelector":"ab122753","implemented":true,"kind":"function","modifiers":[{"id":78890,"kind":"modifierInvocation","modifierName":{"id":78889,"name":"initializer","nameLocations":["1589:11:164"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"1589:11:164"},"nodeType":"ModifierInvocation","src":"1589:11:164"}],"name":"initialize","nameLocation":"1542:10:164","parameters":{"id":78888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78887,"mutability":"mutable","name":"_params","nameLocation":"1573:7:164","nodeType":"VariableDeclaration","scope":78918,"src":"1553:27:164","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams"},"typeName":{"id":78886,"nodeType":"UserDefinedTypeName","pathNode":{"id":78885,"name":"InitParams","nameLocations":["1553:10:164"],"nodeType":"IdentifierPath","referencedDeclaration":73890,"src":"1553:10:164"},"referencedDeclaration":73890,"src":"1553:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_storage_ptr","typeString":"struct IMiddleware.InitParams"}},"visibility":"internal"}],"src":"1552:29:164"},"returnParameters":{"id":78891,"nodeType":"ParameterList","parameters":[],"src":"1601:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":78960,"nodeType":"FunctionDefinition","src":"1900:373:164","nodes":[],"body":{"id":78959,"nodeType":"Block","src":"1958:315:164","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":78928,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"1983:5:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":78929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:7:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78927,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"1968:14:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":78930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1968:23:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78931,"nodeType":"ExpressionStatement","src":"1968:23:164"},{"assignments":[78934],"declarations":[{"constant":false,"id":78934,"mutability":"mutable","name":"oldStorage","nameLocation":"2018:10:164","nodeType":"VariableDeclaration","scope":78959,"src":"2002:26:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":78933,"nodeType":"UserDefinedTypeName","pathNode":{"id":78932,"name":"Storage","nameLocations":["2002:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"2002:7:164"},"referencedDeclaration":73928,"src":"2002:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":78937,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78935,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79336,"src":"2031:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":78936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2031:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2002:39:164"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655632","id":78939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2068:33:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""},"value":"middleware.storage.MiddlewareV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""}],"id":78938,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79397,"src":"2052:15:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":78940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2052:50:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78941,"nodeType":"ExpressionStatement","src":"2052:50:164"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e504f414d6964646c65776172655632","id":78943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2131:36:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c6fd4a0a56578ebf1cead5052a047902e5402f8b08ce672c016695bc7cf8701","typeString":"literal_string \"middleware.storage.POAMiddlewareV2\""},"value":"middleware.storage.POAMiddlewareV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0c6fd4a0a56578ebf1cead5052a047902e5402f8b08ce672c016695bc7cf8701","typeString":"literal_string \"middleware.storage.POAMiddlewareV2\""}],"id":78942,"name":"_setPoaStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79421,"src":"2112:18:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":78944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2112:56:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78945,"nodeType":"ExpressionStatement","src":"2112:56:164"},{"assignments":[78948],"declarations":[{"constant":false,"id":78948,"mutability":"mutable","name":"newStorage","nameLocation":"2195:10:164","nodeType":"VariableDeclaration","scope":78959,"src":"2179:26:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":78947,"nodeType":"UserDefinedTypeName","pathNode":{"id":78946,"name":"Storage","nameLocations":["2179:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"2179:7:164"},"referencedDeclaration":73928,"src":"2179:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":78951,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78949,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79336,"src":"2208:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":78950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2208:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2179:39:164"},{"expression":{"id":78957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":78952,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78948,"src":"2229:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":78954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2240:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"2229:17:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":78955,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78934,"src":"2249:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":78956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"2249:17:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2229:37:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78958,"nodeType":"ExpressionStatement","src":"2229:37:164"}]},"documentation":{"id":78919,"nodeType":"StructuredDocumentation","src":"1833:62:164","text":" @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":78922,"kind":"modifierInvocation","modifierName":{"id":78921,"name":"onlyOwner","nameLocations":["1931:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"1931:9:164"},"nodeType":"ModifierInvocation","src":"1931:9:164"},{"arguments":[{"hexValue":"32","id":78924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1955:1:164","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":78925,"kind":"modifierInvocation","modifierName":{"id":78923,"name":"reinitializer","nameLocations":["1941:13:164"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"1941:13:164"},"nodeType":"ModifierInvocation","src":"1941:16:164"}],"name":"reinitialize","nameLocation":"1909:12:164","parameters":{"id":78920,"nodeType":"ParameterList","parameters":[],"src":"1921:2:164"},"returnParameters":{"id":78926,"nodeType":"ParameterList","parameters":[],"src":"1958:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":78970,"nodeType":"FunctionDefinition","src":"2438:84:164","nodes":[],"body":{"id":78969,"nodeType":"Block","src":"2520:2:164","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":78961,"nodeType":"StructuredDocumentation","src":"2279:154:164","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":78967,"kind":"modifierInvocation","modifierName":{"id":78966,"name":"onlyOwner","nameLocations":["2510:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2510:9:164"},"nodeType":"ModifierInvocation","src":"2510:9:164"}],"name":"_authorizeUpgrade","nameLocation":"2447:17:164","overrides":{"id":78965,"nodeType":"OverrideSpecifier","overrides":[],"src":"2501:8:164"},"parameters":{"id":78964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78963,"mutability":"mutable","name":"newImplementation","nameLocation":"2473:17:164","nodeType":"VariableDeclaration","scope":78970,"src":"2465:25:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78962,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:27:164"},"returnParameters":{"id":78968,"nodeType":"ParameterList","parameters":[],"src":"2520:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":78986,"nodeType":"FunctionDefinition","src":"2653:124:164","nodes":[],"body":{"id":78985,"nodeType":"Block","src":"2724:53:164","nodes":[],"statements":[{"expression":{"id":78983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78979,"name":"_poaStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79349,"src":"2734:11:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_POAStorage_$74403_storage_ptr_$","typeString":"function () view returns (struct IPOAMiddleware.POAStorage storage pointer)"}},"id":78980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2734:13:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage storage pointer"}},"id":78981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2748:9:164","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":74402,"src":"2734:23:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78982,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78974,"src":"2760:10:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2734:36:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":78984,"nodeType":"ExpressionStatement","src":"2734:36:164"}]},"baseFunctions":[74410],"documentation":{"id":78971,"nodeType":"StructuredDocumentation","src":"2528:120:164","text":" @dev Sets validators for POA middleware.\n @param validators The addresses of validators to set."},"functionSelector":"9300c926","implemented":true,"kind":"function","modifiers":[{"id":78977,"kind":"modifierInvocation","modifierName":{"id":78976,"name":"onlyOwner","nameLocations":["2714:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2714:9:164"},"nodeType":"ModifierInvocation","src":"2714:9:164"}],"name":"setValidators","nameLocation":"2662:13:164","parameters":{"id":78975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78974,"mutability":"mutable","name":"validators","nameLocation":"2693:10:164","nodeType":"VariableDeclaration","scope":78986,"src":"2676:27:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":78972,"name":"address","nodeType":"ElementaryTypeName","src":"2676:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78973,"nodeType":"ArrayTypeName","src":"2676:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2675:29:164"},"returnParameters":{"id":78978,"nodeType":"ParameterList","parameters":[],"src":"2724:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":79001,"nodeType":"FunctionDefinition","src":"2783:129:164","nodes":[],"body":{"id":79000,"nodeType":"Block","src":"2865:47:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78996,"name":"_poaStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79349,"src":"2882:11:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_POAStorage_$74403_storage_ptr_$","typeString":"function () view returns (struct IPOAMiddleware.POAStorage storage pointer)"}},"id":78997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2882:13:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage storage pointer"}},"id":78998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2896:9:164","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":74402,"src":"2882:23:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":78995,"id":78999,"nodeType":"Return","src":"2875:30:164"}]},"baseFunctions":[74039],"functionSelector":"6e5c7932","implemented":true,"kind":"function","modifiers":[],"name":"makeElectionAt","nameLocation":"2792:14:164","parameters":{"id":78991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79001,"src":"2807:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":78987,"name":"uint48","nodeType":"ElementaryTypeName","src":"2807:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":78990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79001,"src":"2815:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78989,"name":"uint256","nodeType":"ElementaryTypeName","src":"2815:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2806:17:164"},"returnParameters":{"id":78995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79001,"src":"2847:16:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":78992,"name":"address","nodeType":"ElementaryTypeName","src":"2847:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78993,"nodeType":"ArrayTypeName","src":"2847:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2846:18:164"},"scope":79422,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":79011,"nodeType":"FunctionDefinition","src":"2918:91:164","nodes":[],"body":{"id":79010,"nodeType":"Block","src":"2968:41:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79006,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79336,"src":"2985:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":79007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2985:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":79008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2996:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"2985:17:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79005,"id":79009,"nodeType":"Return","src":"2978:24:164"}]},"baseFunctions":[74012],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2927:6:164","parameters":{"id":79002,"nodeType":"ParameterList","parameters":[],"src":"2933:2:164"},"returnParameters":{"id":79005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79011,"src":"2959:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79003,"name":"address","nodeType":"ElementaryTypeName","src":"2959:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2958:9:164"},"scope":79422,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":79021,"nodeType":"FunctionDefinition","src":"3168:94:164","nodes":[],"body":{"id":79020,"nodeType":"Block","src":"3220:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3237:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79016,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3230:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3230:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79019,"nodeType":"ExpressionStatement","src":"3230:25:164"}]},"baseFunctions":[73952],"functionSelector":"4455a38f","implemented":true,"kind":"function","modifiers":[],"name":"eraDuration","nameLocation":"3177:11:164","parameters":{"id":79012,"nodeType":"ParameterList","parameters":[],"src":"3188:2:164"},"returnParameters":{"id":79015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79021,"src":"3212:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79013,"name":"uint48","nodeType":"ElementaryTypeName","src":"3212:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3211:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79031,"nodeType":"FunctionDefinition","src":"3268:104:164","nodes":[],"body":{"id":79030,"nodeType":"Block","src":"3330:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3347:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79026,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3340:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3340:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79029,"nodeType":"ExpressionStatement","src":"3340:25:164"}]},"baseFunctions":[73957],"functionSelector":"945cf2dd","implemented":true,"kind":"function","modifiers":[],"name":"minVaultEpochDuration","nameLocation":"3277:21:164","parameters":{"id":79022,"nodeType":"ParameterList","parameters":[],"src":"3298:2:164"},"returnParameters":{"id":79025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79024,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79031,"src":"3322:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79023,"name":"uint48","nodeType":"ElementaryTypeName","src":"3322:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3321:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79041,"nodeType":"FunctionDefinition","src":"3378:102:164","nodes":[],"body":{"id":79040,"nodeType":"Block","src":"3438:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3455:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79036,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3448:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79039,"nodeType":"ExpressionStatement","src":"3448:25:164"}]},"baseFunctions":[73962],"functionSelector":"709d06ae","implemented":true,"kind":"function","modifiers":[],"name":"operatorGracePeriod","nameLocation":"3387:19:164","parameters":{"id":79032,"nodeType":"ParameterList","parameters":[],"src":"3406:2:164"},"returnParameters":{"id":79035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79041,"src":"3430:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79033,"name":"uint48","nodeType":"ElementaryTypeName","src":"3430:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3429:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79051,"nodeType":"FunctionDefinition","src":"3486:99:164","nodes":[],"body":{"id":79050,"nodeType":"Block","src":"3543:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3560:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79046,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3553:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3553:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79049,"nodeType":"ExpressionStatement","src":"3553:25:164"}]},"baseFunctions":[73967],"functionSelector":"79a8b245","implemented":true,"kind":"function","modifiers":[],"name":"vaultGracePeriod","nameLocation":"3495:16:164","parameters":{"id":79042,"nodeType":"ParameterList","parameters":[],"src":"3511:2:164"},"returnParameters":{"id":79045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79051,"src":"3535:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79043,"name":"uint48","nodeType":"ElementaryTypeName","src":"3535:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3534:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79061,"nodeType":"FunctionDefinition","src":"3591:98:164","nodes":[],"body":{"id":79060,"nodeType":"Block","src":"3647:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3664:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79056,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3657:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79059,"nodeType":"ExpressionStatement","src":"3657:25:164"}]},"baseFunctions":[73972],"functionSelector":"461e7a8e","implemented":true,"kind":"function","modifiers":[],"name":"minVetoDuration","nameLocation":"3600:15:164","parameters":{"id":79052,"nodeType":"ParameterList","parameters":[],"src":"3615:2:164"},"returnParameters":{"id":79055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79061,"src":"3639:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79053,"name":"uint48","nodeType":"ElementaryTypeName","src":"3639:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3638:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79071,"nodeType":"FunctionDefinition","src":"3695:105:164","nodes":[],"body":{"id":79070,"nodeType":"Block","src":"3758:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3775:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79066,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3768:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3768:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79069,"nodeType":"ExpressionStatement","src":"3768:25:164"}]},"baseFunctions":[73977],"functionSelector":"373bba1f","implemented":true,"kind":"function","modifiers":[],"name":"minSlashExecutionDelay","nameLocation":"3704:22:164","parameters":{"id":79062,"nodeType":"ParameterList","parameters":[],"src":"3726:2:164"},"returnParameters":{"id":79065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79071,"src":"3750:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79063,"name":"uint48","nodeType":"ElementaryTypeName","src":"3750:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3749:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79081,"nodeType":"FunctionDefinition","src":"3806:109:164","nodes":[],"body":{"id":79080,"nodeType":"Block","src":"3873:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3890:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79076,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3883:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3883:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79079,"nodeType":"ExpressionStatement","src":"3883:25:164"}]},"baseFunctions":[73982],"functionSelector":"9e032311","implemented":true,"kind":"function","modifiers":[],"name":"maxResolverSetEpochsDelay","nameLocation":"3815:25:164","parameters":{"id":79072,"nodeType":"ParameterList","parameters":[],"src":"3840:2:164"},"returnParameters":{"id":79075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79081,"src":"3864:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79073,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3863:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79091,"nodeType":"FunctionDefinition","src":"3921:106:164","nodes":[],"body":{"id":79090,"nodeType":"Block","src":"3985:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4002:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79086,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3995:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3995:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79089,"nodeType":"ExpressionStatement","src":"3995:25:164"}]},"baseFunctions":[73987],"functionSelector":"c9b0b1e9","implemented":true,"kind":"function","modifiers":[],"name":"allowedVaultImplVersion","nameLocation":"3930:23:164","parameters":{"id":79082,"nodeType":"ParameterList","parameters":[],"src":"3953:2:164"},"returnParameters":{"id":79085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79084,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79091,"src":"3977:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":79083,"name":"uint64","nodeType":"ElementaryTypeName","src":"3977:6:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3976:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79101,"nodeType":"FunctionDefinition","src":"4033:102:164","nodes":[],"body":{"id":79100,"nodeType":"Block","src":"4093:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4110:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79096,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4103:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79099,"nodeType":"ExpressionStatement","src":"4103:25:164"}]},"baseFunctions":[73992],"functionSelector":"d55a5bdf","implemented":true,"kind":"function","modifiers":[],"name":"vetoSlasherImplType","nameLocation":"4042:19:164","parameters":{"id":79092,"nodeType":"ParameterList","parameters":[],"src":"4061:2:164"},"returnParameters":{"id":79095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79094,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79101,"src":"4085:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":79093,"name":"uint64","nodeType":"ElementaryTypeName","src":"4085:6:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4084:8:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79111,"nodeType":"FunctionDefinition","src":"4141:94:164","nodes":[],"body":{"id":79110,"nodeType":"Block","src":"4193:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4210:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79106,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4203:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4203:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79109,"nodeType":"ExpressionStatement","src":"4203:25:164"}]},"baseFunctions":[73997],"functionSelector":"d8dfeb45","implemented":true,"kind":"function","modifiers":[],"name":"collateral","nameLocation":"4150:10:164","parameters":{"id":79102,"nodeType":"ParameterList","parameters":[],"src":"4160:2:164"},"returnParameters":{"id":79105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79111,"src":"4184:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79103,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4183:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79121,"nodeType":"FunctionDefinition","src":"4241:94:164","nodes":[],"body":{"id":79120,"nodeType":"Block","src":"4293:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4310:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79116,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4303:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4303:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79119,"nodeType":"ExpressionStatement","src":"4303:25:164"}]},"baseFunctions":[74002],"functionSelector":"ceebb69a","implemented":true,"kind":"function","modifiers":[],"name":"subnetwork","nameLocation":"4250:10:164","parameters":{"id":79112,"nodeType":"ParameterList","parameters":[],"src":"4260:2:164"},"returnParameters":{"id":79115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79121,"src":"4284:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79113,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4284:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4283:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79131,"nodeType":"FunctionDefinition","src":"4341:95:164","nodes":[],"body":{"id":79130,"nodeType":"Block","src":"4394:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4411:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79126,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4404:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4404:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79129,"nodeType":"ExpressionStatement","src":"4404:25:164"}]},"baseFunctions":[74007],"functionSelector":"c639e2d6","implemented":true,"kind":"function","modifiers":[],"name":"maxAdminFee","nameLocation":"4350:11:164","parameters":{"id":79122,"nodeType":"ParameterList","parameters":[],"src":"4361:2:164"},"returnParameters":{"id":79125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79131,"src":"4385:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79123,"name":"uint256","nodeType":"ElementaryTypeName","src":"4385:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4384:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79142,"nodeType":"FunctionDefinition","src":"4442:125:164","nodes":[],"body":{"id":79141,"nodeType":"Block","src":"4525:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4542:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79137,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4535:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4535:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79140,"nodeType":"ExpressionStatement","src":"4535:25:164"}]},"baseFunctions":[74018],"functionSelector":"bcf33934","implemented":true,"kind":"function","modifiers":[],"name":"symbioticContracts","nameLocation":"4451:18:164","parameters":{"id":79132,"nodeType":"ParameterList","parameters":[],"src":"4469:2:164"},"returnParameters":{"id":79136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79142,"src":"4493:30:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_memory_ptr","typeString":"struct Gear.SymbioticContracts"},"typeName":{"id":79134,"nodeType":"UserDefinedTypeName","pathNode":{"id":79133,"name":"Gear.SymbioticContracts","nameLocations":["4493:4:164","4498:18:164"],"nodeType":"IdentifierPath","referencedDeclaration":83195,"src":"4493:23:164"},"referencedDeclaration":83195,"src":"4493:23:164","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$83195_storage_ptr","typeString":"struct Gear.SymbioticContracts"}},"visibility":"internal"}],"src":"4492:32:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79150,"nodeType":"FunctionDefinition","src":"4573:81:164","nodes":[],"body":{"id":79149,"nodeType":"Block","src":"4612:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4629:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79145,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4622:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4622:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79148,"nodeType":"ExpressionStatement","src":"4622:25:164"}]},"baseFunctions":[74071],"functionSelector":"d99fcd66","implemented":true,"kind":"function","modifiers":[],"name":"disableOperator","nameLocation":"4582:15:164","parameters":{"id":79143,"nodeType":"ParameterList","parameters":[],"src":"4597:2:164"},"returnParameters":{"id":79144,"nodeType":"ParameterList","parameters":[],"src":"4612:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79158,"nodeType":"FunctionDefinition","src":"4660:80:164","nodes":[],"body":{"id":79157,"nodeType":"Block","src":"4698:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4715:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79153,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4708:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4708:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79156,"nodeType":"ExpressionStatement","src":"4708:25:164"}]},"baseFunctions":[74075],"functionSelector":"3d15e74e","implemented":true,"kind":"function","modifiers":[],"name":"enableOperator","nameLocation":"4669:14:164","parameters":{"id":79151,"nodeType":"ParameterList","parameters":[],"src":"4683:2:164"},"returnParameters":{"id":79152,"nodeType":"ParameterList","parameters":[],"src":"4698:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79168,"nodeType":"FunctionDefinition","src":"4746:93:164","nodes":[],"body":{"id":79167,"nodeType":"Block","src":"4797:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4814:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79163,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4807:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79166,"nodeType":"ExpressionStatement","src":"4807:25:164"}]},"baseFunctions":[74023],"functionSelector":"6d1064eb","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashRequester","nameLocation":"4755:20:164","parameters":{"id":79161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79168,"src":"4776:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79159,"name":"address","nodeType":"ElementaryTypeName","src":"4776:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4775:9:164"},"returnParameters":{"id":79162,"nodeType":"ParameterList","parameters":[],"src":"4797:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79178,"nodeType":"FunctionDefinition","src":"4845:92:164","nodes":[],"body":{"id":79177,"nodeType":"Block","src":"4895:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4912:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79173,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4905:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4905:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79176,"nodeType":"ExpressionStatement","src":"4905:25:164"}]},"baseFunctions":[74028],"functionSelector":"86c241a1","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashExecutor","nameLocation":"4854:19:164","parameters":{"id":79171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79178,"src":"4874:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79169,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4873:9:164"},"returnParameters":{"id":79172,"nodeType":"ParameterList","parameters":[],"src":"4895:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79186,"nodeType":"FunctionDefinition","src":"4943:82:164","nodes":[],"body":{"id":79185,"nodeType":"Block","src":"4983:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5000:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79181,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4993:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79184,"nodeType":"ExpressionStatement","src":"4993:25:164"}]},"baseFunctions":[74067],"functionSelector":"2acde098","implemented":true,"kind":"function","modifiers":[],"name":"registerOperator","nameLocation":"4952:16:164","parameters":{"id":79179,"nodeType":"ParameterList","parameters":[],"src":"4968:2:164"},"returnParameters":{"id":79180,"nodeType":"ParameterList","parameters":[],"src":"4983:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79196,"nodeType":"FunctionDefinition","src":"5031:91:164","nodes":[],"body":{"id":79195,"nodeType":"Block","src":"5080:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5097:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79191,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5090:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5090:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79194,"nodeType":"ExpressionStatement","src":"5090:25:164"}]},"baseFunctions":[74081],"functionSelector":"96115bc2","implemented":true,"kind":"function","modifiers":[],"name":"unregisterOperator","nameLocation":"5040:18:164","parameters":{"id":79189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79188,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79196,"src":"5059:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79187,"name":"address","nodeType":"ElementaryTypeName","src":"5059:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5058:9:164"},"returnParameters":{"id":79190,"nodeType":"ParameterList","parameters":[],"src":"5080:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79212,"nodeType":"FunctionDefinition","src":"5128:134:164","nodes":[],"body":{"id":79211,"nodeType":"Block","src":"5220:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5237:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79207,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5230:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79210,"nodeType":"ExpressionStatement","src":"5230:25:164"}]},"baseFunctions":[74119],"functionSelector":"729e2f36","implemented":true,"kind":"function","modifiers":[],"name":"distributeOperatorRewards","nameLocation":"5137:25:164","parameters":{"id":79203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79212,"src":"5163:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79197,"name":"address","nodeType":"ElementaryTypeName","src":"5163:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79200,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79212,"src":"5172:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79199,"name":"uint256","nodeType":"ElementaryTypeName","src":"5172:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79202,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79212,"src":"5181:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79201,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5181:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5162:27:164"},"returnParameters":{"id":79206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79205,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79212,"src":"5211:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5211:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5210:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79227,"nodeType":"FunctionDefinition","src":"5268:150:164","nodes":[],"body":{"id":79226,"nodeType":"Block","src":"5376:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5393:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79222,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5386:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5386:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79225,"nodeType":"ExpressionStatement","src":"5386:25:164"}]},"baseFunctions":[74130],"functionSelector":"7fbe95b5","implemented":true,"kind":"function","modifiers":[],"name":"distributeStakerRewards","nameLocation":"5277:23:164","parameters":{"id":79218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79215,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79227,"src":"5301:35:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":79214,"nodeType":"UserDefinedTypeName","pathNode":{"id":79213,"name":"Gear.StakerRewardsCommitment","nameLocations":["5301:4:164","5306:23:164"],"nodeType":"IdentifierPath","referencedDeclaration":83012,"src":"5301:28:164"},"referencedDeclaration":83012,"src":"5301:28:164","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":79217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79227,"src":"5338:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79216,"name":"uint48","nodeType":"ElementaryTypeName","src":"5338:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5300:45:164"},"returnParameters":{"id":79221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79227,"src":"5367:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79219,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5367:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5366:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79239,"nodeType":"FunctionDefinition","src":"5424:95:164","nodes":[],"body":{"id":79238,"nodeType":"Block","src":"5477:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5494:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79234,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5487:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79237,"nodeType":"ExpressionStatement","src":"5487:25:164"}]},"baseFunctions":[74089],"functionSelector":"05c4fdf9","implemented":true,"kind":"function","modifiers":[],"name":"registerVault","nameLocation":"5433:13:164","parameters":{"id":79232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79229,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79239,"src":"5447:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79228,"name":"address","nodeType":"ElementaryTypeName","src":"5447:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79231,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79239,"src":"5456:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79230,"name":"address","nodeType":"ElementaryTypeName","src":"5456:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5446:18:164"},"returnParameters":{"id":79233,"nodeType":"ParameterList","parameters":[],"src":"5477:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79249,"nodeType":"FunctionDefinition","src":"5525:85:164","nodes":[],"body":{"id":79248,"nodeType":"Block","src":"5568:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5585:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79244,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5578:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5578:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79247,"nodeType":"ExpressionStatement","src":"5578:25:164"}]},"baseFunctions":[74101],"functionSelector":"3ccce789","implemented":true,"kind":"function","modifiers":[],"name":"disableVault","nameLocation":"5534:12:164","parameters":{"id":79242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79241,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79249,"src":"5547:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79240,"name":"address","nodeType":"ElementaryTypeName","src":"5547:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5546:9:164"},"returnParameters":{"id":79243,"nodeType":"ParameterList","parameters":[],"src":"5568:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79259,"nodeType":"FunctionDefinition","src":"5616:84:164","nodes":[],"body":{"id":79258,"nodeType":"Block","src":"5658:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5675:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79254,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5668:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5668:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79257,"nodeType":"ExpressionStatement","src":"5668:25:164"}]},"baseFunctions":[74107],"functionSelector":"936f4330","implemented":true,"kind":"function","modifiers":[],"name":"enableVault","nameLocation":"5625:11:164","parameters":{"id":79252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79259,"src":"5637:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79250,"name":"address","nodeType":"ElementaryTypeName","src":"5637:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5636:9:164"},"returnParameters":{"id":79253,"nodeType":"ParameterList","parameters":[],"src":"5658:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79269,"nodeType":"FunctionDefinition","src":"5706:88:164","nodes":[],"body":{"id":79268,"nodeType":"Block","src":"5752:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5769:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79264,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5762:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5762:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79267,"nodeType":"ExpressionStatement","src":"5762:25:164"}]},"baseFunctions":[74095],"functionSelector":"2633b70f","implemented":true,"kind":"function","modifiers":[],"name":"unregisterVault","nameLocation":"5715:15:164","parameters":{"id":79262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79269,"src":"5731:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79260,"name":"address","nodeType":"ElementaryTypeName","src":"5731:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5730:9:164"},"returnParameters":{"id":79263,"nodeType":"ParameterList","parameters":[],"src":"5752:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79283,"nodeType":"FunctionDefinition","src":"5800:117:164","nodes":[],"body":{"id":79282,"nodeType":"Block","src":"5875:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5892:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79278,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5885:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79281,"nodeType":"ExpressionStatement","src":"5885:25:164"}]},"baseFunctions":[74049],"functionSelector":"d99ddfc7","implemented":true,"kind":"function","modifiers":[],"name":"getOperatorStakeAt","nameLocation":"5809:18:164","parameters":{"id":79274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79283,"src":"5828:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79270,"name":"address","nodeType":"ElementaryTypeName","src":"5828:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79273,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79283,"src":"5837:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79272,"name":"uint48","nodeType":"ElementaryTypeName","src":"5837:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5827:17:164"},"returnParameters":{"id":79277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79283,"src":"5866:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79275,"name":"uint256","nodeType":"ElementaryTypeName","src":"5866:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5865:9:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79299,"nodeType":"FunctionDefinition","src":"5923:142:164","nodes":[],"body":{"id":79298,"nodeType":"Block","src":"6023:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6040:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79294,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6033:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6033:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79297,"nodeType":"ExpressionStatement","src":"6033:25:164"}]},"functionSelector":"b5e5ad12","implemented":true,"kind":"function","modifiers":[],"name":"getActiveOperatorsStakeAt","nameLocation":"5932:25:164","parameters":{"id":79286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79299,"src":"5958:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79284,"name":"uint48","nodeType":"ElementaryTypeName","src":"5958:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5957:8:164"},"returnParameters":{"id":79293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79299,"src":"5987:16:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79287,"name":"address","nodeType":"ElementaryTypeName","src":"5987:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79288,"nodeType":"ArrayTypeName","src":"5987:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":79292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79299,"src":"6005:16:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":79290,"name":"uint256","nodeType":"ElementaryTypeName","src":"6005:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79291,"nodeType":"ArrayTypeName","src":"6005:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5986:36:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79311,"nodeType":"FunctionDefinition","src":"6071:98:164","nodes":[],"body":{"id":79310,"nodeType":"Block","src":"6127:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6144:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79306,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6137:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6137:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79309,"nodeType":"ExpressionStatement","src":"6137:25:164"}]},"baseFunctions":[74056],"functionSelector":"0a71094c","implemented":true,"kind":"function","modifiers":[],"name":"requestSlash","nameLocation":"6080:12:164","parameters":{"id":79304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79311,"src":"6093:20:164","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData[]"},"typeName":{"baseType":{"id":79301,"nodeType":"UserDefinedTypeName","pathNode":{"id":79300,"name":"SlashData","nameLocations":["6093:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":73942,"src":"6093:9:164"},"referencedDeclaration":73942,"src":"6093:9:164","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_storage_ptr","typeString":"struct IMiddleware.SlashData"}},"id":79302,"nodeType":"ArrayTypeName","src":"6093:11:164","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashData[]"}},"visibility":"internal"}],"src":"6092:22:164"},"returnParameters":{"id":79305,"nodeType":"ParameterList","parameters":[],"src":"6127:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79323,"nodeType":"FunctionDefinition","src":"6175:104:164","nodes":[],"body":{"id":79322,"nodeType":"Block","src":"6237:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6254:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79318,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6247:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6247:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79321,"nodeType":"ExpressionStatement","src":"6247:25:164"}]},"baseFunctions":[74063],"functionSelector":"af962995","implemented":true,"kind":"function","modifiers":[],"name":"executeSlash","nameLocation":"6184:12:164","parameters":{"id":79316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79323,"src":"6197:26:164","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"},"typeName":{"baseType":{"id":79313,"nodeType":"UserDefinedTypeName","pathNode":{"id":79312,"name":"SlashIdentifier","nameLocations":["6197:15:164"],"nodeType":"IdentifierPath","referencedDeclaration":73947,"src":"6197:15:164"},"referencedDeclaration":73947,"src":"6197:15:164","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier"}},"id":79314,"nodeType":"ArrayTypeName","src":"6197:17:164","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"}},"visibility":"internal"}],"src":"6196:28:164"},"returnParameters":{"id":79317,"nodeType":"ParameterList","parameters":[],"src":"6237:0:164"},"scope":79422,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79336,"nodeType":"FunctionDefinition","src":"6285:201:164","nodes":[],"body":{"id":79335,"nodeType":"Block","src":"6355:131:164","nodes":[],"statements":[{"assignments":[79330],"declarations":[{"constant":false,"id":79330,"mutability":"mutable","name":"slot","nameLocation":"6373:4:164","nodeType":"VariableDeclaration","scope":79335,"src":"6365:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6365:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79333,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79331,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79361,"src":"6380:15:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":79332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6380:17:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6365:32:164"},{"AST":{"nativeSrc":"6433:47:164","nodeType":"YulBlock","src":"6433:47:164","statements":[{"nativeSrc":"6447:23:164","nodeType":"YulAssignment","src":"6447:23:164","value":{"name":"slot","nativeSrc":"6466:4:164","nodeType":"YulIdentifier","src":"6466:4:164"},"variableNames":[{"name":"middleware.slot","nativeSrc":"6447:15:164","nodeType":"YulIdentifier","src":"6447:15:164"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":79327,"isOffset":false,"isSlot":true,"src":"6447:15:164","suffix":"slot","valueSize":1},{"declaration":79330,"isOffset":false,"isSlot":false,"src":"6466:4:164","valueSize":1}],"flags":["memory-safe"],"id":79334,"nodeType":"InlineAssembly","src":"6408:72:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_storage","nameLocation":"6294:8:164","parameters":{"id":79324,"nodeType":"ParameterList","parameters":[],"src":"6302:2:164"},"returnParameters":{"id":79328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79327,"mutability":"mutable","name":"middleware","nameLocation":"6343:10:164","nodeType":"VariableDeclaration","scope":79336,"src":"6327:26:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":79326,"nodeType":"UserDefinedTypeName","pathNode":{"id":79325,"name":"Storage","nameLocations":["6327:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"6327:7:164"},"referencedDeclaration":73928,"src":"6327:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"src":"6326:28:164"},"scope":79422,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79349,"nodeType":"FunctionDefinition","src":"6492:209:164","nodes":[],"body":{"id":79348,"nodeType":"Block","src":"6568:133:164","nodes":[],"statements":[{"assignments":[79343],"declarations":[{"constant":false,"id":79343,"mutability":"mutable","name":"slot","nameLocation":"6586:4:164","nodeType":"VariableDeclaration","scope":79348,"src":"6578:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6578:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79346,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79344,"name":"_getPoaStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79373,"src":"6593:18:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":79345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6593:20:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6578:35:164"},{"AST":{"nativeSrc":"6648:47:164","nodeType":"YulBlock","src":"6648:47:164","statements":[{"nativeSrc":"6662:23:164","nodeType":"YulAssignment","src":"6662:23:164","value":{"name":"slot","nativeSrc":"6681:4:164","nodeType":"YulIdentifier","src":"6681:4:164"},"variableNames":[{"name":"poaStorage.slot","nativeSrc":"6662:15:164","nodeType":"YulIdentifier","src":"6662:15:164"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":79340,"isOffset":false,"isSlot":true,"src":"6662:15:164","suffix":"slot","valueSize":1},{"declaration":79343,"isOffset":false,"isSlot":false,"src":"6681:4:164","valueSize":1}],"flags":["memory-safe"],"id":79347,"nodeType":"InlineAssembly","src":"6623:72:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_poaStorage","nameLocation":"6501:11:164","parameters":{"id":79337,"nodeType":"ParameterList","parameters":[],"src":"6512:2:164"},"returnParameters":{"id":79341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79340,"mutability":"mutable","name":"poaStorage","nameLocation":"6556:10:164","nodeType":"VariableDeclaration","scope":79349,"src":"6537:29:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage"},"typeName":{"id":79339,"nodeType":"UserDefinedTypeName","pathNode":{"id":79338,"name":"POAStorage","nameLocations":["6537:10:164"],"nodeType":"IdentifierPath","referencedDeclaration":74403,"src":"6537:10:164"},"referencedDeclaration":74403,"src":"6537:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage"}},"visibility":"internal"}],"src":"6536:31:164"},"scope":79422,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79361,"nodeType":"FunctionDefinition","src":"6707:128:164","nodes":[],"body":{"id":79360,"nodeType":"Block","src":"6765:70:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":79356,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78873,"src":"6809:12:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79354,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"6782:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6794:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"6782:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6782:40:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6823:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"6782:46:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79353,"id":79359,"nodeType":"Return","src":"6775:53:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"6716:15:164","parameters":{"id":79350,"nodeType":"ParameterList","parameters":[],"src":"6731:2:164"},"returnParameters":{"id":79353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79361,"src":"6756:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6756:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6755:9:164"},"scope":79422,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79373,"nodeType":"FunctionDefinition","src":"6841:135:164","nodes":[],"body":{"id":79372,"nodeType":"Block","src":"6902:74:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":79368,"name":"POA_SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78876,"src":"6946:16:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79366,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"6919:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6931:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"6919:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:44:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6964:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"6919:50:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79365,"id":79371,"nodeType":"Return","src":"6912:57:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getPoaStorageSlot","nameLocation":"6850:18:164","parameters":{"id":79362,"nodeType":"ParameterList","parameters":[],"src":"6868:2:164"},"returnParameters":{"id":79365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79373,"src":"6893:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6893:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6892:9:164"},"scope":79422,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79397,"nodeType":"FunctionDefinition","src":"6982:200:164","nodes":[],"body":{"id":79396,"nodeType":"Block","src":"7050:132:164","nodes":[],"statements":[{"assignments":[79381],"declarations":[{"constant":false,"id":79381,"mutability":"mutable","name":"slot","nameLocation":"7068:4:164","nodeType":"VariableDeclaration","scope":79396,"src":"7060:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7060:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79386,"initialValue":{"arguments":[{"id":79384,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79375,"src":"7102:9:164","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":79382,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"7075:14:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":79383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7090:11:164","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"7075:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":79385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7075:37:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7060:52:164"},{"expression":{"id":79394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":79390,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78873,"src":"7149:12:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79387,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"7122:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7134:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"7122:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7122:40:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7163:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"7122:46:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":79393,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79381,"src":"7171:4:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7122:53:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":79395,"nodeType":"ExpressionStatement","src":"7122:53:164"}]},"implemented":true,"kind":"function","modifiers":[{"id":79378,"kind":"modifierInvocation","modifierName":{"id":79377,"name":"onlyOwner","nameLocations":["7040:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"7040:9:164"},"nodeType":"ModifierInvocation","src":"7040:9:164"}],"name":"_setStorageSlot","nameLocation":"6991:15:164","parameters":{"id":79376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79375,"mutability":"mutable","name":"namespace","nameLocation":"7021:9:164","nodeType":"VariableDeclaration","scope":79397,"src":"7007:23:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79374,"name":"string","nodeType":"ElementaryTypeName","src":"7007:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7006:25:164"},"returnParameters":{"id":79379,"nodeType":"ParameterList","parameters":[],"src":"7050:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":79421,"nodeType":"FunctionDefinition","src":"7188:207:164","nodes":[],"body":{"id":79420,"nodeType":"Block","src":"7259:136:164","nodes":[],"statements":[{"assignments":[79405],"declarations":[{"constant":false,"id":79405,"mutability":"mutable","name":"slot","nameLocation":"7277:4:164","nodeType":"VariableDeclaration","scope":79420,"src":"7269:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79404,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7269:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79410,"initialValue":{"arguments":[{"id":79408,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79399,"src":"7311:9:164","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":79406,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"7284:14:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":79407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7299:11:164","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"7284:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":79409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7284:37:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7269:52:164"},{"expression":{"id":79418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":79414,"name":"POA_SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78876,"src":"7358:16:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79411,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"7331:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7343:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"7331:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7331:44:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7376:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"7331:50:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":79417,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79405,"src":"7384:4:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7331:57:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":79419,"nodeType":"ExpressionStatement","src":"7331:57:164"}]},"implemented":true,"kind":"function","modifiers":[{"id":79402,"kind":"modifierInvocation","modifierName":{"id":79401,"name":"onlyOwner","nameLocations":["7249:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"7249:9:164"},"nodeType":"ModifierInvocation","src":"7249:9:164"}],"name":"_setPoaStorageSlot","nameLocation":"7197:18:164","parameters":{"id":79400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79399,"mutability":"mutable","name":"namespace","nameLocation":"7230:9:164","nodeType":"VariableDeclaration","scope":79421,"src":"7216:23:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79398,"name":"string","nodeType":"ElementaryTypeName","src":"7216:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7215:25:164"},"returnParameters":{"id":79403,"nodeType":"ParameterList","parameters":[],"src":"7259:0:164"},"scope":79422,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":78861,"name":"IMiddleware","nameLocations":["835:11:164"],"nodeType":"IdentifierPath","referencedDeclaration":74131,"src":"835:11:164"},"id":78862,"nodeType":"InheritanceSpecifier","src":"835:11:164"},{"baseName":{"id":78863,"name":"IPOAMiddleware","nameLocations":["852:14:164"],"nodeType":"IdentifierPath","referencedDeclaration":74411,"src":"852:14:164"},"id":78864,"nodeType":"InheritanceSpecifier","src":"852:14:164"},{"baseName":{"id":78865,"name":"OwnableUpgradeable","nameLocations":["872:18:164"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"872:18:164"},"id":78866,"nodeType":"InheritanceSpecifier","src":"872:18:164"},{"baseName":{"id":78867,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["896:35:164"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"896:35:164"},"id":78868,"nodeType":"InheritanceSpecifier","src":"896:35:164"},{"baseName":{"id":78869,"name":"UUPSUpgradeable","nameLocations":["937:15:164"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"937:15:164"},"id":78870,"nodeType":"InheritanceSpecifier","src":"937:15:164"}],"canonicalName":"POAMiddleware","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[79422,46243,44833,43943,42322,43484,42590,74411,74131],"name":"POAMiddleware","nameLocation":"814:13:164","scope":79423,"usedErrors":[42158,42163,42339,42342,43875,45427,45440,46100,46105,47372,48774,73752,73755,73758,73761,73764,73767,73770,73773,73776,73779,73782,73785,73788,73791,73794,73797,73800,73803,73806,73809,73812,73815,73818,73821,73824,73827,73830,73833,73836,73839,73842,73845,73848,73851,73854,73857,73860],"usedEvents":[42169,42347,44781]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":164} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowedVaultImplVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"changeSlashExecutor","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"changeSlashRequester","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"collateral","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"disableOperator","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"disableVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"distributeOperatorRewards","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"distributeStakerRewards","inputs":[{"name":"","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"enableOperator","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"enableVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"eraDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"executeSlash","inputs":[{"name":"","type":"tuple[]","internalType":"struct IMiddleware.SlashIdentifier[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"getActiveOperatorsStakeAt","inputs":[{"name":"","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"pure"},{"type":"function","name":"getOperatorStakeAt","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint48","internalType":"uint48"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"initialize","inputs":[{"name":"_params","type":"tuple","internalType":"struct IMiddleware.InitParams","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"eraDuration","type":"uint48","internalType":"uint48"},{"name":"minVaultEpochDuration","type":"uint48","internalType":"uint48"},{"name":"operatorGracePeriod","type":"uint48","internalType":"uint48"},{"name":"vaultGracePeriod","type":"uint48","internalType":"uint48"},{"name":"minVetoDuration","type":"uint48","internalType":"uint48"},{"name":"minSlashExecutionDelay","type":"uint48","internalType":"uint48"},{"name":"allowedVaultImplVersion","type":"uint64","internalType":"uint64"},{"name":"vetoSlasherImplType","type":"uint64","internalType":"uint64"},{"name":"maxResolverSetEpochsDelay","type":"uint256","internalType":"uint256"},{"name":"maxAdminFee","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"address","internalType":"address"},{"name":"router","type":"address","internalType":"address"},{"name":"symbiotic","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"makeElectionAt","inputs":[{"name":"","type":"uint48","internalType":"uint48"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"maxAdminFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"maxResolverSetEpochsDelay","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"minSlashExecutionDelay","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"minVaultEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"minVetoDuration","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"operatorGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"registerVault","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestSlash","inputs":[{"name":"","type":"tuple[]","internalType":"struct IMiddleware.SlashData[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"ts","type":"uint48","internalType":"uint48"},{"name":"vaults","type":"tuple[]","internalType":"struct IMiddleware.VaultSlashData[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]}]}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setValidators","inputs":[{"name":"validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"subnetwork","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"symbioticContracts","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.SymbioticContracts","components":[{"name":"vaultRegistry","type":"address","internalType":"address"},{"name":"operatorRegistry","type":"address","internalType":"address"},{"name":"networkRegistry","type":"address","internalType":"address"},{"name":"middlewareService","type":"address","internalType":"address"},{"name":"networkOptIn","type":"address","internalType":"address"},{"name":"stakerRewardsFactory","type":"address","internalType":"address"},{"name":"operatorRewards","type":"address","internalType":"address"},{"name":"roleSlashRequester","type":"address","internalType":"address"},{"name":"roleSlashExecutor","type":"address","internalType":"address"},{"name":"vetoResolver","type":"address","internalType":"address"}]}],"stateMutability":"pure"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"unregisterVault","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"vaultGracePeriod","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"pure"},{"type":"function","name":"vetoSlasherImplType","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"BurnerHookNotSupported","inputs":[]},{"type":"error","name":"DelegatorNotInitialized","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EraDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"IncompatibleSlasherType","inputs":[]},{"type":"error","name":"IncompatibleStakerRewardsVersion","inputs":[]},{"type":"error","name":"IncompatibleVaultVersion","inputs":[]},{"type":"error","name":"IncorrectTimestamp","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidStakerRewardsVault","inputs":[]},{"type":"error","name":"MaxValidatorsMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"MinVaultEpochDurationLessThanTwoEras","inputs":[]},{"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch","inputs":[]},{"type":"error","name":"MinVetoDurationMustBeGreaterThanZero","inputs":[]},{"type":"error","name":"NonFactoryStakerRewards","inputs":[]},{"type":"error","name":"NonFactoryVault","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegisteredOperator","inputs":[]},{"type":"error","name":"NotRegisteredVault","inputs":[]},{"type":"error","name":"NotRouter","inputs":[]},{"type":"error","name":"NotSlashExecutor","inputs":[]},{"type":"error","name":"NotSlashRequester","inputs":[]},{"type":"error","name":"NotVaultOwner","inputs":[]},{"type":"error","name":"OperatorDoesNotExist","inputs":[]},{"type":"error","name":"OperatorDoesNotOptIn","inputs":[]},{"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"OperatorGracePeriodNotPassed","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"ResolverMismatch","inputs":[]},{"type":"error","name":"ResolverSetDelayMustBeAtLeastThree","inputs":[]},{"type":"error","name":"ResolverSetDelayTooLong","inputs":[]},{"type":"error","name":"SlasherNotInitialized","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownCollateral","inputs":[]},{"type":"error","name":"UnsupportedBurner","inputs":[]},{"type":"error","name":"UnsupportedDelegatorHook","inputs":[]},{"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration","inputs":[]},{"type":"error","name":"VaultGracePeriodNotPassed","inputs":[]},{"type":"error","name":"VaultWrongEpochDuration","inputs":[]},{"type":"error","name":"VetoDurationTooLong","inputs":[]},{"type":"error","name":"VetoDurationTooShort","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f51602061125a5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161119390816100c78239608051818181610bdd0152610cac0152f35b6001600160401b0319166001600160401b039081175f51602061125a5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806305c4fdf914610eb65780630a71094c14610e615780632633b70f1461060a5780632acde09814610238578063373bba1f146102385780633ccce7891461060a5780633d15e74e146102385780634455a38f14610238578063461e7a8e146102385780634f1ef28614610c3157806352d1902d14610bcb5780636c2eb350146109f05780636d1064eb1461060a5780636e5c79321461091b578063709d06ae14610238578063715018a6146108b4578063729e2f361461089b57806379a8b245146102385780637fbe95b51461077a57806386c241a11461060a5780638da5cb5b146107465780639300c9261461060f578063936f43301461060a578063945cf2dd1461023857806396115bc21461060a5780639e03231114610238578063ab12275314610405578063ad3cb1cc146103a7578063af96299514610352578063b5e5ad1214610339578063bcf339341461027a578063c639e2d614610238578063c9b0b1e914610238578063ceebb69a14610265578063d55a5bdf14610238578063d8dfeb4514610265578063d99ddfc71461023d578063d99fcd6614610238578063f2fde38b1461020d5763f887ea40146101d1575f80fd5b34610209575f366003190112610209575f5160206111535f395f51905f5254600701546040516001600160a01b039091168152602090f35b5f80fd5b3461020957602036600319011261020957610236610229610ed8565b610231611056565b610fe5565b005b610265565b3461020957604036600319011261020957610256610ed8565b5061025f610f82565b50610fae565b34610209575f36600319011215610fae575f80fd5b34610209575f3660031901126102095760405161014081018181106001600160401b03821117610325575f91610120916040528281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152015260405162461bcd60e51b8152806103216004820160609060208152600f60208201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60408201520190565b0390fd5b634e487b7160e01b5f52604160045260245ffd5b346102095760203660031901126102095761025f610f6d565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260061b01011115610fae575f80fd5b34610209575f3660031901126102095760408051906103c68183610f31565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610209576102e0366003190112610209575f5160206111735f395f51905f52546001600160401b0360ff8260401c1615911680159081610602575b60011490816105f8575b1590816105ef575b506105e0578060016001600160401b03195f5160206111735f395f51905f525416175f5160206111735f395f51905f52556105b0575b6004356001600160a01b0381168103610209576104b0906104a8611089565b610231611089565b6104b8611089565b6105126040516104c9604082610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c657761726556310060208201526104fb611056565b80516020918201205f19015f9081522060ff191690565b5f5160206111535f395f51905f5281905561018435906001600160a01b03821682036102095760070180546001600160a01b0319166001600160a01b0390921691909117905561055e57005b60ff60401b195f5160206111735f395f51905f5254165f5160206111735f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f5160206111735f395f51905f525416175f5160206111735f395f51905f5255610489565b63f92ee8a960e01b5f5260045ffd5b90501582610453565b303b15915061044b565b829150610441565b610f18565b34610209576020366003190112610209576004356001600160401b038111610209573660238201121561020957806004013561064a81610f97565b916106586040519384610f31565b818352602083016024819360051b8301019136831161020957602401905b82821061072e57505050610688611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f700549151906001600160401b03821161032557600160401b8211610325578254828455808310610704575b50915f5260205f20915f5b8281106106e757005b81516001600160a01b0316818501556020909101906001016106de565b835f52828060205f20019103905f5b8281106107215750506106d3565b5f82820155600101610713565b6020809161073b84610f04565b815201910190610676565b34610209575f366003190112610209575f5160206111135f395f51905f52546040516001600160a01b039091168152602090f35b34610209576040366003190112610209576004356001600160401b03811161020957606060031982360301126102095760405190606082018281106001600160401b038211176103255760405280600401356001600160401b038111610209578101366023820112156102095760048101356107f581610f97565b916108036040519384610f31565b818352602060048185019360061b830101019036821161020957602401915b818310610850578560406108456044888885526024810135602086015201610f04565b91015261025f610f82565b604083360312610209576040519060408201908282106001600160401b0383111761032557604092602092845261088686610f04565b81528286013583820152815201920191610822565b346102095760603660031901126102095761025f610ed8565b34610209575f366003190112610209576108cc611056565b5f5160206111135f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461020957604036600319011261020957610934610f6d565b507f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70054604051806020835491828152019081935f5260205f20905f5b8181106109d15750505081610986910382610f31565b604051918291602083019060208452518091526040830191905f5b8181106109af575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109a1565b82546001600160a01b0316845260209093019260019283019201610970565b34610209575f36600319011261020957610a08611056565b5f5160206111735f395f51905f525460ff8160401c16908115610bb6575b506105e0575f5160206111735f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f5160206111135f395f51905f5254610a78906001600160a01b03166104a8611089565b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260205f5160206111535f395f51905f52546040906007610aef8351610abe8582610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563200868201526104fb611056565b91825f5160206111535f395f51905f5255610b4b8451610b10606082610f31565b602281527f6d6964646c65776172652e73746f726167652e504f414d6964646c657761726587820152612b1960f11b868201526104fb611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70055810154910180546001600160a01b0319166001600160a01b03929092169190911790555f5160206111735f395f51905f52805468ff0000000000000000191690555160028152a1005b600291506001600160401b0316101581610a26565b34610209575f366003190112610209577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610c225760206040515f5160206111335f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261020957610c45610ed8565b602435906001600160401b038211610209573660238301121561020957816004013590610c7182610f52565b91610c7f6040519384610f31565b8083526020830193366024838301011161020957815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e3f575b50610c2257610ce4611056565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610e0b575b50610d265784634c9c8ce360e01b5f5260045260245ffd5b805f5160206111335f395f51905f52869203610df95750823b15610de7575f5160206111335f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610dce575f8091610236945190845af43d15610dc6573d91610daa83610f52565b92610db86040519485610f31565b83523d5f602085013e6110b4565b6060916110b4565b50505034610dd857005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610e37575b81610e2760209383610f31565b8101031261020957519086610d0e565b3d9150610e1a565b5f5160206111335f395f51905f52546001600160a01b03161415905084610cd7565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260051b01011115610fae575f80fd5b3461020957604036600319011261020957610ecf610ed8565b5061025f610eee565b600435906001600160a01b038216820361020957565b602435906001600160a01b038216820361020957565b35906001600160a01b038216820361020957565b346102095760203660031901126102095761025f610ed8565b90601f801991011681019081106001600160401b0382111761032557604052565b6001600160401b03811161032557601f01601f191660200190565b6004359065ffffffffffff8216820361020957565b6024359065ffffffffffff8216820361020957565b6001600160401b0381116103255760051b60200190565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b6044820152606490fd5b6001600160a01b03168015611043575f5160206111135f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206111135f395f51905f52546001600160a01b0316330361107657565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206111735f395f51905f525460401c16156110a557565b631afcd79f60e31b5f5260045ffd5b906110d857508051156110c957602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580611109575b6110e9575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156110e156fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"805:6592:164:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;805:6592:164;;7983:34:30;7979:146;;-1:-1:-1;805:6592:164;;;;;;;;1052:13:60;805:6592:164;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;8085:29:30;;805:6592:164;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;805:6592:164;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806305c4fdf914610eb65780630a71094c14610e615780632633b70f1461060a5780632acde09814610238578063373bba1f146102385780633ccce7891461060a5780633d15e74e146102385780634455a38f14610238578063461e7a8e146102385780634f1ef28614610c3157806352d1902d14610bcb5780636c2eb350146109f05780636d1064eb1461060a5780636e5c79321461091b578063709d06ae14610238578063715018a6146108b4578063729e2f361461089b57806379a8b245146102385780637fbe95b51461077a57806386c241a11461060a5780638da5cb5b146107465780639300c9261461060f578063936f43301461060a578063945cf2dd1461023857806396115bc21461060a5780639e03231114610238578063ab12275314610405578063ad3cb1cc146103a7578063af96299514610352578063b5e5ad1214610339578063bcf339341461027a578063c639e2d614610238578063c9b0b1e914610238578063ceebb69a14610265578063d55a5bdf14610238578063d8dfeb4514610265578063d99ddfc71461023d578063d99fcd6614610238578063f2fde38b1461020d5763f887ea40146101d1575f80fd5b34610209575f366003190112610209575f5160206111535f395f51905f5254600701546040516001600160a01b039091168152602090f35b5f80fd5b3461020957602036600319011261020957610236610229610ed8565b610231611056565b610fe5565b005b610265565b3461020957604036600319011261020957610256610ed8565b5061025f610f82565b50610fae565b34610209575f36600319011215610fae575f80fd5b34610209575f3660031901126102095760405161014081018181106001600160401b03821117610325575f91610120916040528281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e082015282610100820152015260405162461bcd60e51b8152806103216004820160609060208152600f60208201526e1b9bdd081a5b5c1b195b595b9d1959608a1b60408201520190565b0390fd5b634e487b7160e01b5f52604160045260245ffd5b346102095760203660031901126102095761025f610f6d565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260061b01011115610fae575f80fd5b34610209575f3660031901126102095760408051906103c68183610f31565b600582526020820191640352e302e360dc1b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b34610209576102e0366003190112610209575f5160206111735f395f51905f52546001600160401b0360ff8260401c1615911680159081610602575b60011490816105f8575b1590816105ef575b506105e0578060016001600160401b03195f5160206111735f395f51905f525416175f5160206111735f395f51905f52556105b0575b6004356001600160a01b0381168103610209576104b0906104a8611089565b610231611089565b6104b8611089565b6105126040516104c9604082610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c657761726556310060208201526104fb611056565b80516020918201205f19015f9081522060ff191690565b5f5160206111535f395f51905f5281905561018435906001600160a01b03821682036102095760070180546001600160a01b0319166001600160a01b0390921691909117905561055e57005b60ff60401b195f5160206111735f395f51905f5254165f5160206111735f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b600160401b60ff60401b195f5160206111735f395f51905f525416175f5160206111735f395f51905f5255610489565b63f92ee8a960e01b5f5260045ffd5b90501582610453565b303b15915061044b565b829150610441565b610f18565b34610209576020366003190112610209576004356001600160401b038111610209573660238201121561020957806004013561064a81610f97565b916106586040519384610f31565b818352602083016024819360051b8301019136831161020957602401905b82821061072e57505050610688611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f700549151906001600160401b03821161032557600160401b8211610325578254828455808310610704575b50915f5260205f20915f5b8281106106e757005b81516001600160a01b0316818501556020909101906001016106de565b835f52828060205f20019103905f5b8281106107215750506106d3565b5f82820155600101610713565b6020809161073b84610f04565b815201910190610676565b34610209575f366003190112610209575f5160206111135f395f51905f52546040516001600160a01b039091168152602090f35b34610209576040366003190112610209576004356001600160401b03811161020957606060031982360301126102095760405190606082018281106001600160401b038211176103255760405280600401356001600160401b038111610209578101366023820112156102095760048101356107f581610f97565b916108036040519384610f31565b818352602060048185019360061b830101019036821161020957602401915b818310610850578560406108456044888885526024810135602086015201610f04565b91015261025f610f82565b604083360312610209576040519060408201908282106001600160401b0383111761032557604092602092845261088686610f04565b81528286013583820152815201920191610822565b346102095760603660031901126102095761025f610ed8565b34610209575f366003190112610209576108cc611056565b5f5160206111135f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461020957604036600319011261020957610934610f6d565b507f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70054604051806020835491828152019081935f5260205f20905f5b8181106109d15750505081610986910382610f31565b604051918291602083019060208452518091526040830191905f5b8181106109af575050500390f35b82516001600160a01b03168452859450602093840193909201916001016109a1565b82546001600160a01b0316845260209093019260019283019201610970565b34610209575f36600319011261020957610a08611056565b5f5160206111735f395f51905f525460ff8160401c16908115610bb6575b506105e0575f5160206111735f395f51905f52805468ffffffffffffffffff1916680100000000000000021790555f5160206111135f395f51905f5254610a78906001600160a01b03166104a8611089565b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260205f5160206111535f395f51905f52546040906007610aef8351610abe8582610f31565b601f81527f6d6964646c65776172652e73746f726167652e4d6964646c6577617265563200868201526104fb611056565b91825f5160206111535f395f51905f5255610b4b8451610b10606082610f31565b602281527f6d6964646c65776172652e73746f726167652e504f414d6964646c657761726587820152612b1960f11b868201526104fb611056565b7f8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f70055810154910180546001600160a01b0319166001600160a01b03929092169190911790555f5160206111735f395f51905f52805468ff0000000000000000191690555160028152a1005b600291506001600160401b0316101581610a26565b34610209575f366003190112610209577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610c225760206040515f5160206111335f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261020957610c45610ed8565b602435906001600160401b038211610209573660238301121561020957816004013590610c7182610f52565b91610c7f6040519384610f31565b8083526020830193366024838301011161020957815f926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115610e3f575b50610c2257610ce4611056565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f9181610e0b575b50610d265784634c9c8ce360e01b5f5260045260245ffd5b805f5160206111335f395f51905f52869203610df95750823b15610de7575f5160206111335f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115610dce575f8091610236945190845af43d15610dc6573d91610daa83610f52565b92610db86040519485610f31565b83523d5f602085013e6110b4565b6060916110b4565b50505034610dd857005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011610e37575b81610e2760209383610f31565b8101031261020957519086610d0e565b3d9150610e1a565b5f5160206111335f395f51905f52546001600160a01b03161415905084610cd7565b34610209576020366003190112610209576004356001600160401b0381116102095736602382011215610209578060040135906001600160401b03821161020957602490369260051b01011115610fae575f80fd5b3461020957604036600319011261020957610ecf610ed8565b5061025f610eee565b600435906001600160a01b038216820361020957565b602435906001600160a01b038216820361020957565b35906001600160a01b038216820361020957565b346102095760203660031901126102095761025f610ed8565b90601f801991011681019081106001600160401b0382111761032557604052565b6001600160401b03811161032557601f01601f191660200190565b6004359065ffffffffffff8216820361020957565b6024359065ffffffffffff8216820361020957565b6001600160401b0381116103255760051b60200190565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a5b5c1b195b595b9d1959608a1b6044820152606490fd5b6001600160a01b03168015611043575f5160206111135f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206111135f395f51905f52546001600160a01b0316330361107657565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206111735f395f51905f525460401c16156110a557565b631afcd79f60e31b5f5260045ffd5b906110d857508051156110c957602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580611109575b6110e9575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156110e156fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"805:6592:164:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:25;805:6592;4535:25;;;805:6592;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;2985:17;;805:6592;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;2357:1:29;805:6592:164;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;805:6592:164;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4535:25;;;;;;;805:6592;4535:25;;805:6592;;;;;;;;;;-1:-1:-1;;;805:6592:164;;;;;;;4535:25;;;;805:6592;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;;;4301:16:30;805:6592:164;;4724:16:30;;:34;;;;805:6592:164;4803:1:30;4788:16;:50;;;;805:6592:164;4853:13:30;:30;;;;805:6592:164;4849:91:30;;;805:6592:164;4803:1:30;-1:-1:-1;;;;;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;4977:67:30;;805:6592:164;;;-1:-1:-1;;;;;805:6592:164;;;;;;6959:1:30;;6891:76;;:::i;:::-;;;:::i;6959:1::-;6891:76;;:::i;:::-;7075:37:164;805:6592;;;;;;:::i;:::-;;;;;;;;;2303:62:29;;:::i;:::-;1800:178:73;;;;;;;-1:-1:-1;;1800:178:73;;;;;;-1:-1:-1;;1800:178:73;;1707:277;7075:37:164;-1:-1:-1;;;;;;;;;;;1106:66:164;;;1806:14;805:6592;;-1:-1:-1;;;;;805:6592:164;;;;;;1795:8;;805:6592;;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;;;;;;;5064:101:30;;805:6592:164;5064:101:30;-1:-1:-1;;;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;;;;;;805:6592:164;5140:14:30;805:6592:164;;;4803:1:30;805:6592:164;;5140:14:30;805:6592:164;4977:67:30;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;4977:67:30;;4849:91;6496:23;;;805:6592:164;4906:23:30;805:6592:164;;4906:23:30;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;805:6592:164;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2303:62:29;;;;;:::i;:::-;1333:66:164;805:6592;;;;-1:-1:-1;;;;;805:6592:164;;;;-1:-1:-1;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;805:6592:164;;;;;;;-1:-1:-1;;;;;805:6592:164;3975:40:29;805:6592:164;;3975:40:29;805:6592:164;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;1333:66;805:6592;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;-1:-1:-1;805:6592:164;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;805:6592:164;;;;;;6429:44:30;;;;;805:6592:164;6425:105:30;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;805:6592:164;;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;6959:1:30;;-1:-1:-1;;;;;805:6592:164;6891:76:30;;:::i;6959:1::-;6654:20;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;2249:17;7075:37;805:6592;;;;;;:::i;:::-;;;;;;;;;2303:62:29;;:::i;7075:37:164:-;1106:66;;-1:-1:-1;;;;;;;;;;;1106:66:164;7284:37;805:6592;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;805:6592:164;;;;2303:62:29;;:::i;7284:37:164:-;1333:66;1106;2249:17;;805:6592;2229:17;;805:6592;;-1:-1:-1;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;805:6592:164;;;;1955:1;805:6592;;6654:20:30;805:6592:164;6429:44:30;1955:1:164;805:6592;;-1:-1:-1;;;;;805:6592:164;6448:25:30;;6429:44;;;805:6592:164;;;;;;-1:-1:-1;;805:6592:164;;;;4824:6:60;-1:-1:-1;;;;;805:6592:164;4815:4:60;4807:23;4803:145;;805:6592:164;;;-1:-1:-1;;;;;;;;;;;805:6592:164;;;4803:145:60;4578:29;;;805:6592:164;4908:29:60;805:6592:164;;4908:29:60;805:6592:164;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4401:6:60;805:6592:164;4392:4:60;4384:23;;;:120;;;;805:6592:164;4367:251:60;;;2303:62:29;;:::i;:::-;805:6592:164;;-1:-1:-1;;;5865:52:60;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;5865:52:60;;805:6592:164;;5865:52:60;;;805:6592:164;-1:-1:-1;5861:437:60;;1805:47:53;;;;805:6592:164;6227:60:60;805:6592:164;;;;6227:60:60;5861:437;5959:40;-1:-1:-1;;;;;;;;;;;5959:40:60;;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;805:6592:164;;;;;2407:36:53;-1:-1:-1;;2407:36:53;805:6592:164;;2458:15:53;:11;;805:6592:164;4065:25:66;;4107:55;4065:25;;;;;;805:6592:164;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;805:6592:164:-;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;805:6592:164;6159:70:53;6199:19;;;805:6592:164;6199:19:53;805:6592:164;;6199:19:53;1744:119;1805:47;;;805:6592:164;1805:47:53;805:6592:164;;;;1805:47:53;5955:120:60;6026:34;;;805:6592:164;6026:34:60;805:6592:164;;;;6026:34:60;5865:52;;;;805:6592:164;5865:52:60;;805:6592:164;5865:52:60;;;;;;805:6592:164;5865:52:60;;;:::i;:::-;;;805:6592:164;;;;;5865:52:60;;;;;;;-1:-1:-1;5865:52:60;;4384:120;-1:-1:-1;;;;;;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;4462:42:60;;;-1:-1:-1;4384:120:60;;;805:6592:164;;;;;;-1:-1:-1;;805:6592:164;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;:::i;:::-;;;;-1:-1:-1;;;;;805:6592:164;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;805:6592:164;;;;;;:::o;:::-;;;-1:-1:-1;;;;;805:6592:164;;;;;;:::o;:::-;;;;;;-1:-1:-1;;805:6592:164;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;805:6592:164;;;;;;;:::o;:::-;-1:-1:-1;;;;;805:6592:164;;;;;;-1:-1:-1;;805:6592:164;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;805:6592:164;;;;;;;;;:::o;5424:95::-;805:6592;;-1:-1:-1;;;5487:25:164;;805:6592;5487:25;;;805:6592;;;;;;-1:-1:-1;;;805:6592:164;;;;;;4535:25;3405:215:29;-1:-1:-1;;;;;805:6592:164;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;805:6592:164;;-1:-1:-1;;;;;;805:6592:164;;;;;;;-1:-1:-1;;;;;805:6592:164;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;805:6592:164;;3509:1:29;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;805:6592:164;-1:-1:-1;;;;;805:6592:164;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;805:6592:164;;-1:-1:-1;2763:40:29;7082:141:30;805:6592:164;-1:-1:-1;;;;;;;;;;;805:6592:164;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;4437:582:66;;4609:8;;-1:-1:-1;805:6592:164;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;805:6592:164;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;805:6592:164;;;;4933:24:66;805:6592:164;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":3037,"length":32},{"start":3244,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowedVaultImplVersion()":"c9b0b1e9","changeSlashExecutor(address)":"86c241a1","changeSlashRequester(address)":"6d1064eb","collateral()":"d8dfeb45","disableOperator()":"d99fcd66","disableVault(address)":"3ccce789","distributeOperatorRewards(address,uint256,bytes32)":"729e2f36","distributeStakerRewards(((address,uint256)[],uint256,address),uint48)":"7fbe95b5","enableOperator()":"3d15e74e","enableVault(address)":"936f4330","eraDuration()":"4455a38f","executeSlash((address,uint256)[])":"af962995","getActiveOperatorsStakeAt(uint48)":"b5e5ad12","getOperatorStakeAt(address,uint48)":"d99ddfc7","initialize((address,uint48,uint48,uint48,uint48,uint48,uint48,uint64,uint64,uint256,uint256,address,address,(address,address,address,address,address,address,address,address,address,address)))":"ab122753","makeElectionAt(uint48,uint256)":"6e5c7932","maxAdminFee()":"c639e2d6","maxResolverSetEpochsDelay()":"9e032311","minSlashExecutionDelay()":"373bba1f","minVaultEpochDuration()":"945cf2dd","minVetoDuration()":"461e7a8e","operatorGracePeriod()":"709d06ae","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","registerOperator()":"2acde098","registerVault(address,address)":"05c4fdf9","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestSlash((address,uint48,(address,uint256)[])[])":"0a71094c","router()":"f887ea40","setValidators(address[])":"9300c926","subnetwork()":"ceebb69a","symbioticContracts()":"bcf33934","transferOwnership(address)":"f2fde38b","unregisterOperator(address)":"96115bc2","unregisterVault(address)":"2633b70f","upgradeToAndCall(address,bytes)":"4f1ef286","vaultGracePeriod()":"79a8b245","vetoSlasherImplType()":"d55a5bdf"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BurnerHookNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegatorNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleSlasherType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleStakerRewardsVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncompatibleVaultVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStakerRewardsVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxValidatorsMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinSlashExecutionDelayMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVaultEpochDurationLessThanTwoEras\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoAndSlashDelayTooLongForVaultEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinVetoDurationMustBeGreaterThanZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryStakerRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonFactoryVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredOperator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegisteredVault\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRouter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashExecutor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSlashRequester\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotVaultOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorDoesNotOptIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OperatorGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayMustBeAtLeastThree\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ResolverSetDelayTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SlasherNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownCollateral\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedBurner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedDelegatorHook\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodLessThanMinVaultEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultGracePeriodNotPassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VaultWrongEpochDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VetoDurationTooShort\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowedVaultImplVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"changeSlashExecutor\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"changeSlashRequester\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collateral\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disableOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"disableVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"distributeOperatorRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"distributeStakerRewards\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"enableVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eraDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.SlashIdentifier[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"name\":\"executeSlash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"getActiveOperatorsStakeAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"name\":\"getOperatorStakeAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"eraDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVaultEpochDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"operatorGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"vaultGracePeriod\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minVetoDuration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"minSlashExecutionDelay\",\"type\":\"uint48\"},{\"internalType\":\"uint64\",\"name\":\"allowedVaultImplVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"vetoSlasherImplType\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"maxResolverSetEpochsDelay\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAdminFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"collateral\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"symbiotic\",\"type\":\"tuple\"}],\"internalType\":\"struct IMiddleware.InitParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"makeElectionAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxAdminFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxResolverSetEpochsDelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minSlashExecutionDelay\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVaultEpochDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minVetoDuration\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"registerVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"ts\",\"type\":\"uint48\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IMiddleware.VaultSlashData[]\",\"name\":\"vaults\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IMiddleware.SlashData[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"name\":\"requestSlash\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"}],\"name\":\"setValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"subnetwork\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbioticContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vaultRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middlewareService\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"networkOptIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"stakerRewardsFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorRewards\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashRequester\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"roleSlashExecutor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vetoResolver\",\"type\":\"address\"}],\"internalType\":\"struct Gear.SymbioticContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"unregisterVault\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultGracePeriod\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vetoSlasherImplType\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"BurnerHookNotSupported()\":[{\"details\":\"Emitted when vault's slasher has a burner hook.\"}],\"DelegatorNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's delegator is not initialized.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EraDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `eraDuration` is equal to zero.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncompatibleSlasherType()\":[{\"details\":\"Emitted in `registerVault` when the vaults' slasher type is not supported.\"}],\"IncompatibleStakerRewardsVersion()\":[{\"details\":\"Emitted when rewards contract has incompatible version.\"}],\"IncompatibleVaultVersion()\":[{\"details\":\"Emitted when the vault has incompatible version.\"}],\"IncorrectTimestamp()\":[{\"details\":\"Emitted when requested timestamp is in the future.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidStakerRewardsVault()\":[{\"details\":\"Emitted in `registerVault` when the vault in rewards contract is not the same as in the function parameter.\"}],\"MaxValidatorsMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `maxValidators` is equal to zero.\"}],\"MinSlashExecutionDelayMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minSlashExecutionDelay` is equal to zero.\"}],\"MinVaultEpochDurationLessThanTwoEras()\":[{\"details\":\"Emitted when `minVaultEpochDuration` is less than `2 * eraDuration`.\"}],\"MinVetoAndSlashDelayTooLongForVaultEpoch()\":[{\"details\":\"Emitted when `minVetoDuration + minSlashExecutionDelay` is greater than `minVaultEpochDuration`.\"}],\"MinVetoDurationMustBeGreaterThanZero()\":[{\"details\":\"Emitted when `minVetoDuration` is equal to zero.\"}],\"NonFactoryStakerRewards()\":[{\"details\":\"Emitted when rewards contract was not created by the StakerRewardsFactory.\"}],\"NonFactoryVault()\":[{\"details\":\"Emitted when trying to register the vault from unknown factory.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"NotRegisteredOperator()\":[{\"details\":\"Emitted when `SlashData` contains the operator that is not registered in the Middleware.\"}],\"NotRegisteredVault()\":[{\"details\":\"Emitted when the vault is not registered in the Middleware.\"}],\"NotRouter()\":[{\"details\":\"Emitted when the `msg.sender` is not the Router contract.\"}],\"NotSlashExecutor()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash executor.\"}],\"NotSlashRequester()\":[{\"details\":\"Emitted when the `msg.sender` has not the role of slash requester.\"}],\"NotVaultOwner()\":[{\"details\":\"Emitted when `msg.sender` is no the owner.\"}],\"OperatorDoesNotExist()\":[{\"details\":\"Emitted when the operator is not registered in the OperatorRegistry.\"}],\"OperatorDoesNotOptIn()\":[{\"details\":\"Emitted when the operator is not opted-in to the Middleware.\"}],\"OperatorGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `operatorGracePeriod` is less than `minVaultEpochDuration`.\"}],\"OperatorGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the operator earlier then `operatorGracePeriod`.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"ResolverMismatch()\":[{\"details\":\"Emitted when slasher's veto resolver is not the same as in the Middleware.\"}],\"ResolverSetDelayMustBeAtLeastThree()\":[{\"details\":\"Emitted when `maxResolverSetEpochsDelay` is less than `3`.\"}],\"ResolverSetDelayTooLong()\":[{\"details\":\"Emitted when the slasher's delay to update the resolver is greater than the one in the Middleware.\"}],\"SlasherNotInitialized()\":[{\"details\":\"Emitted in `registerVault` when vault's slasher is not initialized.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"UnknownCollateral()\":[{\"details\":\"Emitted when trying to distribute rewards with collateral that is not equal to the one in the Middleware.\"}],\"UnsupportedBurner()\":[{\"details\":\"Emitted when vault's burner is equal to `address(0)`.\"}],\"UnsupportedDelegatorHook()\":[{\"details\":\"Emitted when the delegator's hook is not equal to `address(0)`.\"}],\"VaultGracePeriodLessThanMinVaultEpochDuration()\":[{\"details\":\"Emitted when `vaultGracePeriod` is less than `minVaultEpochDuration`.\"}],\"VaultGracePeriodNotPassed()\":[{\"details\":\"Emitted when trying to unregister the vault earlier then `vaultGracePeriod`.\"}],\"VaultWrongEpochDuration()\":[{\"details\":\"Emitted when trying to register the vault with `epochDuration` less than `minVaultEpochDuration`.\"}],\"VetoDurationTooLong()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` + `minShashExecutionDelay` is greater than vaultEpochDuration.\"}],\"VetoDurationTooShort()\":[{\"details\":\"Emitted when the vault's slasher has a `vetoDuration` less than `minVetoDuration`.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerOperator()\":{\"details\":\"Operator must be registered in operator registry.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setValidators(address[])\":{\"details\":\"Sets validators for POA middleware.\",\"params\":{\"validators\":\"The addresses of validators to set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"IncompatibleStakerRewardsVersion()\":[{\"notice\":\"The version of the rewards contract is a index of the whitelisted versions in StakerRewardsFactory.\"}],\"IncompatibleVaultVersion()\":[{\"notice\":\"The version of the vault is a index of the whitelisted versions in VaultFactory.\"}]},\"kind\":\"user\",\"methods\":{\"disableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"enableOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"},\"registerOperator()\":{\"notice\":\"This function can be called only be operator themselves.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/POAMiddleware.sol\":\"POAMiddleware\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IPOAMiddleware.sol\":{\"keccak256\":\"0xb19dc08506f6ab2bfff299612ad74193309387a992bef197f153bfedb0483819\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d103acee55668c5f0d5e9c3ebdf6ef4adef5947b971b5701133239f05f80d3e9\",\"dweb:/ipfs/QmfV4FMQwcQHbMZ33nqR1V9JzECzUaLpiq8mWdRPiaQbrN\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/POAMiddleware.sol\":{\"keccak256\":\"0x9e795d47b231857445d3f283f7f8dc73bc93df8e9c67a567c29eb5c2d41261ab\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6d3c70e2b2c5f0610cf83b4994e8fb0fe00a24504e8160db14e69f847996cf75\",\"dweb:/ipfs/QmWU5neTMaxrHu1vSBxSqBg7CqF2VhuNvHdyX1ZZEdqBV7\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/MapWithTimeData.sol\":{\"keccak256\":\"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48\",\"dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"BurnerHookNotSupported"},{"inputs":[],"type":"error","name":"DelegatorNotInitialized"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EraDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"IncompatibleSlasherType"},{"inputs":[],"type":"error","name":"IncompatibleStakerRewardsVersion"},{"inputs":[],"type":"error","name":"IncompatibleVaultVersion"},{"inputs":[],"type":"error","name":"IncorrectTimestamp"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidStakerRewardsVault"},{"inputs":[],"type":"error","name":"MaxValidatorsMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinSlashExecutionDelayMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"MinVaultEpochDurationLessThanTwoEras"},{"inputs":[],"type":"error","name":"MinVetoAndSlashDelayTooLongForVaultEpoch"},{"inputs":[],"type":"error","name":"MinVetoDurationMustBeGreaterThanZero"},{"inputs":[],"type":"error","name":"NonFactoryStakerRewards"},{"inputs":[],"type":"error","name":"NonFactoryVault"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotRegisteredOperator"},{"inputs":[],"type":"error","name":"NotRegisteredVault"},{"inputs":[],"type":"error","name":"NotRouter"},{"inputs":[],"type":"error","name":"NotSlashExecutor"},{"inputs":[],"type":"error","name":"NotSlashRequester"},{"inputs":[],"type":"error","name":"NotVaultOwner"},{"inputs":[],"type":"error","name":"OperatorDoesNotExist"},{"inputs":[],"type":"error","name":"OperatorDoesNotOptIn"},{"inputs":[],"type":"error","name":"OperatorGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"OperatorGracePeriodNotPassed"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"ResolverMismatch"},{"inputs":[],"type":"error","name":"ResolverSetDelayMustBeAtLeastThree"},{"inputs":[],"type":"error","name":"ResolverSetDelayTooLong"},{"inputs":[],"type":"error","name":"SlasherNotInitialized"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownCollateral"},{"inputs":[],"type":"error","name":"UnsupportedBurner"},{"inputs":[],"type":"error","name":"UnsupportedDelegatorHook"},{"inputs":[],"type":"error","name":"VaultGracePeriodLessThanMinVaultEpochDuration"},{"inputs":[],"type":"error","name":"VaultGracePeriodNotPassed"},{"inputs":[],"type":"error","name":"VaultWrongEpochDuration"},{"inputs":[],"type":"error","name":"VetoDurationTooLong"},{"inputs":[],"type":"error","name":"VetoDurationTooShort"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"allowedVaultImplVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"changeSlashExecutor"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"changeSlashRequester"},{"inputs":[],"stateMutability":"pure","type":"function","name":"collateral","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"disableOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"disableVault"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"distributeOperatorRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct Gear.StakerRewardsCommitment","name":"","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"pure","type":"function","name":"distributeStakerRewards","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"enableOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"enableVault"},{"inputs":[],"stateMutability":"pure","type":"function","name":"eraDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"struct IMiddleware.SlashIdentifier[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"executeSlash"},{"inputs":[{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"pure","type":"function","name":"getActiveOperatorsStakeAt","outputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint48","name":"","type":"uint48"}],"stateMutability":"pure","type":"function","name":"getOperatorStakeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct IMiddleware.InitParams","name":"_params","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint48","name":"eraDuration","type":"uint48"},{"internalType":"uint48","name":"minVaultEpochDuration","type":"uint48"},{"internalType":"uint48","name":"operatorGracePeriod","type":"uint48"},{"internalType":"uint48","name":"vaultGracePeriod","type":"uint48"},{"internalType":"uint48","name":"minVetoDuration","type":"uint48"},{"internalType":"uint48","name":"minSlashExecutionDelay","type":"uint48"},{"internalType":"uint64","name":"allowedVaultImplVersion","type":"uint64"},{"internalType":"uint64","name":"vetoSlasherImplType","type":"uint64"},{"internalType":"uint256","name":"maxResolverSetEpochsDelay","type":"uint256"},{"internalType":"uint256","name":"maxAdminFee","type":"uint256"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"router","type":"address"},{"internalType":"struct Gear.SymbioticContracts","name":"symbiotic","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint48","name":"","type":"uint48"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"makeElectionAt","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxAdminFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maxResolverSetEpochsDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minSlashExecutionDelay","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minVaultEpochDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"minVetoDuration","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"operatorGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"registerVault"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"struct IMiddleware.SlashData[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint48","name":"ts","type":"uint48"},{"internalType":"struct IMiddleware.VaultSlashData[]","name":"vaults","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]}]}],"stateMutability":"pure","type":"function","name":"requestSlash"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address[]","name":"validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"setValidators"},{"inputs":[],"stateMutability":"pure","type":"function","name":"subnetwork","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"symbioticContracts","outputs":[{"internalType":"struct Gear.SymbioticContracts","name":"","type":"tuple","components":[{"internalType":"address","name":"vaultRegistry","type":"address"},{"internalType":"address","name":"operatorRegistry","type":"address"},{"internalType":"address","name":"networkRegistry","type":"address"},{"internalType":"address","name":"middlewareService","type":"address"},{"internalType":"address","name":"networkOptIn","type":"address"},{"internalType":"address","name":"stakerRewardsFactory","type":"address"},{"internalType":"address","name":"operatorRewards","type":"address"},{"internalType":"address","name":"roleSlashRequester","type":"address"},{"internalType":"address","name":"roleSlashExecutor","type":"address"},{"internalType":"address","name":"vetoResolver","type":"address"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function","name":"unregisterVault"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"pure","type":"function","name":"vaultGracePeriod","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"vetoSlasherImplType","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"registerOperator()":{"details":"Operator must be registered in operator registry."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":""},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setValidators(address[])":{"details":"Sets validators for POA middleware.","params":{"validators":"The addresses of validators to set."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"disableOperator()":{"notice":"This function can be called only be operator themselves."},"enableOperator()":{"notice":"This function can be called only be operator themselves."},"registerOperator()":{"notice":"This function can be called only be operator themselves."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/POAMiddleware.sol":"POAMiddleware"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IPOAMiddleware.sol":{"keccak256":"0xb19dc08506f6ab2bfff299612ad74193309387a992bef197f153bfedb0483819","urls":["bzz-raw://d103acee55668c5f0d5e9c3ebdf6ef4adef5947b971b5701133239f05f80d3e9","dweb:/ipfs/QmfV4FMQwcQHbMZ33nqR1V9JzECzUaLpiq8mWdRPiaQbrN"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/POAMiddleware.sol":{"keccak256":"0x9e795d47b231857445d3f283f7f8dc73bc93df8e9c67a567c29eb5c2d41261ab","urls":["bzz-raw://6d3c70e2b2c5f0610cf83b4994e8fb0fe00a24504e8160db14e69f847996cf75","dweb:/ipfs/QmWU5neTMaxrHu1vSBxSqBg7CqF2VhuNvHdyX1ZZEdqBV7"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/MapWithTimeData.sol":{"keccak256":"0x148d89a649d99a4efe80933fcfa86e540e5f27705fa0eab42695bad17eb2da1e","urls":["bzz-raw://cb532cd5b1f724d8029503ddb9dd7f16498ffca5ec0cec3c11f255a0e8a06e48","dweb:/ipfs/QmbPXDuSr9EXjdX3cUkycrEdsjQP7Pj9Zbo51dQprgJ323"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/POAMiddleware.sol","id":79474,"exportedSymbols":{"Gear":[88588],"IMiddleware":[74131],"IPOAMiddleware":[74411],"MapWithTimeData":[88876],"OwnableUpgradeable":[42322],"POAMiddleware":[79473],"ReentrancyGuardTransientUpgradeable":[43943],"SlotDerivation":[48965],"StorageSlot":[49089],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:7324:164","nodes":[{"id":78893,"nodeType":"PragmaDirective","src":"74:24:164","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":78895,"nodeType":"ImportDirective","src":"100:101:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":78894,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78897,"nodeType":"ImportDirective","src":"202:140:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":78896,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"215:35:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78899,"nodeType":"ImportDirective","src":"343:88:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":78898,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"351:15:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78901,"nodeType":"ImportDirective","src":"432:80:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":78900,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"440:14:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78903,"nodeType":"ImportDirective","src":"513:74:164","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":78902,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"521:11:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78905,"nodeType":"ImportDirective","src":"588:48:164","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":78904,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"596:11:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78907,"nodeType":"ImportDirective","src":"637:54:164","nodes":[],"absolutePath":"src/IPOAMiddleware.sol","file":"src/IPOAMiddleware.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":74412,"symbolAliases":[{"foreign":{"id":78906,"name":"IPOAMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74411,"src":"645:14:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78909,"nodeType":"ImportDirective","src":"692:44:164","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":88589,"symbolAliases":[{"foreign":{"id":78908,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"700:4:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":78911,"nodeType":"ImportDirective","src":"737:66:164","nodes":[],"absolutePath":"src/libraries/MapWithTimeData.sol","file":"src/libraries/MapWithTimeData.sol","nameLocation":"-1:-1:-1","scope":79474,"sourceUnit":88877,"symbolAliases":[{"foreign":{"id":78910,"name":"MapWithTimeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88876,"src":"745:15:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79473,"nodeType":"ContractDefinition","src":"805:6592:164","nodes":[{"id":78924,"nodeType":"VariableDeclaration","src":"1066:106:164","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1091:12:164","scope":79473,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1066:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830623863353661663663633961643430316164323235626665393664663737663330343962613137656164616331636239356565383964663165363964313030","id":78923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1106:66:164","typeDescriptions":{"typeIdentifier":"t_rational_5223398203118087324979291777783578297303922957705888423515209926851254931712_by_1","typeString":"int_const 5223...(68 digits omitted)...1712"},"value":"0x0b8c56af6cc9ad401ad225bfe96df77f3049ba17eadac1cb95ee89df1e69d100"},"visibility":"private"},{"id":78927,"nodeType":"VariableDeclaration","src":"1289:110:164","nodes":[],"constant":true,"mutability":"constant","name":"POA_SLOT_STORAGE","nameLocation":"1314:16:164","scope":79473,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838343939333932623366626166323931366134313962353431616365346465663737616137303037336535363932383465633961393635333439393466373030","id":78926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1333:66:164","typeDescriptions":{"typeIdentifier":"t_rational_59976018179433309946144826079876057780106175984062073030302583158790876886784_by_1","typeString":"int_const 5997...(69 digits omitted)...6784"},"value":"0x8499392b3fbaf2916a419b541ace4def77aa70073e569284ec9a96534994f700"},"visibility":"private"},{"id":78935,"nodeType":"FunctionDefinition","src":"1474:53:164","nodes":[],"body":{"id":78934,"nodeType":"Block","src":"1488:39:164","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78931,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"1498:20:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":78932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1498:22:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78933,"nodeType":"ExpressionStatement","src":"1498:22:164"}]},"documentation":{"id":78928,"nodeType":"StructuredDocumentation","src":"1406:63:164","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":78929,"nodeType":"ParameterList","parameters":[],"src":"1485:2:164"},"returnParameters":{"id":78930,"nodeType":"ParameterList","parameters":[],"src":"1488:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":78969,"nodeType":"FunctionDefinition","src":"1533:294:164","nodes":[],"body":{"id":78968,"nodeType":"Block","src":"1601:226:164","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":78944,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78938,"src":"1626:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":78945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1634:5:164","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":73862,"src":"1626:13:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78943,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"1611:14:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":78946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1611:29:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78947,"nodeType":"ExpressionStatement","src":"1611:29:164"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78948,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"1650:31:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":78949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1650:33:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78950,"nodeType":"ExpressionStatement","src":"1650:33:164"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655631","id":78952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1710:33:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""},"value":"middleware.storage.MiddlewareV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_02a5c5f8d11256fd69f3d6cf76a378a9929132c88934a20e220465858cdca742","typeString":"literal_string \"middleware.storage.MiddlewareV1\""}],"id":78951,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79448,"src":"1694:15:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":78953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1694:50:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78954,"nodeType":"ExpressionStatement","src":"1694:50:164"},{"assignments":[78957],"declarations":[{"constant":false,"id":78957,"mutability":"mutable","name":"$","nameLocation":"1770:1:164","nodeType":"VariableDeclaration","scope":78968,"src":"1754:17:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":78956,"nodeType":"UserDefinedTypeName","pathNode":{"id":78955,"name":"Storage","nameLocations":["1754:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"1754:7:164"},"referencedDeclaration":73928,"src":"1754:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":78960,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78958,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79387,"src":"1774:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":78959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1774:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1754:30:164"},{"expression":{"id":78966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":78961,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78957,"src":"1795:1:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":78963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1797:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"1795:8:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":78964,"name":"_params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78938,"src":"1806:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams calldata"}},"id":78965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1814:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73886,"src":"1806:14:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1795:25:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":78967,"nodeType":"ExpressionStatement","src":"1795:25:164"}]},"functionSelector":"ab122753","implemented":true,"kind":"function","modifiers":[{"id":78941,"kind":"modifierInvocation","modifierName":{"id":78940,"name":"initializer","nameLocations":["1589:11:164"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"1589:11:164"},"nodeType":"ModifierInvocation","src":"1589:11:164"}],"name":"initialize","nameLocation":"1542:10:164","parameters":{"id":78939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78938,"mutability":"mutable","name":"_params","nameLocation":"1573:7:164","nodeType":"VariableDeclaration","scope":78969,"src":"1553:27:164","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_calldata_ptr","typeString":"struct IMiddleware.InitParams"},"typeName":{"id":78937,"nodeType":"UserDefinedTypeName","pathNode":{"id":78936,"name":"InitParams","nameLocations":["1553:10:164"],"nodeType":"IdentifierPath","referencedDeclaration":73890,"src":"1553:10:164"},"referencedDeclaration":73890,"src":"1553:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_InitParams_$73890_storage_ptr","typeString":"struct IMiddleware.InitParams"}},"visibility":"internal"}],"src":"1552:29:164"},"returnParameters":{"id":78942,"nodeType":"ParameterList","parameters":[],"src":"1601:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79011,"nodeType":"FunctionDefinition","src":"1900:373:164","nodes":[],"body":{"id":79010,"nodeType":"Block","src":"1958:315:164","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":78979,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"1983:5:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":78980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:7:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78978,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"1968:14:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":78981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1968:23:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78982,"nodeType":"ExpressionStatement","src":"1968:23:164"},{"assignments":[78985],"declarations":[{"constant":false,"id":78985,"mutability":"mutable","name":"oldStorage","nameLocation":"2018:10:164","nodeType":"VariableDeclaration","scope":79010,"src":"2002:26:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":78984,"nodeType":"UserDefinedTypeName","pathNode":{"id":78983,"name":"Storage","nameLocations":["2002:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"2002:7:164"},"referencedDeclaration":73928,"src":"2002:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":78988,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":78986,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79387,"src":"2031:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":78987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2031:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2002:39:164"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e4d6964646c65776172655632","id":78990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2068:33:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""},"value":"middleware.storage.MiddlewareV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0b71a9760d0d67d1ebdec611fce51798c1c69a6c591e7131d01cf132bade8405","typeString":"literal_string \"middleware.storage.MiddlewareV2\""}],"id":78989,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79448,"src":"2052:15:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":78991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2052:50:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78992,"nodeType":"ExpressionStatement","src":"2052:50:164"},{"expression":{"arguments":[{"hexValue":"6d6964646c65776172652e73746f726167652e504f414d6964646c65776172655632","id":78994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2131:36:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_0c6fd4a0a56578ebf1cead5052a047902e5402f8b08ce672c016695bc7cf8701","typeString":"literal_string \"middleware.storage.POAMiddlewareV2\""},"value":"middleware.storage.POAMiddlewareV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0c6fd4a0a56578ebf1cead5052a047902e5402f8b08ce672c016695bc7cf8701","typeString":"literal_string \"middleware.storage.POAMiddlewareV2\""}],"id":78993,"name":"_setPoaStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79472,"src":"2112:18:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":78995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2112:56:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78996,"nodeType":"ExpressionStatement","src":"2112:56:164"},{"assignments":[78999],"declarations":[{"constant":false,"id":78999,"mutability":"mutable","name":"newStorage","nameLocation":"2195:10:164","nodeType":"VariableDeclaration","scope":79010,"src":"2179:26:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":78998,"nodeType":"UserDefinedTypeName","pathNode":{"id":78997,"name":"Storage","nameLocations":["2179:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"2179:7:164"},"referencedDeclaration":73928,"src":"2179:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"id":79002,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79000,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79387,"src":"2208:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":79001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2208:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2179:39:164"},{"expression":{"id":79008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79003,"name":"newStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78999,"src":"2229:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":79005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2240:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"2229:17:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":79006,"name":"oldStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78985,"src":"2249:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":79007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"2249:17:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2229:37:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79009,"nodeType":"ExpressionStatement","src":"2229:37:164"}]},"documentation":{"id":78970,"nodeType":"StructuredDocumentation","src":"1833:62:164","text":" @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":78973,"kind":"modifierInvocation","modifierName":{"id":78972,"name":"onlyOwner","nameLocations":["1931:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"1931:9:164"},"nodeType":"ModifierInvocation","src":"1931:9:164"},{"arguments":[{"hexValue":"32","id":78975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1955:1:164","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":78976,"kind":"modifierInvocation","modifierName":{"id":78974,"name":"reinitializer","nameLocations":["1941:13:164"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"1941:13:164"},"nodeType":"ModifierInvocation","src":"1941:16:164"}],"name":"reinitialize","nameLocation":"1909:12:164","parameters":{"id":78971,"nodeType":"ParameterList","parameters":[],"src":"1921:2:164"},"returnParameters":{"id":78977,"nodeType":"ParameterList","parameters":[],"src":"1958:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79021,"nodeType":"FunctionDefinition","src":"2438:84:164","nodes":[],"body":{"id":79020,"nodeType":"Block","src":"2520:2:164","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":79012,"nodeType":"StructuredDocumentation","src":"2279:154:164","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":79018,"kind":"modifierInvocation","modifierName":{"id":79017,"name":"onlyOwner","nameLocations":["2510:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2510:9:164"},"nodeType":"ModifierInvocation","src":"2510:9:164"}],"name":"_authorizeUpgrade","nameLocation":"2447:17:164","overrides":{"id":79016,"nodeType":"OverrideSpecifier","overrides":[],"src":"2501:8:164"},"parameters":{"id":79015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79014,"mutability":"mutable","name":"newImplementation","nameLocation":"2473:17:164","nodeType":"VariableDeclaration","scope":79021,"src":"2465:25:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79013,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:27:164"},"returnParameters":{"id":79019,"nodeType":"ParameterList","parameters":[],"src":"2520:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":79037,"nodeType":"FunctionDefinition","src":"2653:124:164","nodes":[],"body":{"id":79036,"nodeType":"Block","src":"2724:53:164","nodes":[],"statements":[{"expression":{"id":79034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79030,"name":"_poaStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79400,"src":"2734:11:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_POAStorage_$74403_storage_ptr_$","typeString":"function () view returns (struct IPOAMiddleware.POAStorage storage pointer)"}},"id":79031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2734:13:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage storage pointer"}},"id":79032,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2748:9:164","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":74402,"src":"2734:23:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":79033,"name":"validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79025,"src":"2760:10:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2734:36:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":79035,"nodeType":"ExpressionStatement","src":"2734:36:164"}]},"baseFunctions":[74410],"documentation":{"id":79022,"nodeType":"StructuredDocumentation","src":"2528:120:164","text":" @dev Sets validators for POA middleware.\n @param validators The addresses of validators to set."},"functionSelector":"9300c926","implemented":true,"kind":"function","modifiers":[{"id":79028,"kind":"modifierInvocation","modifierName":{"id":79027,"name":"onlyOwner","nameLocations":["2714:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2714:9:164"},"nodeType":"ModifierInvocation","src":"2714:9:164"}],"name":"setValidators","nameLocation":"2662:13:164","parameters":{"id":79026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79025,"mutability":"mutable","name":"validators","nameLocation":"2693:10:164","nodeType":"VariableDeclaration","scope":79037,"src":"2676:27:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79023,"name":"address","nodeType":"ElementaryTypeName","src":"2676:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79024,"nodeType":"ArrayTypeName","src":"2676:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2675:29:164"},"returnParameters":{"id":79029,"nodeType":"ParameterList","parameters":[],"src":"2724:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":79052,"nodeType":"FunctionDefinition","src":"2783:129:164","nodes":[],"body":{"id":79051,"nodeType":"Block","src":"2865:47:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79047,"name":"_poaStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79400,"src":"2882:11:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_POAStorage_$74403_storage_ptr_$","typeString":"function () view returns (struct IPOAMiddleware.POAStorage storage pointer)"}},"id":79048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2882:13:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage storage pointer"}},"id":79049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2896:9:164","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":74402,"src":"2882:23:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":79046,"id":79050,"nodeType":"Return","src":"2875:30:164"}]},"baseFunctions":[74039],"functionSelector":"6e5c7932","implemented":true,"kind":"function","modifiers":[],"name":"makeElectionAt","nameLocation":"2792:14:164","parameters":{"id":79042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79052,"src":"2807:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79038,"name":"uint48","nodeType":"ElementaryTypeName","src":"2807:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":79041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79052,"src":"2815:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79040,"name":"uint256","nodeType":"ElementaryTypeName","src":"2815:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2806:17:164"},"returnParameters":{"id":79046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79052,"src":"2847:16:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79043,"name":"address","nodeType":"ElementaryTypeName","src":"2847:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79044,"nodeType":"ArrayTypeName","src":"2847:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2846:18:164"},"scope":79473,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":79062,"nodeType":"FunctionDefinition","src":"2918:91:164","nodes":[],"body":{"id":79061,"nodeType":"Block","src":"2968:41:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79057,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79387,"src":"2985:8:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$73928_storage_ptr_$","typeString":"function () view returns (struct IMiddleware.Storage storage pointer)"}},"id":79058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2985:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage storage pointer"}},"id":79059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2996:6:164","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":73917,"src":"2985:17:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79056,"id":79060,"nodeType":"Return","src":"2978:24:164"}]},"baseFunctions":[74012],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"2927:6:164","parameters":{"id":79053,"nodeType":"ParameterList","parameters":[],"src":"2933:2:164"},"returnParameters":{"id":79056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79062,"src":"2959:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79054,"name":"address","nodeType":"ElementaryTypeName","src":"2959:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2958:9:164"},"scope":79473,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":79072,"nodeType":"FunctionDefinition","src":"3168:94:164","nodes":[],"body":{"id":79071,"nodeType":"Block","src":"3220:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3237:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79067,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3230:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3230:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79070,"nodeType":"ExpressionStatement","src":"3230:25:164"}]},"baseFunctions":[73952],"functionSelector":"4455a38f","implemented":true,"kind":"function","modifiers":[],"name":"eraDuration","nameLocation":"3177:11:164","parameters":{"id":79063,"nodeType":"ParameterList","parameters":[],"src":"3188:2:164"},"returnParameters":{"id":79066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79072,"src":"3212:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79064,"name":"uint48","nodeType":"ElementaryTypeName","src":"3212:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3211:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79082,"nodeType":"FunctionDefinition","src":"3268:104:164","nodes":[],"body":{"id":79081,"nodeType":"Block","src":"3330:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3347:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79077,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3340:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3340:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79080,"nodeType":"ExpressionStatement","src":"3340:25:164"}]},"baseFunctions":[73957],"functionSelector":"945cf2dd","implemented":true,"kind":"function","modifiers":[],"name":"minVaultEpochDuration","nameLocation":"3277:21:164","parameters":{"id":79073,"nodeType":"ParameterList","parameters":[],"src":"3298:2:164"},"returnParameters":{"id":79076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79075,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79082,"src":"3322:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79074,"name":"uint48","nodeType":"ElementaryTypeName","src":"3322:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3321:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79092,"nodeType":"FunctionDefinition","src":"3378:102:164","nodes":[],"body":{"id":79091,"nodeType":"Block","src":"3438:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3455:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79087,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3448:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3448:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79090,"nodeType":"ExpressionStatement","src":"3448:25:164"}]},"baseFunctions":[73962],"functionSelector":"709d06ae","implemented":true,"kind":"function","modifiers":[],"name":"operatorGracePeriod","nameLocation":"3387:19:164","parameters":{"id":79083,"nodeType":"ParameterList","parameters":[],"src":"3406:2:164"},"returnParameters":{"id":79086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79092,"src":"3430:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79084,"name":"uint48","nodeType":"ElementaryTypeName","src":"3430:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3429:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79102,"nodeType":"FunctionDefinition","src":"3486:99:164","nodes":[],"body":{"id":79101,"nodeType":"Block","src":"3543:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3560:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79097,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3553:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3553:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79100,"nodeType":"ExpressionStatement","src":"3553:25:164"}]},"baseFunctions":[73967],"functionSelector":"79a8b245","implemented":true,"kind":"function","modifiers":[],"name":"vaultGracePeriod","nameLocation":"3495:16:164","parameters":{"id":79093,"nodeType":"ParameterList","parameters":[],"src":"3511:2:164"},"returnParameters":{"id":79096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79102,"src":"3535:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79094,"name":"uint48","nodeType":"ElementaryTypeName","src":"3535:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3534:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79112,"nodeType":"FunctionDefinition","src":"3591:98:164","nodes":[],"body":{"id":79111,"nodeType":"Block","src":"3647:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3664:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79107,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3657:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79110,"nodeType":"ExpressionStatement","src":"3657:25:164"}]},"baseFunctions":[73972],"functionSelector":"461e7a8e","implemented":true,"kind":"function","modifiers":[],"name":"minVetoDuration","nameLocation":"3600:15:164","parameters":{"id":79103,"nodeType":"ParameterList","parameters":[],"src":"3615:2:164"},"returnParameters":{"id":79106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79105,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79112,"src":"3639:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79104,"name":"uint48","nodeType":"ElementaryTypeName","src":"3639:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3638:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79122,"nodeType":"FunctionDefinition","src":"3695:105:164","nodes":[],"body":{"id":79121,"nodeType":"Block","src":"3758:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3775:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79117,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3768:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3768:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79120,"nodeType":"ExpressionStatement","src":"3768:25:164"}]},"baseFunctions":[73977],"functionSelector":"373bba1f","implemented":true,"kind":"function","modifiers":[],"name":"minSlashExecutionDelay","nameLocation":"3704:22:164","parameters":{"id":79113,"nodeType":"ParameterList","parameters":[],"src":"3726:2:164"},"returnParameters":{"id":79116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79122,"src":"3750:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79114,"name":"uint48","nodeType":"ElementaryTypeName","src":"3750:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3749:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79132,"nodeType":"FunctionDefinition","src":"3806:109:164","nodes":[],"body":{"id":79131,"nodeType":"Block","src":"3873:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3890:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79127,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3883:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3883:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79130,"nodeType":"ExpressionStatement","src":"3883:25:164"}]},"baseFunctions":[73982],"functionSelector":"9e032311","implemented":true,"kind":"function","modifiers":[],"name":"maxResolverSetEpochsDelay","nameLocation":"3815:25:164","parameters":{"id":79123,"nodeType":"ParameterList","parameters":[],"src":"3840:2:164"},"returnParameters":{"id":79126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79132,"src":"3864:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79124,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3863:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79142,"nodeType":"FunctionDefinition","src":"3921:106:164","nodes":[],"body":{"id":79141,"nodeType":"Block","src":"3985:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4002:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79137,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3995:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3995:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79140,"nodeType":"ExpressionStatement","src":"3995:25:164"}]},"baseFunctions":[73987],"functionSelector":"c9b0b1e9","implemented":true,"kind":"function","modifiers":[],"name":"allowedVaultImplVersion","nameLocation":"3930:23:164","parameters":{"id":79133,"nodeType":"ParameterList","parameters":[],"src":"3953:2:164"},"returnParameters":{"id":79136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79135,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79142,"src":"3977:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":79134,"name":"uint64","nodeType":"ElementaryTypeName","src":"3977:6:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3976:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79152,"nodeType":"FunctionDefinition","src":"4033:102:164","nodes":[],"body":{"id":79151,"nodeType":"Block","src":"4093:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4110:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79147,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4103:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79150,"nodeType":"ExpressionStatement","src":"4103:25:164"}]},"baseFunctions":[73992],"functionSelector":"d55a5bdf","implemented":true,"kind":"function","modifiers":[],"name":"vetoSlasherImplType","nameLocation":"4042:19:164","parameters":{"id":79143,"nodeType":"ParameterList","parameters":[],"src":"4061:2:164"},"returnParameters":{"id":79146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79152,"src":"4085:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":79144,"name":"uint64","nodeType":"ElementaryTypeName","src":"4085:6:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"4084:8:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79162,"nodeType":"FunctionDefinition","src":"4141:94:164","nodes":[],"body":{"id":79161,"nodeType":"Block","src":"4193:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4210:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79157,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4203:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4203:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79160,"nodeType":"ExpressionStatement","src":"4203:25:164"}]},"baseFunctions":[73997],"functionSelector":"d8dfeb45","implemented":true,"kind":"function","modifiers":[],"name":"collateral","nameLocation":"4150:10:164","parameters":{"id":79153,"nodeType":"ParameterList","parameters":[],"src":"4160:2:164"},"returnParameters":{"id":79156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79162,"src":"4184:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79154,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4183:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79172,"nodeType":"FunctionDefinition","src":"4241:94:164","nodes":[],"body":{"id":79171,"nodeType":"Block","src":"4293:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4310:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79167,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4303:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4303:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79170,"nodeType":"ExpressionStatement","src":"4303:25:164"}]},"baseFunctions":[74002],"functionSelector":"ceebb69a","implemented":true,"kind":"function","modifiers":[],"name":"subnetwork","nameLocation":"4250:10:164","parameters":{"id":79163,"nodeType":"ParameterList","parameters":[],"src":"4260:2:164"},"returnParameters":{"id":79166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79172,"src":"4284:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4284:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4283:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79182,"nodeType":"FunctionDefinition","src":"4341:95:164","nodes":[],"body":{"id":79181,"nodeType":"Block","src":"4394:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4411:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79177,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4404:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4404:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79180,"nodeType":"ExpressionStatement","src":"4404:25:164"}]},"baseFunctions":[74007],"functionSelector":"c639e2d6","implemented":true,"kind":"function","modifiers":[],"name":"maxAdminFee","nameLocation":"4350:11:164","parameters":{"id":79173,"nodeType":"ParameterList","parameters":[],"src":"4361:2:164"},"returnParameters":{"id":79176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79182,"src":"4385:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79174,"name":"uint256","nodeType":"ElementaryTypeName","src":"4385:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4384:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79193,"nodeType":"FunctionDefinition","src":"4442:125:164","nodes":[],"body":{"id":79192,"nodeType":"Block","src":"4525:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4542:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79188,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4535:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4535:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79191,"nodeType":"ExpressionStatement","src":"4535:25:164"}]},"baseFunctions":[74018],"functionSelector":"bcf33934","implemented":true,"kind":"function","modifiers":[],"name":"symbioticContracts","nameLocation":"4451:18:164","parameters":{"id":79183,"nodeType":"ParameterList","parameters":[],"src":"4469:2:164"},"returnParameters":{"id":79187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79186,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79193,"src":"4493:30:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_memory_ptr","typeString":"struct Gear.SymbioticContracts"},"typeName":{"id":79185,"nodeType":"UserDefinedTypeName","pathNode":{"id":79184,"name":"Gear.SymbioticContracts","nameLocations":["4493:4:164","4498:18:164"],"nodeType":"IdentifierPath","referencedDeclaration":87725,"src":"4493:23:164"},"referencedDeclaration":87725,"src":"4493:23:164","typeDescriptions":{"typeIdentifier":"t_struct$_SymbioticContracts_$87725_storage_ptr","typeString":"struct Gear.SymbioticContracts"}},"visibility":"internal"}],"src":"4492:32:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79201,"nodeType":"FunctionDefinition","src":"4573:81:164","nodes":[],"body":{"id":79200,"nodeType":"Block","src":"4612:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4629:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79196,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4622:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4622:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79199,"nodeType":"ExpressionStatement","src":"4622:25:164"}]},"baseFunctions":[74071],"functionSelector":"d99fcd66","implemented":true,"kind":"function","modifiers":[],"name":"disableOperator","nameLocation":"4582:15:164","parameters":{"id":79194,"nodeType":"ParameterList","parameters":[],"src":"4597:2:164"},"returnParameters":{"id":79195,"nodeType":"ParameterList","parameters":[],"src":"4612:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79209,"nodeType":"FunctionDefinition","src":"4660:80:164","nodes":[],"body":{"id":79208,"nodeType":"Block","src":"4698:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4715:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79204,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4708:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4708:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79207,"nodeType":"ExpressionStatement","src":"4708:25:164"}]},"baseFunctions":[74075],"functionSelector":"3d15e74e","implemented":true,"kind":"function","modifiers":[],"name":"enableOperator","nameLocation":"4669:14:164","parameters":{"id":79202,"nodeType":"ParameterList","parameters":[],"src":"4683:2:164"},"returnParameters":{"id":79203,"nodeType":"ParameterList","parameters":[],"src":"4698:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79219,"nodeType":"FunctionDefinition","src":"4746:93:164","nodes":[],"body":{"id":79218,"nodeType":"Block","src":"4797:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4814:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79214,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4807:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79217,"nodeType":"ExpressionStatement","src":"4807:25:164"}]},"baseFunctions":[74023],"functionSelector":"6d1064eb","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashRequester","nameLocation":"4755:20:164","parameters":{"id":79212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79219,"src":"4776:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79210,"name":"address","nodeType":"ElementaryTypeName","src":"4776:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4775:9:164"},"returnParameters":{"id":79213,"nodeType":"ParameterList","parameters":[],"src":"4797:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79229,"nodeType":"FunctionDefinition","src":"4845:92:164","nodes":[],"body":{"id":79228,"nodeType":"Block","src":"4895:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4912:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79224,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4905:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4905:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79227,"nodeType":"ExpressionStatement","src":"4905:25:164"}]},"baseFunctions":[74028],"functionSelector":"86c241a1","implemented":true,"kind":"function","modifiers":[],"name":"changeSlashExecutor","nameLocation":"4854:19:164","parameters":{"id":79222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79229,"src":"4874:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79220,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4873:9:164"},"returnParameters":{"id":79223,"nodeType":"ParameterList","parameters":[],"src":"4895:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79237,"nodeType":"FunctionDefinition","src":"4943:82:164","nodes":[],"body":{"id":79236,"nodeType":"Block","src":"4983:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5000:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79232,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4993:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4993:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79235,"nodeType":"ExpressionStatement","src":"4993:25:164"}]},"baseFunctions":[74067],"functionSelector":"2acde098","implemented":true,"kind":"function","modifiers":[],"name":"registerOperator","nameLocation":"4952:16:164","parameters":{"id":79230,"nodeType":"ParameterList","parameters":[],"src":"4968:2:164"},"returnParameters":{"id":79231,"nodeType":"ParameterList","parameters":[],"src":"4983:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79247,"nodeType":"FunctionDefinition","src":"5031:91:164","nodes":[],"body":{"id":79246,"nodeType":"Block","src":"5080:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5097:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79242,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5090:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5090:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79245,"nodeType":"ExpressionStatement","src":"5090:25:164"}]},"baseFunctions":[74081],"functionSelector":"96115bc2","implemented":true,"kind":"function","modifiers":[],"name":"unregisterOperator","nameLocation":"5040:18:164","parameters":{"id":79240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79247,"src":"5059:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79238,"name":"address","nodeType":"ElementaryTypeName","src":"5059:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5058:9:164"},"returnParameters":{"id":79241,"nodeType":"ParameterList","parameters":[],"src":"5080:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79263,"nodeType":"FunctionDefinition","src":"5128:134:164","nodes":[],"body":{"id":79262,"nodeType":"Block","src":"5220:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5237:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79258,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5230:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5230:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79261,"nodeType":"ExpressionStatement","src":"5230:25:164"}]},"baseFunctions":[74119],"functionSelector":"729e2f36","implemented":true,"kind":"function","modifiers":[],"name":"distributeOperatorRewards","nameLocation":"5137:25:164","parameters":{"id":79254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79263,"src":"5163:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79248,"name":"address","nodeType":"ElementaryTypeName","src":"5163:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79263,"src":"5172:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79250,"name":"uint256","nodeType":"ElementaryTypeName","src":"5172:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79263,"src":"5181:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5181:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5162:27:164"},"returnParameters":{"id":79257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79263,"src":"5211:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5211:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5210:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79278,"nodeType":"FunctionDefinition","src":"5268:150:164","nodes":[],"body":{"id":79277,"nodeType":"Block","src":"5376:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5393:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79273,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5386:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5386:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79276,"nodeType":"ExpressionStatement","src":"5386:25:164"}]},"baseFunctions":[74130],"functionSelector":"7fbe95b5","implemented":true,"kind":"function","modifiers":[],"name":"distributeStakerRewards","nameLocation":"5277:23:164","parameters":{"id":79269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79278,"src":"5301:35:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_memory_ptr","typeString":"struct Gear.StakerRewardsCommitment"},"typeName":{"id":79265,"nodeType":"UserDefinedTypeName","pathNode":{"id":79264,"name":"Gear.StakerRewardsCommitment","nameLocations":["5301:4:164","5306:23:164"],"nodeType":"IdentifierPath","referencedDeclaration":87542,"src":"5301:28:164"},"referencedDeclaration":87542,"src":"5301:28:164","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_storage_ptr","typeString":"struct Gear.StakerRewardsCommitment"}},"visibility":"internal"},{"constant":false,"id":79268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79278,"src":"5338:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79267,"name":"uint48","nodeType":"ElementaryTypeName","src":"5338:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5300:45:164"},"returnParameters":{"id":79272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79278,"src":"5367:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5367:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5366:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79290,"nodeType":"FunctionDefinition","src":"5424:95:164","nodes":[],"body":{"id":79289,"nodeType":"Block","src":"5477:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5494:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79285,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5487:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79288,"nodeType":"ExpressionStatement","src":"5487:25:164"}]},"baseFunctions":[74089],"functionSelector":"05c4fdf9","implemented":true,"kind":"function","modifiers":[],"name":"registerVault","nameLocation":"5433:13:164","parameters":{"id":79283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79290,"src":"5447:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79279,"name":"address","nodeType":"ElementaryTypeName","src":"5447:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79290,"src":"5456:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79281,"name":"address","nodeType":"ElementaryTypeName","src":"5456:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5446:18:164"},"returnParameters":{"id":79284,"nodeType":"ParameterList","parameters":[],"src":"5477:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79300,"nodeType":"FunctionDefinition","src":"5525:85:164","nodes":[],"body":{"id":79299,"nodeType":"Block","src":"5568:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5585:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79295,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5578:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5578:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79298,"nodeType":"ExpressionStatement","src":"5578:25:164"}]},"baseFunctions":[74101],"functionSelector":"3ccce789","implemented":true,"kind":"function","modifiers":[],"name":"disableVault","nameLocation":"5534:12:164","parameters":{"id":79293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79300,"src":"5547:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79291,"name":"address","nodeType":"ElementaryTypeName","src":"5547:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5546:9:164"},"returnParameters":{"id":79294,"nodeType":"ParameterList","parameters":[],"src":"5568:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79310,"nodeType":"FunctionDefinition","src":"5616:84:164","nodes":[],"body":{"id":79309,"nodeType":"Block","src":"5658:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5675:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79305,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5668:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5668:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79308,"nodeType":"ExpressionStatement","src":"5668:25:164"}]},"baseFunctions":[74107],"functionSelector":"936f4330","implemented":true,"kind":"function","modifiers":[],"name":"enableVault","nameLocation":"5625:11:164","parameters":{"id":79303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79310,"src":"5637:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79301,"name":"address","nodeType":"ElementaryTypeName","src":"5637:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5636:9:164"},"returnParameters":{"id":79304,"nodeType":"ParameterList","parameters":[],"src":"5658:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79320,"nodeType":"FunctionDefinition","src":"5706:88:164","nodes":[],"body":{"id":79319,"nodeType":"Block","src":"5752:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5769:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79315,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5762:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5762:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79318,"nodeType":"ExpressionStatement","src":"5762:25:164"}]},"baseFunctions":[74095],"functionSelector":"2633b70f","implemented":true,"kind":"function","modifiers":[],"name":"unregisterVault","nameLocation":"5715:15:164","parameters":{"id":79313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79320,"src":"5731:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79311,"name":"address","nodeType":"ElementaryTypeName","src":"5731:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5730:9:164"},"returnParameters":{"id":79314,"nodeType":"ParameterList","parameters":[],"src":"5752:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79334,"nodeType":"FunctionDefinition","src":"5800:117:164","nodes":[],"body":{"id":79333,"nodeType":"Block","src":"5875:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5892:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79329,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5885:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79332,"nodeType":"ExpressionStatement","src":"5885:25:164"}]},"baseFunctions":[74049],"functionSelector":"d99ddfc7","implemented":true,"kind":"function","modifiers":[],"name":"getOperatorStakeAt","nameLocation":"5809:18:164","parameters":{"id":79325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79334,"src":"5828:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79321,"name":"address","nodeType":"ElementaryTypeName","src":"5828:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79334,"src":"5837:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79323,"name":"uint48","nodeType":"ElementaryTypeName","src":"5837:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5827:17:164"},"returnParameters":{"id":79328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79334,"src":"5866:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79326,"name":"uint256","nodeType":"ElementaryTypeName","src":"5866:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5865:9:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79350,"nodeType":"FunctionDefinition","src":"5923:142:164","nodes":[],"body":{"id":79349,"nodeType":"Block","src":"6023:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6040:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79345,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6033:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6033:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79348,"nodeType":"ExpressionStatement","src":"6033:25:164"}]},"functionSelector":"b5e5ad12","implemented":true,"kind":"function","modifiers":[],"name":"getActiveOperatorsStakeAt","nameLocation":"5932:25:164","parameters":{"id":79337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79350,"src":"5958:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79335,"name":"uint48","nodeType":"ElementaryTypeName","src":"5958:6:164","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"5957:8:164"},"returnParameters":{"id":79344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79350,"src":"5987:16:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79338,"name":"address","nodeType":"ElementaryTypeName","src":"5987:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79339,"nodeType":"ArrayTypeName","src":"5987:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":79343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79350,"src":"6005:16:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":79341,"name":"uint256","nodeType":"ElementaryTypeName","src":"6005:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79342,"nodeType":"ArrayTypeName","src":"6005:9:164","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5986:36:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79362,"nodeType":"FunctionDefinition","src":"6071:98:164","nodes":[],"body":{"id":79361,"nodeType":"Block","src":"6127:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6144:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79357,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6137:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6137:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79360,"nodeType":"ExpressionStatement","src":"6137:25:164"}]},"baseFunctions":[74056],"functionSelector":"0a71094c","implemented":true,"kind":"function","modifiers":[],"name":"requestSlash","nameLocation":"6080:12:164","parameters":{"id":79355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79362,"src":"6093:20:164","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashData[]"},"typeName":{"baseType":{"id":79352,"nodeType":"UserDefinedTypeName","pathNode":{"id":79351,"name":"SlashData","nameLocations":["6093:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":73942,"src":"6093:9:164"},"referencedDeclaration":73942,"src":"6093:9:164","typeDescriptions":{"typeIdentifier":"t_struct$_SlashData_$73942_storage_ptr","typeString":"struct IMiddleware.SlashData"}},"id":79353,"nodeType":"ArrayTypeName","src":"6093:11:164","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashData_$73942_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashData[]"}},"visibility":"internal"}],"src":"6092:22:164"},"returnParameters":{"id":79356,"nodeType":"ParameterList","parameters":[],"src":"6127:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79374,"nodeType":"FunctionDefinition","src":"6175:104:164","nodes":[],"body":{"id":79373,"nodeType":"Block","src":"6237:42:164","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6e6f7420696d706c656d656e746564","id":79370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6254:17:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""},"value":"not implemented"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_32d075b43bd38f25ee5981ec20d2adc90449bf9822d065b5dee1ff7a3dcb82b9","typeString":"literal_string \"not implemented\""}],"id":79369,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"6247:6:164","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":79371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6247:25:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79372,"nodeType":"ExpressionStatement","src":"6247:25:164"}]},"baseFunctions":[74063],"functionSelector":"af962995","implemented":true,"kind":"function","modifiers":[],"name":"executeSlash","nameLocation":"6184:12:164","parameters":{"id":79367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79366,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79374,"src":"6197:26:164","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"},"typeName":{"baseType":{"id":79364,"nodeType":"UserDefinedTypeName","pathNode":{"id":79363,"name":"SlashIdentifier","nameLocations":["6197:15:164"],"nodeType":"IdentifierPath","referencedDeclaration":73947,"src":"6197:15:164"},"referencedDeclaration":73947,"src":"6197:15:164","typeDescriptions":{"typeIdentifier":"t_struct$_SlashIdentifier_$73947_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier"}},"id":79365,"nodeType":"ArrayTypeName","src":"6197:17:164","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SlashIdentifier_$73947_storage_$dyn_storage_ptr","typeString":"struct IMiddleware.SlashIdentifier[]"}},"visibility":"internal"}],"src":"6196:28:164"},"returnParameters":{"id":79368,"nodeType":"ParameterList","parameters":[],"src":"6237:0:164"},"scope":79473,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":79387,"nodeType":"FunctionDefinition","src":"6285:201:164","nodes":[],"body":{"id":79386,"nodeType":"Block","src":"6355:131:164","nodes":[],"statements":[{"assignments":[79381],"declarations":[{"constant":false,"id":79381,"mutability":"mutable","name":"slot","nameLocation":"6373:4:164","nodeType":"VariableDeclaration","scope":79386,"src":"6365:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79380,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6365:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79384,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79382,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79412,"src":"6380:15:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":79383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6380:17:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6365:32:164"},{"AST":{"nativeSrc":"6433:47:164","nodeType":"YulBlock","src":"6433:47:164","statements":[{"nativeSrc":"6447:23:164","nodeType":"YulAssignment","src":"6447:23:164","value":{"name":"slot","nativeSrc":"6466:4:164","nodeType":"YulIdentifier","src":"6466:4:164"},"variableNames":[{"name":"middleware.slot","nativeSrc":"6447:15:164","nodeType":"YulIdentifier","src":"6447:15:164"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":79378,"isOffset":false,"isSlot":true,"src":"6447:15:164","suffix":"slot","valueSize":1},{"declaration":79381,"isOffset":false,"isSlot":false,"src":"6466:4:164","valueSize":1}],"flags":["memory-safe"],"id":79385,"nodeType":"InlineAssembly","src":"6408:72:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_storage","nameLocation":"6294:8:164","parameters":{"id":79375,"nodeType":"ParameterList","parameters":[],"src":"6302:2:164"},"returnParameters":{"id":79379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79378,"mutability":"mutable","name":"middleware","nameLocation":"6343:10:164","nodeType":"VariableDeclaration","scope":79387,"src":"6327:26:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"},"typeName":{"id":79377,"nodeType":"UserDefinedTypeName","pathNode":{"id":79376,"name":"Storage","nameLocations":["6327:7:164"],"nodeType":"IdentifierPath","referencedDeclaration":73928,"src":"6327:7:164"},"referencedDeclaration":73928,"src":"6327:7:164","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$73928_storage_ptr","typeString":"struct IMiddleware.Storage"}},"visibility":"internal"}],"src":"6326:28:164"},"scope":79473,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79400,"nodeType":"FunctionDefinition","src":"6492:209:164","nodes":[],"body":{"id":79399,"nodeType":"Block","src":"6568:133:164","nodes":[],"statements":[{"assignments":[79394],"declarations":[{"constant":false,"id":79394,"mutability":"mutable","name":"slot","nameLocation":"6586:4:164","nodeType":"VariableDeclaration","scope":79399,"src":"6578:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6578:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79397,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79395,"name":"_getPoaStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79424,"src":"6593:18:164","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":79396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6593:20:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6578:35:164"},{"AST":{"nativeSrc":"6648:47:164","nodeType":"YulBlock","src":"6648:47:164","statements":[{"nativeSrc":"6662:23:164","nodeType":"YulAssignment","src":"6662:23:164","value":{"name":"slot","nativeSrc":"6681:4:164","nodeType":"YulIdentifier","src":"6681:4:164"},"variableNames":[{"name":"poaStorage.slot","nativeSrc":"6662:15:164","nodeType":"YulIdentifier","src":"6662:15:164"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":79391,"isOffset":false,"isSlot":true,"src":"6662:15:164","suffix":"slot","valueSize":1},{"declaration":79394,"isOffset":false,"isSlot":false,"src":"6681:4:164","valueSize":1}],"flags":["memory-safe"],"id":79398,"nodeType":"InlineAssembly","src":"6623:72:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_poaStorage","nameLocation":"6501:11:164","parameters":{"id":79388,"nodeType":"ParameterList","parameters":[],"src":"6512:2:164"},"returnParameters":{"id":79392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79391,"mutability":"mutable","name":"poaStorage","nameLocation":"6556:10:164","nodeType":"VariableDeclaration","scope":79400,"src":"6537:29:164","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage"},"typeName":{"id":79390,"nodeType":"UserDefinedTypeName","pathNode":{"id":79389,"name":"POAStorage","nameLocations":["6537:10:164"],"nodeType":"IdentifierPath","referencedDeclaration":74403,"src":"6537:10:164"},"referencedDeclaration":74403,"src":"6537:10:164","typeDescriptions":{"typeIdentifier":"t_struct$_POAStorage_$74403_storage_ptr","typeString":"struct IPOAMiddleware.POAStorage"}},"visibility":"internal"}],"src":"6536:31:164"},"scope":79473,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79412,"nodeType":"FunctionDefinition","src":"6707:128:164","nodes":[],"body":{"id":79411,"nodeType":"Block","src":"6765:70:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":79407,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78924,"src":"6809:12:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79405,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"6782:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6794:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"6782:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6782:40:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6823:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"6782:46:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79404,"id":79410,"nodeType":"Return","src":"6775:53:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"6716:15:164","parameters":{"id":79401,"nodeType":"ParameterList","parameters":[],"src":"6731:2:164"},"returnParameters":{"id":79404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79412,"src":"6756:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6756:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6755:9:164"},"scope":79473,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79424,"nodeType":"FunctionDefinition","src":"6841:135:164","nodes":[],"body":{"id":79423,"nodeType":"Block","src":"6902:74:164","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":79419,"name":"POA_SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78927,"src":"6946:16:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79417,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"6919:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6931:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"6919:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6919:44:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6964:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"6919:50:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79416,"id":79422,"nodeType":"Return","src":"6912:57:164"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getPoaStorageSlot","nameLocation":"6850:18:164","parameters":{"id":79413,"nodeType":"ParameterList","parameters":[],"src":"6868:2:164"},"returnParameters":{"id":79416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79424,"src":"6893:7:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6893:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6892:9:164"},"scope":79473,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":79448,"nodeType":"FunctionDefinition","src":"6982:200:164","nodes":[],"body":{"id":79447,"nodeType":"Block","src":"7050:132:164","nodes":[],"statements":[{"assignments":[79432],"declarations":[{"constant":false,"id":79432,"mutability":"mutable","name":"slot","nameLocation":"7068:4:164","nodeType":"VariableDeclaration","scope":79447,"src":"7060:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79431,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7060:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79437,"initialValue":{"arguments":[{"id":79435,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79426,"src":"7102:9:164","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":79433,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"7075:14:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":79434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7090:11:164","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"7075:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":79436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7075:37:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7060:52:164"},{"expression":{"id":79445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":79441,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78924,"src":"7149:12:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79438,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"7122:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7134:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"7122:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7122:40:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7163:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"7122:46:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":79444,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79432,"src":"7171:4:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7122:53:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":79446,"nodeType":"ExpressionStatement","src":"7122:53:164"}]},"implemented":true,"kind":"function","modifiers":[{"id":79429,"kind":"modifierInvocation","modifierName":{"id":79428,"name":"onlyOwner","nameLocations":["7040:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"7040:9:164"},"nodeType":"ModifierInvocation","src":"7040:9:164"}],"name":"_setStorageSlot","nameLocation":"6991:15:164","parameters":{"id":79427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79426,"mutability":"mutable","name":"namespace","nameLocation":"7021:9:164","nodeType":"VariableDeclaration","scope":79448,"src":"7007:23:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79425,"name":"string","nodeType":"ElementaryTypeName","src":"7007:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7006:25:164"},"returnParameters":{"id":79430,"nodeType":"ParameterList","parameters":[],"src":"7050:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":79472,"nodeType":"FunctionDefinition","src":"7188:207:164","nodes":[],"body":{"id":79471,"nodeType":"Block","src":"7259:136:164","nodes":[],"statements":[{"assignments":[79456],"declarations":[{"constant":false,"id":79456,"mutability":"mutable","name":"slot","nameLocation":"7277:4:164","nodeType":"VariableDeclaration","scope":79471,"src":"7269:12:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79455,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7269:7:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":79461,"initialValue":{"arguments":[{"id":79459,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79450,"src":"7311:9:164","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":79457,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"7284:14:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":79458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7299:11:164","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"7284:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":79460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7284:37:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7269:52:164"},{"expression":{"id":79469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":79465,"name":"POA_SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78927,"src":"7358:16:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":79462,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"7331:11:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":79464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7343:14:164","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"7331:26:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":79466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7331:44:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":79467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7376:5:164","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"7331:50:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":79468,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79456,"src":"7384:4:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7331:57:164","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":79470,"nodeType":"ExpressionStatement","src":"7331:57:164"}]},"implemented":true,"kind":"function","modifiers":[{"id":79453,"kind":"modifierInvocation","modifierName":{"id":79452,"name":"onlyOwner","nameLocations":["7249:9:164"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"7249:9:164"},"nodeType":"ModifierInvocation","src":"7249:9:164"}],"name":"_setPoaStorageSlot","nameLocation":"7197:18:164","parameters":{"id":79451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79450,"mutability":"mutable","name":"namespace","nameLocation":"7230:9:164","nodeType":"VariableDeclaration","scope":79472,"src":"7216:23:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79449,"name":"string","nodeType":"ElementaryTypeName","src":"7216:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7215:25:164"},"returnParameters":{"id":79454,"nodeType":"ParameterList","parameters":[],"src":"7259:0:164"},"scope":79473,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":78912,"name":"IMiddleware","nameLocations":["835:11:164"],"nodeType":"IdentifierPath","referencedDeclaration":74131,"src":"835:11:164"},"id":78913,"nodeType":"InheritanceSpecifier","src":"835:11:164"},{"baseName":{"id":78914,"name":"IPOAMiddleware","nameLocations":["852:14:164"],"nodeType":"IdentifierPath","referencedDeclaration":74411,"src":"852:14:164"},"id":78915,"nodeType":"InheritanceSpecifier","src":"852:14:164"},{"baseName":{"id":78916,"name":"OwnableUpgradeable","nameLocations":["872:18:164"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"872:18:164"},"id":78917,"nodeType":"InheritanceSpecifier","src":"872:18:164"},{"baseName":{"id":78918,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["896:35:164"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"896:35:164"},"id":78919,"nodeType":"InheritanceSpecifier","src":"896:35:164"},{"baseName":{"id":78920,"name":"UUPSUpgradeable","nameLocations":["937:15:164"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"937:15:164"},"id":78921,"nodeType":"InheritanceSpecifier","src":"937:15:164"}],"canonicalName":"POAMiddleware","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[79473,46243,44833,43943,42322,43484,42590,74411,74131],"name":"POAMiddleware","nameLocation":"814:13:164","scope":79474,"usedErrors":[42158,42163,42339,42342,43875,45427,45440,46100,46105,47372,48774,73752,73755,73758,73761,73764,73767,73770,73773,73776,73779,73782,73785,73788,73791,73794,73797,73800,73803,73806,73809,73812,73815,73818,73821,73824,73827,73830,73833,73836,73839,73842,73845,73848,73851,73854,73857,73860],"usedEvents":[42169,42347,44781]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":164} \ No newline at end of file diff --git a/ethexe/ethereum/abi/Router.json b/ethexe/ethereum/abi/Router.json index 2cf73d100fb..a7f973d0e8a 100644 --- a/ethexe/ethereum/abi/Router.json +++ b/ethexe/ethereum/abi/Router.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBatch","inputs":[{"name":"_batch","type":"tuple","internalType":"struct Gear.BatchCommitment","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockTimestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBatchHash","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint8","internalType":"uint8"},{"name":"chainCommitment","type":"tuple[]","internalType":"struct Gear.ChainCommitment[]","components":[{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"exited","type":"bool","internalType":"bool"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueToReceiveNegativeSign","type":"bool","internalType":"bool"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]},{"name":"call","type":"bool","internalType":"bool"}]}]},{"name":"head","type":"bytes32","internalType":"bytes32"}]},{"name":"codeCommitments","type":"tuple[]","internalType":"struct Gear.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"rewardsCommitment","type":"tuple[]","internalType":"struct Gear.RewardsCommitment[]","components":[{"name":"operators","type":"tuple","internalType":"struct Gear.OperatorRewardsCommitment","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"}]},{"name":"stakers","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"validatorsCommitment","type":"tuple[]","internalType":"struct Gear.ValidatorsCommitment[]","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitment","type":"bytes","internalType":"bytes"},{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"eraIndex","type":"uint256","internalType":"uint256"}]}]},{"name":"_signatureType","type":"uint8","internalType":"enum Gear.SignatureType"},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithAbiInterface","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithAbiInterfaceAndExecutableBalance","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithExecutableBalance","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"genesisTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_middleware","type":"address","internalType":"address"},{"name":"_eraDuration","type":"uint256","internalType":"uint256"},{"name":"_electionDuration","type":"uint256","internalType":"uint256"},{"name":"_validationDelay","type":"uint256","internalType":"uint256"},{"name":"_aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_verifiableSecretSharingCommitment","type":"bytes","internalType":"bytes"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBatchHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBatchTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"middleware","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidationBaseFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestCodeValidationExtraFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestCodeValidationOnBehalf","inputs":[{"name":"_requester","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_blobHashes","type":"bytes32[]","internalType":"bytes32[]"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v1","type":"uint8","internalType":"uint8"},{"name":"_r1","type":"bytes32","internalType":"bytes32"},{"name":"_s1","type":"bytes32","internalType":"bytes32"},{"name":"_v2","type":"uint8","internalType":"uint8"},{"name":"_r2","type":"bytes32","internalType":"bytes32"},{"name":"_s2","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCodeValidationBaseFee","inputs":[{"name":"newBaseFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCodeValidationExtraFee","inputs":[{"name":"newExtraFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdFraction","inputs":[],"outputs":[{"name":"thresholdNumerator","type":"uint128","internalType":"uint128"},{"name":"thresholdDenominator","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"storageView","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IRouter.StorageView","components":[{"name":"genesisBlock","type":"tuple","internalType":"struct Gear.GenesisBlockInfo","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"number","type":"uint32","internalType":"uint32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"latestCommittedBatch","type":"tuple","internalType":"struct Gear.CommittedBatchInfo","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"implAddresses","type":"tuple","internalType":"struct Gear.AddressBook","components":[{"name":"mirror","type":"address","internalType":"address"},{"name":"wrappedVara","type":"address","internalType":"address"},{"name":"middleware","type":"address","internalType":"address"}]},{"name":"validationSettings","type":"tuple","internalType":"struct Gear.ValidationSettingsView","components":[{"name":"thresholdNumerator","type":"uint128","internalType":"uint128"},{"name":"thresholdDenominator","type":"uint128","internalType":"uint128"},{"name":"validators0","type":"tuple","internalType":"struct Gear.ValidatorsView","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitmentPointer","type":"address","internalType":"address"},{"name":"list","type":"address[]","internalType":"address[]"},{"name":"useFromTimestamp","type":"uint256","internalType":"uint256"}]},{"name":"validators1","type":"tuple","internalType":"struct Gear.ValidatorsView","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitmentPointer","type":"address","internalType":"address"},{"name":"list","type":"address[]","internalType":"address[]"},{"name":"useFromTimestamp","type":"uint256","internalType":"uint256"}]}]},{"name":"computeSettings","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]},{"name":"timelines","type":"tuple","internalType":"struct Gear.Timelines","components":[{"name":"era","type":"uint256","internalType":"uint256"},{"name":"election","type":"uint256","internalType":"uint256"},{"name":"validationDelay","type":"uint256","internalType":"uint256"}]},{"name":"programsCount","type":"uint256","internalType":"uint256"},{"name":"validatedCodesCount","type":"uint256","internalType":"uint256"},{"name":"maxValidators","type":"uint16","internalType":"uint16"},{"name":"requestCodeValidationBaseFee","type":"uint256","internalType":"uint256"},{"name":"requestCodeValidationExtraFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"timelines","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.Timelines","components":[{"name":"era","type":"uint256","internalType":"uint256"},{"name":"election","type":"uint256","internalType":"uint256"},{"name":"validationDelay","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsAggregatedPublicKey","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsVerifiableSecretSharingCommitment","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"AnnouncesCommitted","inputs":[{"name":"head","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BatchCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[{"name":"slot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ValidatorsCommittedForEra","inputs":[{"name":"eraIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ApproveERC20Failed","inputs":[]},{"type":"error","name":"BatchTimestampNotInPast","inputs":[]},{"type":"error","name":"BatchTimestampTooEarly","inputs":[]},{"type":"error","name":"BlobNotFound","inputs":[]},{"type":"error","name":"CodeAlreadyOnValidationOrValidated","inputs":[]},{"type":"error","name":"CodeNotValidated","inputs":[]},{"type":"error","name":"CodeValidationNotRequested","inputs":[]},{"type":"error","name":"CommitmentEraNotNext","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ElectionNotStarted","inputs":[]},{"type":"error","name":"EmptyValidatorsList","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"EraDurationTooShort","inputs":[]},{"type":"error","name":"ErasTimestampMustNotBeEqual","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisHashAlreadySet","inputs":[]},{"type":"error","name":"GenesisHashNotFound","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidBlobHash","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"providedBlobHash","type":"bytes32","internalType":"bytes32"},{"name":"expectedBlobHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidBlobHashesLength","inputs":[{"name":"providedLength","type":"uint256","internalType":"uint256"},{"name":"expectedLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidElectionDuration","inputs":[]},{"type":"error","name":"InvalidFROSTAggregatedPublicKey","inputs":[]},{"type":"error","name":"InvalidFrostSignatureCount","inputs":[]},{"type":"error","name":"InvalidFrostSignatureLength","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidPreviousCommittedBatchHash","inputs":[]},{"type":"error","name":"InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"PredecessorBlockNotFound","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RewardsCommitmentEraNotPrevious","inputs":[]},{"type":"error","name":"RewardsCommitmentPredatesGenesis","inputs":[]},{"type":"error","name":"RewardsCommitmentTimestampNotInPast","inputs":[]},{"type":"error","name":"RouterGenesisHashNotInitialized","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SignatureVerificationFailed","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"TimestampOlderThanPreviousEra","inputs":[]},{"type":"error","name":"TooManyChainCommitments","inputs":[]},{"type":"error","name":"TooManyRewardsCommitments","inputs":[]},{"type":"error","name":"TooManyValidatorsCommitments","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownProgram","inputs":[]},{"type":"error","name":"ValidationBeforeGenesis","inputs":[]},{"type":"error","name":"ValidationDelayTooBig","inputs":[]},{"type":"error","name":"ValidatorsAlreadyScheduled","inputs":[]},{"type":"error","name":"ValidatorsNotFoundForTimestamp","inputs":[]},{"type":"error","name":"ZeroValueTransfer","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f5160206159de5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161591790816100c78239608051818181612af40152612b870152f35b6001600160401b0319166001600160401b039081175f5160206159de5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610091575b50361561001a575f80fd5b610022613a0c565b5f5160206158975f395f51905f5254600181015415610082576001600160801b0334161561007357335f908152601a9190910160205260409020541561006457005b63821a62f560e01b5f5260045ffd5b63a1a7c6eb60e01b5f5260045ffd5b63580683f360e01b5f5260045ffd5b5f905f3560e01c9081627a32e7146132b2575080630b9737ce1461327f5780630c18d277146131b45780630d91bf2a14612fe657806311bec80d14612fb3578063188509e914612f8557806328e24b3d14612f575780633644e51514612f3c5780633683c4d214612e7f5780633bd109fa14612e305780633d43b41814612ddc5780633f4ba83a14612d5c5780634f1ef28614612b4857806352d1902d14612ae157806353f7fd48146122be5780635c975abb1461228f5780636c2eb35014611d20578063715018a614611cb757806371a8cf2d14611c895780637ecebe0014611c3157806382bdeaad14611b195780638456cb5914611aa657806384b0196e1461197e57806384d22a4f1461192057806388f50cf0146118e75780638b1edf1e146118885780638c4ace6a146117285780638da5cb5b146116f35780638f381dbe146116ad5780639067088e1461166457806396a2ddfa146116365780639eb939a8146115df578063a5d53a441461155f578063ad3cb1cc14611516578063b24fcac014611080578063baaf020114610f83578063c13911e814610f3f578063c2eb812f14610bb8578063ca1e781914610b68578063cacf66ab14610b30578063d456fd5114610afa578063e3a6684f14610abb578063e6fabc0914610a82578063ed612f8c14610a4a578063edc87225146109f5578063ee32004f1461080f578063f0fd702a146103b7578063f1ef31ec14610389578063f2fde38b1461035c578063f4f20ac0146103235763facd743b0361000f5734610320576020366003190112610320576102e2613308565b60036102fd5f5160206158975f395f51905f5254429061529f565b019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346103205780600319360112610320575f5160206158975f395f51905f5254600701546040516001600160a01b039091168152602090f35b503461032057602036600319011261032057610386610379613308565b6103816139d9565b613968565b80f35b50346103205780600319360112610320576020601f5f5160206158975f395f51905f52540154604051908152f35b503461032057610140366003190112610320576103d2613308565b602435906044356001600160401b03811161080b576103f5903690600401613457565b90916064359060843560ff811681036108075760e4359060ff821682036108035761041e613a0c565b8749156107f4575f5160206158975f395f51905f5254946001860154156107e5576019860196888a528760205260ff60408b20541660038110156107d1576107c257895b80496107b45780830361079d5750895b82811061075657508542116107425760405160208101906001600160fb1b03841161073e576104bd602082610588956105919760051b8091873781010301601f1981018352826133c7565b5190209260018060a01b03861693848c527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408c208054906001820190556040519060208201927f375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b809784528760408401528d6060840152608083015260a08201528860c082015260c0815261055660e0826133c7565b51902061056161523e565b906040519161190160f01b83526002830152602282015260c43591604260a4359220615570565b909291926155f2565b6001600160a01b031681810361072957505086906105c660018060a01b0360068701541695601f601e8201549101549061395b565b93853b156107255760405163d505accf60e01b81526001600160a01b038516600482015230602482015260448101869052606481019190915260ff9190911660848201526101043560a48201526101243560c4820152818160e48183895af1610708575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482019290925291602091839190829081606481015b03925af19081156106fd5784916106ce575b50156106bf5781835260209081526040808420805460ff19166001179055519182527f5c261a095dd5720475295dc06379921c003c22164ee6cae5cf83e76ce0a1b98591a180f35b631e4e7d0960e21b8352600483fd5b6106f0915060203d6020116106f6575b6106e881836133c7565b810190613599565b5f610677565b503d6106de565b6040513d86823e3d90fd5b81610715919493946133c7565b6107215790855f61062a565b8580fd5b8280fd5b637ba5ffb560e01b8952600452602452604487fd5b8b80fd5b632f4aa44f60e21b8a52600486905260248afd5b804980610764838686613742565b3514610771838686613742565b359015610782575050600101610472565b606493508c926306f2f0e760e21b8452600452602452604452fd5b635cfa404d60e11b8b52600483905260245260448afd5b6107bd9061394d565b610462565b6304c51a3360e31b8a5260048afd5b634e487b7160e01b8b52602160045260248bfd5b63580683f360e01b8952600489fd5b637bb2fa2f60e11b8852600488fd5b8780fd5b8680fd5b8380fd5b5034610320576101203660031901126103205761082a6132dc565b6108326132f2565b6084356001600160801b0381169081810361099d578460c43560ff8116810361098e5761085d613a0c565b61086b602435600435613a33565b6006015490936001600160a01b0390911691823b1561080b576108b38480926040518093819263d505accf60e01b8352610104359060e4359060a4358a30336004890161354f565b038183885af16109e0575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156109d55786916109b6575b50156109a7576001600160a01b03908116939081166109a1575033915b833b1561099d57604051635fd142bb60e11b81526001600160a01b03938416600482015292166024830152604482018490526064820152828160848183865af1801561099257610979575b602082604051908152f35b6109848380926133c7565b61098e578161096e565b5080fd5b6040513d85823e3d90fd5b8480fd5b91610923565b631e4e7d0960e21b8552600485fd5b6109cf915060203d6020116106f6576106e881836133c7565b5f610906565b6040513d88823e3d90fd5b816109ea916133c7565b61072557825f6108be565b50346103205780600319360112610320576020610a425f5160206158975f395f51905f525460086004610a28428461529f565b0154910154906001600160801b038260801c921690615213565b604051908152f35b503461032057806003193601126103205760206004610a785f5160206158975f395f51905f5254429061529f565b0154604051908152f35b50346103205780600319360112610320575f5160206158975f395f51905f5254600501546040516001600160a01b039091168152602090f35b5034610320578060031936011261032057604060085f5160206158975f395f51905f525401548151906001600160801b038116825260801c6020820152f35b5034610320578060031936011261032057602065ffffffffffff60045f5160206158975f395f51905f5254015416604051908152f35b5034610320578060031936011261032057602065ffffffffffff60025f5160206158975f395f51905f52540154821c16604051908152f35b5034610320578060031936011261032057610bb4610ba06004610b9a5f5160206158975f395f51905f5254429061529f565b016138fa565b6040519182916020835260208301906134cc565b0390f35b5034610320578060031936011261032057604051610bd581613390565b610bdd613828565b8152604051610beb81613375565b5f8152602081015f90526020820152610c02613828565b6040820152610c0f6138c7565b6060820152604051610c2081613375565b5f80825260208201526080820152610c36613828565b60a08201528160c08201528160e0820152816101008201528161012082015261014001525f5160206158975f395f51905f5254610c716138c7565b50610c7e6009820161551b565b90610c8b600f820161551b565b60088201549260405193610c9e856133ac565b6001600160801b038116855260801c602085015260408401526060830152601b81015490601c810154601d82015461ffff16601e83015490601f8401549260405195610ce987613390565b604051610cf581613346565b60018701548152600287015463ffffffff8116602083015260201c65ffffffffffff166040820152875260405197610d2c89613375565b60038701548952600487015465ffffffffffff1660208a01526020880198895260405190610d5982613346565b60058801546001600160a01b039081168352600689015481166020840152600789015416604080840191909152890191825260608901908152610d9e6015890161377a565b9760808a01988952601601610db290613846565b9160a08a0192835260c08a0193845260e08a019485526101008a019586526101208a019687526101408a019788526040519a8b9a60208c5251805160208d0152602081015163ffffffff1660408d01526040015165ffffffffffff1660608c015251805160808c01526020015165ffffffffffff1660a08b015251600160a01b6001900381511660c08b0152600160a01b6001900360208201511660e08b0152600160a01b600190039060400151166101008a0152516101208901610260905280516001600160801b03166102808a015260208101516001600160801b03166102a08a015260408101516102c08a01608090526103008a01610eb391613508565b90606001519061027f198a8203016102e08b0152610ed091613508565b965180516001600160401b03166101408a0152602001516001600160801b031661016089015251805161018089015260208101516101a0890152604001516101c0880152516101e0870152516102008601525161ffff1661022085015251610240840152516102608301520390f35b50346103205760203660031901126103205760ff604060209260195f5160206158975f395f51905f52540160043582528452205416610f816040518092613487565bf35b5034610320576020366003190112610320576004356001600160401b03811161098e57610fb4903690600401613457565b905f5160206158975f395f51905f525490610fce836136d7565b91610fdc60405193846133c7565b838352610fe8846136d7565b602084019490601f1901368637601a869201915b81811061104757868587604051928392602084019060208552518091526040840192915b81811061102e575050500390f35b8251845285945060209384019390920191600101611020565b8061105d6110586001938588613742565b6137a8565b828060a01b03165f528360205260405f20546110798288613766565b5201610ffc565b5034610320576060366003190112610320576001600160401b036004351161032057610100600435360360031901126103205760026024351015610320576044356001600160401b03811161098e576110dd903690600401613457565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6115075760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206158975f395f51905f5254906001820154156114f85781541561149c575b6003820154604460043501350361148d5765ffffffffffff60048301541665ffffffffffff61117c60246004350161387c565b161061147f5761119160043560040183614444565b926111a660a4600435016004356004016148f9565b808096925060051b046020148515171561146b576111c68560051b615307565b8695865b81881061133657506112fc965060051b9020906111ec60043560040186614950565b6111fb60043560040187614d27565b9061120a60246004350161387c565b9361121960646004350161386e565b9360405194602086019660043560040135885265ffffffffffff60d01b9060d01b16604087015260446004350135604687015260ff60f81b9060f81b1660668601526067850152608784015260a783015260c782015260c7815261127e60e7826133c7565b5190209283600382015565ffffffffffff61129d60246004350161387c565b1665ffffffffffff196004830154161760048201557f7ebe42360bcb182fe0a88148b081e4557c89d09aa6af8307635ac2f83e2aaa656020604051868152a165ffffffffffff6112f160246004350161387c565b169360243591614faa565b1561132757807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b63729d0f6b60e01b8152600490fd5b61134a60a4600435016004356004016148f9565b891015611457578860061b8101358a526019880160205260ff60408b20541660038110156107d1576001036114485760019160209161140d8b8b8e868360061b860101926113978461492e565b156114295760061b85013590525060198c01855260408e20805460ff19166002179055601c8c0180546113c99061394d565b90555b8c7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c9866113f88461492e565b1515926040519060061b8701358152a261492e565b908b60061b01358c52825360218b2081860152019701966111ca565b60409260199160061b87013583520187522060ff1981541690556113cc565b636e83084760e11b8a5260048afd5b634e487b7160e01b8a52603260045260248afd5b634e487b7160e01b86526011600452602486fd5b620725b160ea1b8452600484fd5b63164b6fc360e01b8452600484fd5b6114b96114ad60646004350161386e565b600435600401356143af565b156114e95765ffffffffffff6114d360246004350161387c565b16421161114957631ad8809560e31b8452600484fd5b637b8cb35960e01b8452600484fd5b63580683f360e01b8452600484fd5b633ee5aeb560e01b8352600483fd5b503461032057806003193601126103205750610bb46040516115396040826133c7565b60058152640352e302e360dc1b60208201526040519182916020835260208301906134a8565b50346103205780600319360112610320575f5160206158975f395f51905f52546001600160a01b039060029061159690429061529f565b0154166040519182915f19813b0164ffffffffff16916021830191601f8501903c8082520190604082019182604052602083526115da603f199260608301906134a8565b030190f35b50346103205780600319360112610320576115f8613828565b50606061161560165f5160206158975f395f51905f525401613846565b610f8160405180926040809180518452602081015160208501520151910152565b50346103205780600319360112610320576020601b5f5160206158975f395f51905f52540154604051908152f35b50346103205760203660031901126103205761167e613308565b601a5f5160206158975f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b503461032057602036600319011261032057600435906001600160401b0382116103205760206116e96116e33660048601613457565b906137bc565b6040519015158152f35b50346103205780600319360112610320575f5160206158175f395f51905f52546040516001600160a01b039091168152602090f35b50346103205760a03660031901126103205760043560443560ff8116810361072557611752613a0c565b824915611879575f5160206158975f395f51905f52546001810154156114f85760198101918385528260205260ff604086205416600381101561186557611856576006820154601e9092015485926001600160a01b031691823b1561080b5760405163d505accf60e01b815233600482015230602480830191909152604482018490523560648083019190915260ff92909216608480830191909152913560a4820152903560c48201528390818160e48183885af1611841575b50506040516323b872dd60e01b8152336004820152306024820152604481019190915291602091839182908160648101610665565b8161184b916133c7565b61072557825f61180c565b6304c51a3360e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b637bb2fa2f60e11b8352600483fd5b50346103205780600319360112610320575f5160206158975f395f51905f5254600181019081546118d8576002015463ffffffff16409081156118c9575580f35b63f7bac7b560e01b8352600483fd5b6309476b0360e41b8352600483fd5b50346103205780600319360112610320575f5160206158975f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346103205780600319360112610320576119396135b1565b50604061195660155f5160206158975f395f51905f52540161377a565b610f81825180926001600160801b03602080926001600160401b038151168552015116910152565b50346103205780600319360112610320575f5160206158575f395f51905f52541580611a90575b15611a53576119f7906119b6614235565b906119bf614302565b906020611a05604051936119d383866133c7565b8385525f368137604051968796600f60f81b885260e08589015260e08801906134a8565b9086820360408801526134a8565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611a3c57505050500390f35b835185528695509381019392810192600101611a2d565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206158f75f395f51905f5254156119a5565b5034610320578060031936011261032057611abf6139d9565b611ac7613a0c565b600160ff195f5160206158b75f395f51905f525416175f5160206158b75f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610320576020366003190112610320576004356001600160401b03811161098e57611b4a903690600401613457565b905f5160206158975f395f51905f525490611b64836136d7565b91611b7260405193846133c7565b838352611b7e846136d7565b602084019490601f19013686376019869201915b818110611be757868587604051928392602084019060208552518091526040840192915b818110611bc4575050500390f35b9193509160208082611bd96001948851613487565b019401910191849392611bb6565b611bf2818386613742565b3587528260205260ff604088205416611c0b8287613766565b6003821015611c1d5752600101611b92565b634e487b7160e01b89526021600452602489fd5b5034610320576020366003190112610320576020906040906001600160a01b03611c59613308565b1681527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0083522054604051908152f35b5034610320578060031936011261032057602060035f5160206158975f395f51905f52540154604051908152f35b5034610320578060031936011261032057611cd06139d9565b5f5160206158175f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610320578060031936011261032057611d396139d9565b5f5160206158d75f395f51905f525460ff8160401c1690811561227a575b5061226b575f5160206158d75f395f51905f52805468ffffffffffffffffff1916680100000000000000051790555f5160206158175f395f51905f5254611db1906001600160a01b0316611da96152bb565b6103816152bb565b611db96135e7565b90611dc2613614565b90611dcb6152bb565b611dd36152bb565b82516001600160401b03811161216e57611dfa5f5160206157f75f395f51905f52546141fd565b601f8111612207575b506020601f821160011461218d57829394829392612182575b50508160011b915f199060031b1c1916175f5160206157f75f395f51905f52555b81516001600160401b03811161216e57611e645f5160206158375f395f51905f52546141fd565b601f8111612101575b50602092601f82116001146120885792829382939261207d575b50508160011b915f199060031b1c1916175f5160206158375f395f51905f52555b805f5160206158575f395f51905f5255805f5160206158f75f395f51905f52555f5160206158975f395f51905f5254611edf613fa1565b80516001830155600282019063ffffffff60208201511669ffffffffffff000000006040845493015160201b169169ffffffffffffffffffff191617179055816020604051611f2d81613375565b82815201528160038201556004810165ffffffffffff19815416905561ffff6004611f58428461529f565b01541661ffff601d8301911661ffff198254161790556004602060018060a01b036006840154166040519283809263313ce56760e01b82525afa801561099257611fa991849161204e575b5061368b565b90816103e8026103e88104830361203a57601e820155816101f402916101f483040361202657601f015560ff60401b195f5160206158d75f395f51905f5254165f5160206158d75f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160058152a180f35b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526011600452602484fd5b612070915060203d602011612076575b61206881836133c7565b810190613672565b5f611fa3565b503d61205e565b015190505f80611e87565b601f198216935f5160206158375f395f51905f52845280842091845b8681106120e957508360019596106120d1575b505050811b015f5160206158375f395f51905f5255611ea8565b01515f1960f88460031b161c191690555f80806120b7565b919260206001819286850151815501940192016120a4565b81811115611e6d575f5160206158375f395f51905f528352612160907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f840160051c9060208510612166575b601f82910160051c03910161401e565b5f611e6d565b859150612150565b634e487b7160e01b82526041600452602482fd5b015190505f80611e1c565b5f5160206157f75f395f51905f52835280832090601f198316845b8181106121ef575095836001959697106121d7575b505050811b015f5160206157f75f395f51905f5255611e3d565b01515f1960f88460031b161c191690555f80806121bd565b9192602060018192868b0151815501940192016121a8565b81811115611e03575f5160206157f75f395f51905f528352612265907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f840160051c906020851061216657601f82910160051c03910161401e565b5f611e03565b63f92ee8a960e01b8152600490fd5b600591506001600160401b031610155f611d57565b5034610320578060031936011261032057602060ff5f5160206158b75f395f51905f5254166040519015158152f35b503461032057610160366003190112610320576122d9613308565b906024356001600160a01b0381169081900361098e576122f76132dc565b926123006132f2565b9360a4359060843560c43560403660e31901126108075761012435976001600160401b038911610803573660238a011215610803578860040135916001600160401b038311612add57366024848c010111612add57610144356001600160401b038111612ad957612375903690600401613457565b9690945f5160206158d75f395f51905f5254986001600160401b0360ff8b60401c16159a1680159081612ad1575b6001149081612ac7575b159081612abe575b50612aaf576123f7908a60016001600160401b03195f5160206158d75f395f51905f525416175f5160206158d75f395f51905f5255612a7f575b611da96152bb565b6123ff6152bb565b6124076135e7565b61240f613614565b906124186152bb565b6124206152bb565b8051906001600160401b038211612a6b578d829161244b5f5160206157f75f395f51905f52546141fd565b601f8111612a07575b50602091601f841160011461298b5792612980575b50508160011b915f199060031b1c1916175f5160206157f75f395f51905f52555b8051906001600160401b03821161296c578c82916124b55f5160206158375f395f51905f52546141fd565b601f8111612908575b50602091601f841160011461288c5792612881575b50508160011b915f199060031b1c1916175f5160206158375f395f51905f52555b8a5f5160206158575f395f51905f52558a5f5160206158f75f395f51905f525561251c6152bb565b6125246152bb565b4215612872578115612863578181111561285457600a6125448383613633565b048310156128455791600493916020938c60409c8d91825161256684826133c7565b601781528881017f726f757465722e73746f726167652e526f75746572563100000000000000000081526125986139d9565b5f19915190200181528760ff199120169a8b5f5160206158975f395f51905f52557f059eb9adf6e95b839d818142ed5bd5e498b6d95138e65c91525e93cc0f0339fc888d8551908152a16125ea613fa1565b8c6001825191015560028d019063ffffffff8a8201511669ffffffffffff000000008684549301518c1b169169ffffffffffffffffffff19161717905582519061263382613346565b8282526001600160a01b039081168983018190529781169390910183905260058c018054919092166001600160a01b03199182161790915560068b01805482168717905560078b018054909116909117905570030000000000000000000000000000000260088a01556126a46135b1565b506509184e72a000858d516126b881613375565b639502f900815201526015890180546001600160c01b0319166d09184e72a000000000009502f9001790558b5183908d906126f281613346565b8381528781018590520152601689015560178801556018870155601d8601805461ffff191661ffff8916179055885163313ce56760e01b815292839182905afa90811561283b579061274a91899161204e575061368b565b806103e8026103e88104820361282757601e850155806101f402906101f4820403612813576127b26127a86127b99798999a600993601f8801558a519461279086613375565b60e43586526101043560208701526024369201613403565b93429636916136ee565b9301614039565b6127c1575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206158d75f395f51905f5254165f5160206158d75f395f51905f52555160018152a180f35b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526011600452602489fd5b87513d8a823e3d90fd5b63145e348f60e01b8b5260048bfd5b6353b2bbed60e01b8b5260048bfd5b63f7ba6bdb60e01b8b5260048bfd5b63b7d0949760e01b8b5260048bfd5b015190505f806124d3565b5f5160206158375f395f51905f5281528281209350601f198516905b8181106128f057509084600195949392106128d8575b505050811b015f5160206158375f395f51905f52556124f4565b01515f1960f88460031b161c191690555f80806128be565b929360206001819287860151815501950193016128a8565b838111156124be575f5160206158375f395f51905f528352612966907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f860160051c906020871061216657601f82910160051c03910161401e565b5f6124be565b634e487b7160e01b8d52604160045260248dfd5b015190505f80612469565b5f5160206157f75f395f51905f5281528281209350601f198516905b8181106129ef57509084600195949392106129d7575b505050811b015f5160206157f75f395f51905f525561248a565b01515f1960f88460031b161c191690555f80806129bd565b929360206001819287860151815501950193016129a7565b83811115612454575f5160206157f75f395f51905f528352612a65907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f860160051c906020871061216657601f82910160051c03910161401e565b5f612454565b634e487b7160e01b8e52604160045260248efd5b600160401b60ff60401b195f5160206158d75f395f51905f525416175f5160206158d75f395f51905f52556123ef565b63f92ee8a960e01b8c5260048cfd5b9050155f6123b5565b303b1591506123ad565b8b91506123a3565b8980fd5b8880fd5b50346103205780600319360112610320577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b395760206040515f5160206158775f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261032057612b5d613308565b906024356001600160401b03811161098e57612b7d903690600401613439565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612d3a575b50612d2b57612bbf6139d9565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596612cf3575b50612c0457634c9c8ce360e01b84526004839052602484fd5b9091845f5160206158775f395f51905f528103612ce15750813b15612ccf575f5160206158775f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015612cb55780836020612ca995519101845af43d15612cad573d91612c8d836133e8565b92612c9b60405194856133c7565b83523d85602085013e615798565b5080f35b606091615798565b50505034612cc05780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011612d23575b81612d0f602093836133c7565b81010312612d1f5751945f612beb565b5f80fd5b3d9150612d02565b63703e46dd60e11b8252600482fd5b5f5160206158775f395f51905f52546001600160a01b0316141590505f612bb2565b5034610320578060031936011261032057612d756139d9565b5f5160206158b75f395f51905f525460ff811615612dcd5760ff19165f5160206158b75f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b503461032057602036600319011261032057612df6613308565b612dfe6139d9565b5f5160206158975f395f51905f525460050180546001600160a01b0319166001600160a01b0390921691909117905580f35b5034610320578060031936011261032057612e496135b1565b506040612e6d612e685f5160206158975f395f51905f5254429061529f565b6135c9565b60208251918051835201516020820152f35b503461032057606036600319011261032057612e996132dc565b612ea1613a0c565b612eaf602435600435613ea9565b506001600160a01b0390811691908116612f375750335b5f5160206158975f395f51905f5254600501546001600160a01b0316823b1561080b57604051635fd142bb60e11b81526001600160a01b03909216600483015260248201526001604482015260648101839052828160848183865af180156109925761097957602082604051908152f35b612ec6565b50346103205780600319360112610320576020610a4261523e565b5034610320578060031936011261032057602060015f5160206158975f395f51905f52540154604051908152f35b50346103205780600319360112610320576020601e5f5160206158975f395f51905f52540154604051908152f35b503461032057602036600319011261032057612fcd6139d9565b600435601e5f5160206158975f395f51905f5254015580f35b503461032057610100366003190112610320576130016132dc565b6064356001600160801b0381169081810361080b578360a43560ff8116810361098e5761302c613a0c565b61303a602435600435613ea9565b6006015490936001600160a01b0390911691823b1561080b576130818480926040518093819263d505accf60e01b835260e4359060c435906084358a30336004890161354f565b038183885af161319f575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af1908115613194578591613175575b5015613166576001600160a01b0390811692908116613160575033905b5f5160206158975f395f51905f5254600501546001600160a01b0316833b1561099d57604051635fd142bb60e11b81526001600160a01b0390931660048401526024830152600160448301526064820152828160848183865af180156109925761097957602082604051908152f35b906130f1565b631e4e7d0960e21b8452600484fd5b61318e915060203d6020116106f6576106e881836133c7565b5f6130d4565b6040513d87823e3d90fd5b816131a9916133c7565b61072557825f61308c565b34612d1f576080366003190112612d1f576131cd6132dc565b6131d56132f2565b906131de613a0c565b6131ec602435600435613a33565b506001600160a01b0390811691908116613279575033915b813b15612d1f57604051635fd142bb60e11b81526001600160a01b039384166004820152921660248301525f60448301819052606483018190528260848183855af191821561326e5760209261325e575b50604051908152f35b5f613268916133c7565b5f613255565b6040513d5f823e3d90fd5b91613204565b34612d1f576020366003190112612d1f576132986139d9565b600435601f5f5160206158975f395f51905f525401555f80f35b34612d1f575f366003190112612d1f57602090601c5f5160206158975f395f51905f525401548152f35b604435906001600160a01b0382168203612d1f57565b606435906001600160a01b0382168203612d1f57565b600435906001600160a01b0382168203612d1f57565b35906001600160a01b0382168203612d1f57565b35906001600160801b0382168203612d1f57565b606081019081106001600160401b0382111761336157604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761336157604052565b61016081019081106001600160401b0382111761336157604052565b608081019081106001600160401b0382111761336157604052565b90601f801991011681019081106001600160401b0382111761336157604052565b6001600160401b03811161336157601f01601f191660200190565b92919261340f826133e8565b9161341d60405193846133c7565b829481845281830111612d1f578281602093845f960137010152565b9080601f83011215612d1f5781602061345493359101613403565b90565b9181601f84011215612d1f578235916001600160401b038311612d1f576020808501948460051b010111612d1f57565b9060038210156134945752565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106134e95750505090565b82516001600160a01b03168452602093840193909201916001016134dc565b9060208251805183520151602082015260018060a01b03602083015116604082015260806060613546604085015160a08386015260a08501906134cc565b93015191015290565b936001600160801b0360c096929998979460ff9460e088019b60018060a01b0316885260018060a01b03166020880152166040860152606085015216608083015260a08201520152565b90816020910312612d1f57518015158103612d1f5790565b604051906135be82613375565b5f6020838281520152565b906040516135d681613375565b602060018294805484520154910152565b604051906135f66040836133c7565b600f82526e2b30b9309722aa24102937baba32b960891b6020830152565b604051906136236040836133c7565b60018252603160f81b6020830152565b9190820391821161364057565b634e487b7160e01b5f52601160045260245ffd5b811561365e570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312612d1f575160ff81168103612d1f5790565b60ff16604d811161364057600a0a90565b8181029291811591840414171561364057565b9190826040910312612d1f576040516136c781613375565b6020808294803584520135910152565b6001600160401b0381116133615760051b60200190565b9291906136fa816136d7565b9361370860405195866133c7565b602085838152019160051b8101928311612d1f57905b82821061372a57505050565b602080916137378461331e565b81520191019061371e565b91908110156137525760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156137525760209160051b010190565b9060405161378781613375565b91546001600160401b038116835260401c6001600160801b03166020830152565b356001600160a01b0381168103612d1f5790565b6137d55f5160206158975f395f51905f5254429061529f565b600301905f5b8381106137eb5750505050600190565b6137f9611058828685613742565b6001600160a01b03165f9081526020849052604090205460ff1615613820576001016137db565b505050505f90565b6040519061383582613346565b5f6040838281528260208201520152565b9060405161385381613346565b60406002829480548452600181015460208501520154910152565b3560ff81168103612d1f5790565b3565ffffffffffff81168103612d1f5790565b6040519061389c826133ac565b5f6060836040516138ac81613375565b83815283602082015281528260208201528160408201520152565b604051906138d4826133ac565b815f81525f60208201526138e661388f565b604082015260606138f561388f565b910152565b90604051918281549182825260208201905f5260205f20925f5b81811061392b575050613929925003836133c7565b565b84546001600160a01b0316835260019485019487945060209093019201613914565b5f1981146136405760010190565b9190820180921161364057565b6001600160a01b031680156139c6575f5160206158175f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206158175f395f51905f52546001600160a01b031633036139f957565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206158b75f395f51905f525416613a2457565b63d93c066560e01b5f5260045ffd5b9190915f5160206158975f395f51905f52549260018401541561008257815f526019840160205260ff60405f205416600381101561349457600203613e9a57815f5260205260405f206040516103008101908082106001600160401b03831117612d1f576102fb916040527f6080806040526102e990816100128239f3fe60806040526004361061029f575f81527f3560e01c806336a52a18146100bb57806342129d00146100b65780635ce6c32760208201527f146100b1578063701da98e146100ac578063704ed542146100a75780637a8e0c60408201527fdd146100a257806391d5a64c1461009d5780639ce110d714610098578063affe60608201527fd0e014610093578063c60496921461008e5763e43f34330361029f5761028a5660808201527f5b610260565b610243565b61021b565b610205565b6101d2565b6101b3565b6160a08201527f0178565b610156565b610119565b346100e7575f3660031901126100e757600260c08201527f5460405160089190911c6001600160a01b03168152602090f35b5f80fd5b918160e08201527f601f840112156100e75782359167ffffffffffffffff83116100e757602083816101008201527f8601950101116100e757565b60403660031901126100e75760043567ffffffff6101208201527fffffffff81116100e7576101459036906004016100eb565b50506024358015156101408201527f1461029f575f80fd5b346100e7575f3660031901126100e757602060ff6002546101608201527f166040519015158152f35b346100e7575f3660031901126100e75760205f54606101808201527f4051908152f35b600435906fffffffffffffffffffffffffffffffff821682036101a08201527f6100e757565b346100e75760203660031901126100e7576101cc610194565b506101c08201527f61029f565b60403660031901126100e75760243567ffffffffffffffff8111616101e08201527ee7576101fe9036906004016100eb565b505061029f565b346100e7576020366102008201527f60031901121561029f575f80fd5b346100e7575f3660031901126100e75760036102208201527f546040516001600160a01b039091168152602090f35b346100e7575f366003196102408201527f01126100e7576020600154604051908152f35b346100e75760a03660031901126102608201527f6100e757610279610194565b5060443560ff81161461029f575f80fd5b3461006102808201527fe7575f3660031901121561029f575f80fd5b63e6fabc0960e01b5f5260205f606102a08201523060481b685afa156100e7575f806204817360e81b01176102c08201527f8051368280378136915af43d5f803e156102e5573d5ff35b3d5ffd00000000006102e08201525ff5908115612d1f5760018060a01b0382165f52601a84016020528060405f2055601b8401613e5f815461394d565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a29190565b630e2637d160e01b5f5260045ffd5b9190915f5160206158975f395f51905f52549260018401541561008257815f526019840160205260ff60405f205416600381101561349457600203613e9a57815f5260205260405f2060405160608101908082106001600160401b03831117612d1f57605a916040527f3d605080600a3d3981f3608060405263e6fabc0960e01b5f5260205f6004817381523060601b6b5afa15604c575f80805136821760208201527f80378136915af43d5f803e156048573d5ff35b3d5ffd5b5f80fd00000000000060408201525ff5908115612d1f5760018060a01b0382165f52601a84016020528060405f2055601b8401613e5f815461394d565b613fa9613828565b5063ffffffff43116140065765ffffffffffff4211613fee57604051613fce81613346565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6306dfcc6560e41b5f5260306004524260245260445ffd5b6306dfcc6560e41b5f5260206004524360245260445ffd5b5f5b82811061402c57505050565b5f82820155600101614020565b9291908051906020810191825170014551231950b75fc4402da1732fc9bebe19821091826141ec575b5050156141dd5751845551600184015580518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff09182156141d057526002830180546001600160a01b0319166001600160a01b039092169190911790555f5b600483018054821015614101575f90815260208082208301546001600160a01b0316825260038501905260409020805460ff191690556001016140c3565b5050925f5b845181101561414a576001906001600160a01b036141248288613766565b5116828060a01b03165f526003840160205260405f208260ff1982541617905501614106565b5092600482018151916001600160401b03831161336157600160401b83116133615760209082548484558085106141b5575b5001905f5260205f205f5b838110614198575050505060050155565b82516001600160a01b031681830155602090920191600101614187565b6141ca90845f528580855f200191039061401e565b5f61417c565b63301164255f526004601cfd5b63375f0aab60e11b5f5260045ffd5b6141f69250615775565b5f80614062565b90600182811c9216801561422b575b602083101461421757565b634e487b7160e01b5f52602260045260245ffd5b91607f169161420c565b604051905f825f5160206157f75f395f51905f525491614254836141fd565b80835292600181169081156142e35750600114614278575b613929925003836133c7565b505f5160206157f75f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b8183106142c75750509060206139299282010161426c565b60209193508060019154838589010152019101909184926142af565b6020925061392994915060ff191682840152151560051b82010161426c565b604051905f825f5160206158375f395f51905f525491614321836141fd565b80835292600181169081156142e3575060011461434457613929925003836133c7565b505f5160206158375f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b8183106143935750509060206139299282010161426c565b602091935080600191548385890101520191019091849261437b565b435f19810193929084116136405760ff164381106143ff57505f925b838110156143db575b505f925050565b80408281036143ed5750600193505050565b156143fa575f19016143cb565b6143d4565b6144099043613633565b926143cb565b903590601e1981360301821215612d1f57018035906001600160401b038211612d1f57602001918160051b36038313612d1f57565b90608081016001614455828461440f565b9050116148ea57614466818361440f565b9050156148c3576144769161440f565b1561375257803590603e1981360301821215612d1f570191614498838061440f565b9190928260051b9383850460201484151715613640576144ba85969495615307565b925f945f97601a60fe19853603019501965b888a101561487b578960051b85013586811215612d1f5785016144ee816137a8565b6001600160a01b03165f90815260208a9052604090205415610064575f608082016001600160801b03614520826152e6565b16151580614868575b614857575b6001600160a01b0361453f846137a8565b604051630427a21d60e11b81526020600482015294911691610124850191906001600160801b03906145be906001600160a01b0361457c8561331e565b16602489015260208401356044890152614598604085016152fa565b151560648901526001600160a01b036145b36060860161331e565b166084890152613332565b1660a48601526145d060a082016152fa565b151560c486015236819003601e190160c082013581811215612d1f578201602081359101936001600160401b038211612d1f576060820236038513612d1f57819061010060e48a015252610144870193905f905b80821061480d5750505060e082013590811215612d1f5701803560208201926001600160401b038211612d1f578160051b908136038513612d1f5791879594936023198785030161010488015281845260208085019385010194935f9160fe19813603015b8484106147005750505050505050602093916001600160801b03848093039316905af190811561326e575f916146ce575b50816020916001938a0152019901986144cc565b90506020813d82116146f8575b816146e8602093836133c7565b81010312612d1f575160016146ba565b3d91506146db565b919395979850919395601f19848203018752873582811215612d1f578301602081013582526001600160a01b036147396040830161331e565b1660208301526060810135603e193683900301811215612d1f578101602081013591906040016001600160401b038311612d1f578236038113612d1f57829060e060408601528160e08601526101008501375f61010083850101526001600160801b036147a860808301613332565b16606084015260a0810135608084015260c081013563ffffffff60e01b8116809103612d1f57836020936147ea60e086956101009560a060019a0152016152fa565b151560c0830152601f80199101160101990197019401918a989796959391614689565b90919460608060019288358152838060a01b0361482c60208b0161331e565b1660208201526001600160801b0361484660408b01613332565b166040820152019601920190614624565b9050614862816152e6565b9061452e565b5061487560a0840161492e565b15614529565b5094935095509550506020925020910135907fd04cd9af813f6f0b56e9411a6ee6a84eb5ac35a96f0c33d2e3a07d65baa8f4186020604051848152a15f5260205260405f2090565b5050507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6306d6c38360e01b5f5260045ffd5b903590601e1981360301821215612d1f57018035906001600160401b038211612d1f57602001918160061b36038313612d1f57565b358015158103612d1f5790565b903590605e1981360301821215612d1f570190565b60c082016001614960828561440f565b905011614ce657614971818461440f565b9050156148c357614982908361440f565b1561375257803590607e1981360301821215612d1f570191606083019060206149aa8361387c565b91019065ffffffffffff806149be8461387c565b1691161015614cd7576149d08261387c565b65ffffffffffff80600286015460201c16911610614cc857614a1665ffffffffffff614a0f614a0982614a028761387c565b168761532c565b9361387c565b168461532c565b1115614cb9576007820154600690920180548435946001600160a01b0394851694604082019391925f91602091166044614a5c83614a54898961493b565b01358b61395b565b604051948593849263095ea7b360e01b84528c600485015260248401525af190811561326e575f91614c9a575b5015614c8b575460405163394f179b60e11b81526001600160a01b03909116600482015260248101959095526020818101356044870152856064815f885af194851561326e575f95614c53575b5090614ae19161493b565b91614aeb8261387c565b9260405193637fbe95b560e01b85526040600486015260a48501918035601e1982360301811215612d1f578101602081359101936001600160401b038211612d1f578160061b36038513612d1f5760606044890152819052869360c485019392915f5b818110614c1b57505050836020959365ffffffffffff829484895f9601356064860152614b84604060018060a01b03920161331e565b16608485015216602483015203925af191821561326e575f92614be5575b50614bac9061387c565b6040519160208301938452604083015265ffffffffffff60d01b9060d01b16606082015260468152614bdf6066826133c7565b51902090565b9091506020813d602011614c13575b81614c01602093836133c7565b81010312612d1f575190614bac614ba2565b3d9150614bf4565b919550919293604080600192838060a01b03614c368a61331e565b168152602089013560208201520196019101918895949392614b4e565b919094506020823d602011614c83575b81614c70602093836133c7565b81010312612d1f57905193614ae1614ad6565b3d9150614c63565b6367b9145160e01b5f5260045ffd5b614cb3915060203d6020116106f6576106e881836133c7565b5f614a89565b6308027f7760e31b5f5260045ffd5b637bde91e760e11b5f5260045ffd5b63087a19ab60e41b5f5260045ffd5b633249ceed60e11b5f5260045ffd5b903590601e1981360301821215612d1f57018035906001600160401b038211612d1f57602001918136038313612d1f57565b9060e081016001614d38828461440f565b905011614f9b57614d49818361440f565b9050156148c357614d599161440f565b1561375257803590609e1981360301821215612d1f57016060810190614d7f828261440f565b905015614f8c5765ffffffffffff600284015460201c1691614da18342613633565b614db060168601548092613654565b9360808401359460018101809111613640578503614f7d57614dd585614ddb9361369c565b9061395b565b93614dea601782015486613633565b4210614f6e57614df990615354565b934260058601541015614f5f57614e4e906040840195614e40614e48614e1f8988614cf5565b9190614e2b888a61440f565b949091614e38368c6136af565b943691613403565b9336916136ee565b92614039565b7fa1a3b42179ad30022438a1ea333b38eaf4a7329beee5e2b8111c0dcd4e08821c6020604051858152a160a082360312612d1f5760405193614e8f856133ac565b614e9936846136af565b8552356001600160401b038111612d1f57614eb79036908401613439565b602085015235906001600160401b038211612d1f570136601f82011215612d1f57614ee99036906020813591016136ee565b91826040820152816060820152519160208351930151906040519283926020840195865260408401526060830160208351919301905f5b818110614f3d57505050815203808252614bdf90602001826133c7565b82516001600160a01b0316855286955060209485019490920191600101614f20565b6333fc8f5160e21b5f5260045ffd5b6372a84ce560e11b5f5260045ffd5b6343d3f5bf60e01b5f5260045ffd5b636c2bf3db60e01b5f5260045ffd5b631d3fc6bf60e21b5f5260045ffd5b909493919365ffffffffffff600283015460201c16614fc9428461532c565b614fe1614fdb6016860154809361369c565b8361395b565b9182841080806151fd575b156151cb575083106151bd57615002908361395b565b106151ae57615012905b8261529f565b94601960f81b5f523060601b60025260165260365f2093600281101561349457806150a3575050600181036150945715613752576150538161505a92614cf5565b3691613403565b916060835103615085578260206134549401516060604083015192015192600181549101549061536f565b632ce466bf60e01b5f5260045ffd5b6360a1ea7760e01b5f5260045ffd5b9193916001146150b65750505050505f90565b6150db90600860048796970154910154906001600160801b038260801c921690615213565b925f9260035f9201915b868110156151a35761510b6105886151056150538460051b860186614cf5565b8661573b565b6001600160a01b0381165f9081526020859052604090205460ff16615136575b506001905b016150e5565b6001600160a01b03165f9081527ff02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c0060205260409020805c1561517b5750600190615130565b94600161518992965d61394d565b93858514615197575f61512b565b50505050505050600190565b505050505050505f90565b63046bb1e560e51b5f5260045ffd5b62f4462b60e01b5f5260045ffd5b93929150504282116151ee57615012926151e6575b5061500c565b90505f6151e0565b6347860b9760e01b5f5260045ffd5b5061520c60188701548561395b565b4210614fec565b6001600160801b0380921602911661522b8183613654565b91811561365e5706156134545760010190565b615246615652565b61524e6156a9565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614bdf60c0826133c7565b906152aa90826156db565b156152b557600f0190565b60090190565b60ff5f5160206158d75f395f51905f525460401c16156152d757565b631afcd79f60e31b5f5260045ffd5b356001600160801b0381168103612d1f5790565b35908115158203612d1f57565b6040519190601f01601f191682016001600160401b03811183821017612d1f57604052565b601661534b6134549365ffffffffffff600285015460201c1690613633565b91015490613654565b61535e42826156db565b156153695760090190565b600f0190565b929391949061537e8587615775565b156155115782156155115770014551231950b75fc4402da1732fc9bebe19831015615511576001169061010e6153b381615307565b9160883684376002600188160160888401538760898401526002840160a984015360aa830186905260ca8301527e300046524f53542d736563703235366b312d4b454343414b3235362d76316360ea8301526303430b6160e51b61010a830152812060cc820181815290600260ec84016001815360428420809318845253604270014551231950b75fc4402da1732fc9bebe19922060801c6001600160401b0360801b8260801b16179070014551231950b75fc4402da1732fc9bebe1990600160c01b9060401c090880156151a35784601b6080945f9660209870014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe19038552018684015280604084015270014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe1903606082015282805260015afa505f51915f5260205260018060a01b0360405f20161490565b5050505050505f90565b61552361388f565b5060028101546005820154604051929091615563916004916001600160a01b031661554d866133ac565b615556826135c9565b86526020860152016138fa565b6040830152606082015290565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116155e7579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561326e575f516001600160a01b038116156155dd57905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156134945780615604575050565b6001810361561b5763f645eedf60e01b5f5260045ffd5b60028103615636575063fce698f760e01b5f5260045260245ffd5b6003146156405750565b6335e2f38360e21b5f5260045260245ffd5b61565a614235565b805190811561566a576020012090565b50505f5160206158575f395f51905f525480156156845790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6156b1614302565b80519081156156c1576020012090565b50505f5160206158f75f395f51905f525480156156845790565b906014600e83015492015480831461572c57818184109311918215911115918190615725575b15615716578261571057505090565b14919050565b634c38ae9560e11b5f5260045ffd5b5081615701565b63f26224af60e01b5f5260045ffd5b815191906041830361576b576157649250602082015190606060408401519301515f1a90615570565b9192909190565b50505f9160029190565b6401000003d01990600790829081818009900908906401000003d0199080091490565b906157bc57508051156157ad57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806157ed575b6157cd575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156157c556fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"1553:47517:165:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;7983:34:30;7979:146;;-1:-1:-1;1553:47517:165;;;;;;;;1052:13:60;1553:47517:165;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;8085:29:30;;1553:47517:165;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;1553:47517:165;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610091575b50361561001a575f80fd5b610022613a0c565b5f5160206158975f395f51905f5254600181015415610082576001600160801b0334161561007357335f908152601a9190910160205260409020541561006457005b63821a62f560e01b5f5260045ffd5b63a1a7c6eb60e01b5f5260045ffd5b63580683f360e01b5f5260045ffd5b5f905f3560e01c9081627a32e7146132b2575080630b9737ce1461327f5780630c18d277146131b45780630d91bf2a14612fe657806311bec80d14612fb3578063188509e914612f8557806328e24b3d14612f575780633644e51514612f3c5780633683c4d214612e7f5780633bd109fa14612e305780633d43b41814612ddc5780633f4ba83a14612d5c5780634f1ef28614612b4857806352d1902d14612ae157806353f7fd48146122be5780635c975abb1461228f5780636c2eb35014611d20578063715018a614611cb757806371a8cf2d14611c895780637ecebe0014611c3157806382bdeaad14611b195780638456cb5914611aa657806384b0196e1461197e57806384d22a4f1461192057806388f50cf0146118e75780638b1edf1e146118885780638c4ace6a146117285780638da5cb5b146116f35780638f381dbe146116ad5780639067088e1461166457806396a2ddfa146116365780639eb939a8146115df578063a5d53a441461155f578063ad3cb1cc14611516578063b24fcac014611080578063baaf020114610f83578063c13911e814610f3f578063c2eb812f14610bb8578063ca1e781914610b68578063cacf66ab14610b30578063d456fd5114610afa578063e3a6684f14610abb578063e6fabc0914610a82578063ed612f8c14610a4a578063edc87225146109f5578063ee32004f1461080f578063f0fd702a146103b7578063f1ef31ec14610389578063f2fde38b1461035c578063f4f20ac0146103235763facd743b0361000f5734610320576020366003190112610320576102e2613308565b60036102fd5f5160206158975f395f51905f5254429061529f565b019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346103205780600319360112610320575f5160206158975f395f51905f5254600701546040516001600160a01b039091168152602090f35b503461032057602036600319011261032057610386610379613308565b6103816139d9565b613968565b80f35b50346103205780600319360112610320576020601f5f5160206158975f395f51905f52540154604051908152f35b503461032057610140366003190112610320576103d2613308565b602435906044356001600160401b03811161080b576103f5903690600401613457565b90916064359060843560ff811681036108075760e4359060ff821682036108035761041e613a0c565b8749156107f4575f5160206158975f395f51905f5254946001860154156107e5576019860196888a528760205260ff60408b20541660038110156107d1576107c257895b80496107b45780830361079d5750895b82811061075657508542116107425760405160208101906001600160fb1b03841161073e576104bd602082610588956105919760051b8091873781010301601f1981018352826133c7565b5190209260018060a01b03861693848c527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408c208054906001820190556040519060208201927f375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b809784528760408401528d6060840152608083015260a08201528860c082015260c0815261055660e0826133c7565b51902061056161523e565b906040519161190160f01b83526002830152602282015260c43591604260a4359220615570565b909291926155f2565b6001600160a01b031681810361072957505086906105c660018060a01b0360068701541695601f601e8201549101549061395b565b93853b156107255760405163d505accf60e01b81526001600160a01b038516600482015230602482015260448101869052606481019190915260ff9190911660848201526101043560a48201526101243560c4820152818160e48183895af1610708575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482019290925291602091839190829081606481015b03925af19081156106fd5784916106ce575b50156106bf5781835260209081526040808420805460ff19166001179055519182527f5c261a095dd5720475295dc06379921c003c22164ee6cae5cf83e76ce0a1b98591a180f35b631e4e7d0960e21b8352600483fd5b6106f0915060203d6020116106f6575b6106e881836133c7565b810190613599565b5f610677565b503d6106de565b6040513d86823e3d90fd5b81610715919493946133c7565b6107215790855f61062a565b8580fd5b8280fd5b637ba5ffb560e01b8952600452602452604487fd5b8b80fd5b632f4aa44f60e21b8a52600486905260248afd5b804980610764838686613742565b3514610771838686613742565b359015610782575050600101610472565b606493508c926306f2f0e760e21b8452600452602452604452fd5b635cfa404d60e11b8b52600483905260245260448afd5b6107bd9061394d565b610462565b6304c51a3360e31b8a5260048afd5b634e487b7160e01b8b52602160045260248bfd5b63580683f360e01b8952600489fd5b637bb2fa2f60e11b8852600488fd5b8780fd5b8680fd5b8380fd5b5034610320576101203660031901126103205761082a6132dc565b6108326132f2565b6084356001600160801b0381169081810361099d578460c43560ff8116810361098e5761085d613a0c565b61086b602435600435613a33565b6006015490936001600160a01b0390911691823b1561080b576108b38480926040518093819263d505accf60e01b8352610104359060e4359060a4358a30336004890161354f565b038183885af16109e0575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156109d55786916109b6575b50156109a7576001600160a01b03908116939081166109a1575033915b833b1561099d57604051635fd142bb60e11b81526001600160a01b03938416600482015292166024830152604482018490526064820152828160848183865af1801561099257610979575b602082604051908152f35b6109848380926133c7565b61098e578161096e565b5080fd5b6040513d85823e3d90fd5b8480fd5b91610923565b631e4e7d0960e21b8552600485fd5b6109cf915060203d6020116106f6576106e881836133c7565b5f610906565b6040513d88823e3d90fd5b816109ea916133c7565b61072557825f6108be565b50346103205780600319360112610320576020610a425f5160206158975f395f51905f525460086004610a28428461529f565b0154910154906001600160801b038260801c921690615213565b604051908152f35b503461032057806003193601126103205760206004610a785f5160206158975f395f51905f5254429061529f565b0154604051908152f35b50346103205780600319360112610320575f5160206158975f395f51905f5254600501546040516001600160a01b039091168152602090f35b5034610320578060031936011261032057604060085f5160206158975f395f51905f525401548151906001600160801b038116825260801c6020820152f35b5034610320578060031936011261032057602065ffffffffffff60045f5160206158975f395f51905f5254015416604051908152f35b5034610320578060031936011261032057602065ffffffffffff60025f5160206158975f395f51905f52540154821c16604051908152f35b5034610320578060031936011261032057610bb4610ba06004610b9a5f5160206158975f395f51905f5254429061529f565b016138fa565b6040519182916020835260208301906134cc565b0390f35b5034610320578060031936011261032057604051610bd581613390565b610bdd613828565b8152604051610beb81613375565b5f8152602081015f90526020820152610c02613828565b6040820152610c0f6138c7565b6060820152604051610c2081613375565b5f80825260208201526080820152610c36613828565b60a08201528160c08201528160e0820152816101008201528161012082015261014001525f5160206158975f395f51905f5254610c716138c7565b50610c7e6009820161551b565b90610c8b600f820161551b565b60088201549260405193610c9e856133ac565b6001600160801b038116855260801c602085015260408401526060830152601b81015490601c810154601d82015461ffff16601e83015490601f8401549260405195610ce987613390565b604051610cf581613346565b60018701548152600287015463ffffffff8116602083015260201c65ffffffffffff166040820152875260405197610d2c89613375565b60038701548952600487015465ffffffffffff1660208a01526020880198895260405190610d5982613346565b60058801546001600160a01b039081168352600689015481166020840152600789015416604080840191909152890191825260608901908152610d9e6015890161377a565b9760808a01988952601601610db290613846565b9160a08a0192835260c08a0193845260e08a019485526101008a019586526101208a019687526101408a019788526040519a8b9a60208c5251805160208d0152602081015163ffffffff1660408d01526040015165ffffffffffff1660608c015251805160808c01526020015165ffffffffffff1660a08b015251600160a01b6001900381511660c08b0152600160a01b6001900360208201511660e08b0152600160a01b600190039060400151166101008a0152516101208901610260905280516001600160801b03166102808a015260208101516001600160801b03166102a08a015260408101516102c08a01608090526103008a01610eb391613508565b90606001519061027f198a8203016102e08b0152610ed091613508565b965180516001600160401b03166101408a0152602001516001600160801b031661016089015251805161018089015260208101516101a0890152604001516101c0880152516101e0870152516102008601525161ffff1661022085015251610240840152516102608301520390f35b50346103205760203660031901126103205760ff604060209260195f5160206158975f395f51905f52540160043582528452205416610f816040518092613487565bf35b5034610320576020366003190112610320576004356001600160401b03811161098e57610fb4903690600401613457565b905f5160206158975f395f51905f525490610fce836136d7565b91610fdc60405193846133c7565b838352610fe8846136d7565b602084019490601f1901368637601a869201915b81811061104757868587604051928392602084019060208552518091526040840192915b81811061102e575050500390f35b8251845285945060209384019390920191600101611020565b8061105d6110586001938588613742565b6137a8565b828060a01b03165f528360205260405f20546110798288613766565b5201610ffc565b5034610320576060366003190112610320576001600160401b036004351161032057610100600435360360031901126103205760026024351015610320576044356001600160401b03811161098e576110dd903690600401613457565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6115075760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206158975f395f51905f5254906001820154156114f85781541561149c575b6003820154604460043501350361148d5765ffffffffffff60048301541665ffffffffffff61117c60246004350161387c565b161061147f5761119160043560040183614444565b926111a660a4600435016004356004016148f9565b808096925060051b046020148515171561146b576111c68560051b615307565b8695865b81881061133657506112fc965060051b9020906111ec60043560040186614950565b6111fb60043560040187614d27565b9061120a60246004350161387c565b9361121960646004350161386e565b9360405194602086019660043560040135885265ffffffffffff60d01b9060d01b16604087015260446004350135604687015260ff60f81b9060f81b1660668601526067850152608784015260a783015260c782015260c7815261127e60e7826133c7565b5190209283600382015565ffffffffffff61129d60246004350161387c565b1665ffffffffffff196004830154161760048201557f7ebe42360bcb182fe0a88148b081e4557c89d09aa6af8307635ac2f83e2aaa656020604051868152a165ffffffffffff6112f160246004350161387c565b169360243591614faa565b1561132757807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b63729d0f6b60e01b8152600490fd5b61134a60a4600435016004356004016148f9565b891015611457578860061b8101358a526019880160205260ff60408b20541660038110156107d1576001036114485760019160209161140d8b8b8e868360061b860101926113978461492e565b156114295760061b85013590525060198c01855260408e20805460ff19166002179055601c8c0180546113c99061394d565b90555b8c7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c9866113f88461492e565b1515926040519060061b8701358152a261492e565b908b60061b01358c52825360218b2081860152019701966111ca565b60409260199160061b87013583520187522060ff1981541690556113cc565b636e83084760e11b8a5260048afd5b634e487b7160e01b8a52603260045260248afd5b634e487b7160e01b86526011600452602486fd5b620725b160ea1b8452600484fd5b63164b6fc360e01b8452600484fd5b6114b96114ad60646004350161386e565b600435600401356143af565b156114e95765ffffffffffff6114d360246004350161387c565b16421161114957631ad8809560e31b8452600484fd5b637b8cb35960e01b8452600484fd5b63580683f360e01b8452600484fd5b633ee5aeb560e01b8352600483fd5b503461032057806003193601126103205750610bb46040516115396040826133c7565b60058152640352e302e360dc1b60208201526040519182916020835260208301906134a8565b50346103205780600319360112610320575f5160206158975f395f51905f52546001600160a01b039060029061159690429061529f565b0154166040519182915f19813b0164ffffffffff16916021830191601f8501903c8082520190604082019182604052602083526115da603f199260608301906134a8565b030190f35b50346103205780600319360112610320576115f8613828565b50606061161560165f5160206158975f395f51905f525401613846565b610f8160405180926040809180518452602081015160208501520151910152565b50346103205780600319360112610320576020601b5f5160206158975f395f51905f52540154604051908152f35b50346103205760203660031901126103205761167e613308565b601a5f5160206158975f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b503461032057602036600319011261032057600435906001600160401b0382116103205760206116e96116e33660048601613457565b906137bc565b6040519015158152f35b50346103205780600319360112610320575f5160206158175f395f51905f52546040516001600160a01b039091168152602090f35b50346103205760a03660031901126103205760043560443560ff8116810361072557611752613a0c565b824915611879575f5160206158975f395f51905f52546001810154156114f85760198101918385528260205260ff604086205416600381101561186557611856576006820154601e9092015485926001600160a01b031691823b1561080b5760405163d505accf60e01b815233600482015230602480830191909152604482018490523560648083019190915260ff92909216608480830191909152913560a4820152903560c48201528390818160e48183885af1611841575b50506040516323b872dd60e01b8152336004820152306024820152604481019190915291602091839182908160648101610665565b8161184b916133c7565b61072557825f61180c565b6304c51a3360e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b637bb2fa2f60e11b8352600483fd5b50346103205780600319360112610320575f5160206158975f395f51905f5254600181019081546118d8576002015463ffffffff16409081156118c9575580f35b63f7bac7b560e01b8352600483fd5b6309476b0360e41b8352600483fd5b50346103205780600319360112610320575f5160206158975f395f51905f5254600601546040516001600160a01b039091168152602090f35b50346103205780600319360112610320576119396135b1565b50604061195660155f5160206158975f395f51905f52540161377a565b610f81825180926001600160801b03602080926001600160401b038151168552015116910152565b50346103205780600319360112610320575f5160206158575f395f51905f52541580611a90575b15611a53576119f7906119b6614235565b906119bf614302565b906020611a05604051936119d383866133c7565b8385525f368137604051968796600f60f81b885260e08589015260e08801906134a8565b9086820360408801526134a8565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611a3c57505050500390f35b835185528695509381019392810192600101611a2d565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206158f75f395f51905f5254156119a5565b5034610320578060031936011261032057611abf6139d9565b611ac7613a0c565b600160ff195f5160206158b75f395f51905f525416175f5160206158b75f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610320576020366003190112610320576004356001600160401b03811161098e57611b4a903690600401613457565b905f5160206158975f395f51905f525490611b64836136d7565b91611b7260405193846133c7565b838352611b7e846136d7565b602084019490601f19013686376019869201915b818110611be757868587604051928392602084019060208552518091526040840192915b818110611bc4575050500390f35b9193509160208082611bd96001948851613487565b019401910191849392611bb6565b611bf2818386613742565b3587528260205260ff604088205416611c0b8287613766565b6003821015611c1d5752600101611b92565b634e487b7160e01b89526021600452602489fd5b5034610320576020366003190112610320576020906040906001600160a01b03611c59613308565b1681527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0083522054604051908152f35b5034610320578060031936011261032057602060035f5160206158975f395f51905f52540154604051908152f35b5034610320578060031936011261032057611cd06139d9565b5f5160206158175f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610320578060031936011261032057611d396139d9565b5f5160206158d75f395f51905f525460ff8160401c1690811561227a575b5061226b575f5160206158d75f395f51905f52805468ffffffffffffffffff1916680100000000000000051790555f5160206158175f395f51905f5254611db1906001600160a01b0316611da96152bb565b6103816152bb565b611db96135e7565b90611dc2613614565b90611dcb6152bb565b611dd36152bb565b82516001600160401b03811161216e57611dfa5f5160206157f75f395f51905f52546141fd565b601f8111612207575b506020601f821160011461218d57829394829392612182575b50508160011b915f199060031b1c1916175f5160206157f75f395f51905f52555b81516001600160401b03811161216e57611e645f5160206158375f395f51905f52546141fd565b601f8111612101575b50602092601f82116001146120885792829382939261207d575b50508160011b915f199060031b1c1916175f5160206158375f395f51905f52555b805f5160206158575f395f51905f5255805f5160206158f75f395f51905f52555f5160206158975f395f51905f5254611edf613fa1565b80516001830155600282019063ffffffff60208201511669ffffffffffff000000006040845493015160201b169169ffffffffffffffffffff191617179055816020604051611f2d81613375565b82815201528160038201556004810165ffffffffffff19815416905561ffff6004611f58428461529f565b01541661ffff601d8301911661ffff198254161790556004602060018060a01b036006840154166040519283809263313ce56760e01b82525afa801561099257611fa991849161204e575b5061368b565b90816103e8026103e88104830361203a57601e820155816101f402916101f483040361202657601f015560ff60401b195f5160206158d75f395f51905f5254165f5160206158d75f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160058152a180f35b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526011600452602484fd5b612070915060203d602011612076575b61206881836133c7565b810190613672565b5f611fa3565b503d61205e565b015190505f80611e87565b601f198216935f5160206158375f395f51905f52845280842091845b8681106120e957508360019596106120d1575b505050811b015f5160206158375f395f51905f5255611ea8565b01515f1960f88460031b161c191690555f80806120b7565b919260206001819286850151815501940192016120a4565b81811115611e6d575f5160206158375f395f51905f528352612160907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f840160051c9060208510612166575b601f82910160051c03910161401e565b5f611e6d565b859150612150565b634e487b7160e01b82526041600452602482fd5b015190505f80611e1c565b5f5160206157f75f395f51905f52835280832090601f198316845b8181106121ef575095836001959697106121d7575b505050811b015f5160206157f75f395f51905f5255611e3d565b01515f1960f88460031b161c191690555f80806121bd565b9192602060018192868b0151815501940192016121a8565b81811115611e03575f5160206157f75f395f51905f528352612265907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f840160051c906020851061216657601f82910160051c03910161401e565b5f611e03565b63f92ee8a960e01b8152600490fd5b600591506001600160401b031610155f611d57565b5034610320578060031936011261032057602060ff5f5160206158b75f395f51905f5254166040519015158152f35b503461032057610160366003190112610320576122d9613308565b906024356001600160a01b0381169081900361098e576122f76132dc565b926123006132f2565b9360a4359060843560c43560403660e31901126108075761012435976001600160401b038911610803573660238a011215610803578860040135916001600160401b038311612add57366024848c010111612add57610144356001600160401b038111612ad957612375903690600401613457565b9690945f5160206158d75f395f51905f5254986001600160401b0360ff8b60401c16159a1680159081612ad1575b6001149081612ac7575b159081612abe575b50612aaf576123f7908a60016001600160401b03195f5160206158d75f395f51905f525416175f5160206158d75f395f51905f5255612a7f575b611da96152bb565b6123ff6152bb565b6124076135e7565b61240f613614565b906124186152bb565b6124206152bb565b8051906001600160401b038211612a6b578d829161244b5f5160206157f75f395f51905f52546141fd565b601f8111612a07575b50602091601f841160011461298b5792612980575b50508160011b915f199060031b1c1916175f5160206157f75f395f51905f52555b8051906001600160401b03821161296c578c82916124b55f5160206158375f395f51905f52546141fd565b601f8111612908575b50602091601f841160011461288c5792612881575b50508160011b915f199060031b1c1916175f5160206158375f395f51905f52555b8a5f5160206158575f395f51905f52558a5f5160206158f75f395f51905f525561251c6152bb565b6125246152bb565b4215612872578115612863578181111561285457600a6125448383613633565b048310156128455791600493916020938c60409c8d91825161256684826133c7565b601781528881017f726f757465722e73746f726167652e526f75746572563100000000000000000081526125986139d9565b5f19915190200181528760ff199120169a8b5f5160206158975f395f51905f52557f059eb9adf6e95b839d818142ed5bd5e498b6d95138e65c91525e93cc0f0339fc888d8551908152a16125ea613fa1565b8c6001825191015560028d019063ffffffff8a8201511669ffffffffffff000000008684549301518c1b169169ffffffffffffffffffff19161717905582519061263382613346565b8282526001600160a01b039081168983018190529781169390910183905260058c018054919092166001600160a01b03199182161790915560068b01805482168717905560078b018054909116909117905570030000000000000000000000000000000260088a01556126a46135b1565b506509184e72a000858d516126b881613375565b639502f900815201526015890180546001600160c01b0319166d09184e72a000000000009502f9001790558b5183908d906126f281613346565b8381528781018590520152601689015560178801556018870155601d8601805461ffff191661ffff8916179055885163313ce56760e01b815292839182905afa90811561283b579061274a91899161204e575061368b565b806103e8026103e88104820361282757601e850155806101f402906101f4820403612813576127b26127a86127b99798999a600993601f8801558a519461279086613375565b60e43586526101043560208701526024369201613403565b93429636916136ee565b9301614039565b6127c1575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206158d75f395f51905f5254165f5160206158d75f395f51905f52555160018152a180f35b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526011600452602489fd5b87513d8a823e3d90fd5b63145e348f60e01b8b5260048bfd5b6353b2bbed60e01b8b5260048bfd5b63f7ba6bdb60e01b8b5260048bfd5b63b7d0949760e01b8b5260048bfd5b015190505f806124d3565b5f5160206158375f395f51905f5281528281209350601f198516905b8181106128f057509084600195949392106128d8575b505050811b015f5160206158375f395f51905f52556124f4565b01515f1960f88460031b161c191690555f80806128be565b929360206001819287860151815501950193016128a8565b838111156124be575f5160206158375f395f51905f528352612966907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f860160051c906020871061216657601f82910160051c03910161401e565b5f6124be565b634e487b7160e01b8d52604160045260248dfd5b015190505f80612469565b5f5160206157f75f395f51905f5281528281209350601f198516905b8181106129ef57509084600195949392106129d7575b505050811b015f5160206157f75f395f51905f525561248a565b01515f1960f88460031b161c191690555f80806129bd565b929360206001819287860151815501950193016129a7565b83811115612454575f5160206157f75f395f51905f528352612a65907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f860160051c906020871061216657601f82910160051c03910161401e565b5f612454565b634e487b7160e01b8e52604160045260248efd5b600160401b60ff60401b195f5160206158d75f395f51905f525416175f5160206158d75f395f51905f52556123ef565b63f92ee8a960e01b8c5260048cfd5b9050155f6123b5565b303b1591506123ad565b8b91506123a3565b8980fd5b8880fd5b50346103205780600319360112610320577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b395760206040515f5160206158775f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261032057612b5d613308565b906024356001600160401b03811161098e57612b7d903690600401613439565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612d3a575b50612d2b57612bbf6139d9565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596612cf3575b50612c0457634c9c8ce360e01b84526004839052602484fd5b9091845f5160206158775f395f51905f528103612ce15750813b15612ccf575f5160206158775f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015612cb55780836020612ca995519101845af43d15612cad573d91612c8d836133e8565b92612c9b60405194856133c7565b83523d85602085013e615798565b5080f35b606091615798565b50505034612cc05780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011612d23575b81612d0f602093836133c7565b81010312612d1f5751945f612beb565b5f80fd5b3d9150612d02565b63703e46dd60e11b8252600482fd5b5f5160206158775f395f51905f52546001600160a01b0316141590505f612bb2565b5034610320578060031936011261032057612d756139d9565b5f5160206158b75f395f51905f525460ff811615612dcd5760ff19165f5160206158b75f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b503461032057602036600319011261032057612df6613308565b612dfe6139d9565b5f5160206158975f395f51905f525460050180546001600160a01b0319166001600160a01b0390921691909117905580f35b5034610320578060031936011261032057612e496135b1565b506040612e6d612e685f5160206158975f395f51905f5254429061529f565b6135c9565b60208251918051835201516020820152f35b503461032057606036600319011261032057612e996132dc565b612ea1613a0c565b612eaf602435600435613ea9565b506001600160a01b0390811691908116612f375750335b5f5160206158975f395f51905f5254600501546001600160a01b0316823b1561080b57604051635fd142bb60e11b81526001600160a01b03909216600483015260248201526001604482015260648101839052828160848183865af180156109925761097957602082604051908152f35b612ec6565b50346103205780600319360112610320576020610a4261523e565b5034610320578060031936011261032057602060015f5160206158975f395f51905f52540154604051908152f35b50346103205780600319360112610320576020601e5f5160206158975f395f51905f52540154604051908152f35b503461032057602036600319011261032057612fcd6139d9565b600435601e5f5160206158975f395f51905f5254015580f35b503461032057610100366003190112610320576130016132dc565b6064356001600160801b0381169081810361080b578360a43560ff8116810361098e5761302c613a0c565b61303a602435600435613ea9565b6006015490936001600160a01b0390911691823b1561080b576130818480926040518093819263d505accf60e01b835260e4359060c435906084358a30336004890161354f565b038183885af161319f575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af1908115613194578591613175575b5015613166576001600160a01b0390811692908116613160575033905b5f5160206158975f395f51905f5254600501546001600160a01b0316833b1561099d57604051635fd142bb60e11b81526001600160a01b0390931660048401526024830152600160448301526064820152828160848183865af180156109925761097957602082604051908152f35b906130f1565b631e4e7d0960e21b8452600484fd5b61318e915060203d6020116106f6576106e881836133c7565b5f6130d4565b6040513d87823e3d90fd5b816131a9916133c7565b61072557825f61308c565b34612d1f576080366003190112612d1f576131cd6132dc565b6131d56132f2565b906131de613a0c565b6131ec602435600435613a33565b506001600160a01b0390811691908116613279575033915b813b15612d1f57604051635fd142bb60e11b81526001600160a01b039384166004820152921660248301525f60448301819052606483018190528260848183855af191821561326e5760209261325e575b50604051908152f35b5f613268916133c7565b5f613255565b6040513d5f823e3d90fd5b91613204565b34612d1f576020366003190112612d1f576132986139d9565b600435601f5f5160206158975f395f51905f525401555f80f35b34612d1f575f366003190112612d1f57602090601c5f5160206158975f395f51905f525401548152f35b604435906001600160a01b0382168203612d1f57565b606435906001600160a01b0382168203612d1f57565b600435906001600160a01b0382168203612d1f57565b35906001600160a01b0382168203612d1f57565b35906001600160801b0382168203612d1f57565b606081019081106001600160401b0382111761336157604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761336157604052565b61016081019081106001600160401b0382111761336157604052565b608081019081106001600160401b0382111761336157604052565b90601f801991011681019081106001600160401b0382111761336157604052565b6001600160401b03811161336157601f01601f191660200190565b92919261340f826133e8565b9161341d60405193846133c7565b829481845281830111612d1f578281602093845f960137010152565b9080601f83011215612d1f5781602061345493359101613403565b90565b9181601f84011215612d1f578235916001600160401b038311612d1f576020808501948460051b010111612d1f57565b9060038210156134945752565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106134e95750505090565b82516001600160a01b03168452602093840193909201916001016134dc565b9060208251805183520151602082015260018060a01b03602083015116604082015260806060613546604085015160a08386015260a08501906134cc565b93015191015290565b936001600160801b0360c096929998979460ff9460e088019b60018060a01b0316885260018060a01b03166020880152166040860152606085015216608083015260a08201520152565b90816020910312612d1f57518015158103612d1f5790565b604051906135be82613375565b5f6020838281520152565b906040516135d681613375565b602060018294805484520154910152565b604051906135f66040836133c7565b600f82526e2b30b9309722aa24102937baba32b960891b6020830152565b604051906136236040836133c7565b60018252603160f81b6020830152565b9190820391821161364057565b634e487b7160e01b5f52601160045260245ffd5b811561365e570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312612d1f575160ff81168103612d1f5790565b60ff16604d811161364057600a0a90565b8181029291811591840414171561364057565b9190826040910312612d1f576040516136c781613375565b6020808294803584520135910152565b6001600160401b0381116133615760051b60200190565b9291906136fa816136d7565b9361370860405195866133c7565b602085838152019160051b8101928311612d1f57905b82821061372a57505050565b602080916137378461331e565b81520191019061371e565b91908110156137525760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156137525760209160051b010190565b9060405161378781613375565b91546001600160401b038116835260401c6001600160801b03166020830152565b356001600160a01b0381168103612d1f5790565b6137d55f5160206158975f395f51905f5254429061529f565b600301905f5b8381106137eb5750505050600190565b6137f9611058828685613742565b6001600160a01b03165f9081526020849052604090205460ff1615613820576001016137db565b505050505f90565b6040519061383582613346565b5f6040838281528260208201520152565b9060405161385381613346565b60406002829480548452600181015460208501520154910152565b3560ff81168103612d1f5790565b3565ffffffffffff81168103612d1f5790565b6040519061389c826133ac565b5f6060836040516138ac81613375565b83815283602082015281528260208201528160408201520152565b604051906138d4826133ac565b815f81525f60208201526138e661388f565b604082015260606138f561388f565b910152565b90604051918281549182825260208201905f5260205f20925f5b81811061392b575050613929925003836133c7565b565b84546001600160a01b0316835260019485019487945060209093019201613914565b5f1981146136405760010190565b9190820180921161364057565b6001600160a01b031680156139c6575f5160206158175f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206158175f395f51905f52546001600160a01b031633036139f957565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206158b75f395f51905f525416613a2457565b63d93c066560e01b5f5260045ffd5b9190915f5160206158975f395f51905f52549260018401541561008257815f526019840160205260ff60405f205416600381101561349457600203613e9a57815f5260205260405f206040516103008101908082106001600160401b03831117612d1f576102fb916040527f6080806040526102e990816100128239f3fe60806040526004361061029f575f81527f3560e01c806336a52a18146100bb57806342129d00146100b65780635ce6c32760208201527f146100b1578063701da98e146100ac578063704ed542146100a75780637a8e0c60408201527fdd146100a257806391d5a64c1461009d5780639ce110d714610098578063affe60608201527fd0e014610093578063c60496921461008e5763e43f34330361029f5761028a5660808201527f5b610260565b610243565b61021b565b610205565b6101d2565b6101b3565b6160a08201527f0178565b610156565b610119565b346100e7575f3660031901126100e757600260c08201527f5460405160089190911c6001600160a01b03168152602090f35b5f80fd5b918160e08201527f601f840112156100e75782359167ffffffffffffffff83116100e757602083816101008201527f8601950101116100e757565b60403660031901126100e75760043567ffffffff6101208201527fffffffff81116100e7576101459036906004016100eb565b50506024358015156101408201527f1461029f575f80fd5b346100e7575f3660031901126100e757602060ff6002546101608201527f166040519015158152f35b346100e7575f3660031901126100e75760205f54606101808201527f4051908152f35b600435906fffffffffffffffffffffffffffffffff821682036101a08201527f6100e757565b346100e75760203660031901126100e7576101cc610194565b506101c08201527f61029f565b60403660031901126100e75760243567ffffffffffffffff8111616101e08201527ee7576101fe9036906004016100eb565b505061029f565b346100e7576020366102008201527f60031901121561029f575f80fd5b346100e7575f3660031901126100e75760036102208201527f546040516001600160a01b039091168152602090f35b346100e7575f366003196102408201527f01126100e7576020600154604051908152f35b346100e75760a03660031901126102608201527f6100e757610279610194565b5060443560ff81161461029f575f80fd5b3461006102808201527fe7575f3660031901121561029f575f80fd5b63e6fabc0960e01b5f5260205f606102a08201523060481b685afa156100e7575f806204817360e81b01176102c08201527f8051368280378136915af43d5f803e156102e5573d5ff35b3d5ffd00000000006102e08201525ff5908115612d1f5760018060a01b0382165f52601a84016020528060405f2055601b8401613e5f815461394d565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a29190565b630e2637d160e01b5f5260045ffd5b9190915f5160206158975f395f51905f52549260018401541561008257815f526019840160205260ff60405f205416600381101561349457600203613e9a57815f5260205260405f2060405160608101908082106001600160401b03831117612d1f57605a916040527f3d605080600a3d3981f3608060405263e6fabc0960e01b5f5260205f6004817381523060601b6b5afa15604c575f80805136821760208201527f80378136915af43d5f803e156048573d5ff35b3d5ffd5b5f80fd00000000000060408201525ff5908115612d1f5760018060a01b0382165f52601a84016020528060405f2055601b8401613e5f815461394d565b613fa9613828565b5063ffffffff43116140065765ffffffffffff4211613fee57604051613fce81613346565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6306dfcc6560e41b5f5260306004524260245260445ffd5b6306dfcc6560e41b5f5260206004524360245260445ffd5b5f5b82811061402c57505050565b5f82820155600101614020565b9291908051906020810191825170014551231950b75fc4402da1732fc9bebe19821091826141ec575b5050156141dd5751845551600184015580518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff09182156141d057526002830180546001600160a01b0319166001600160a01b039092169190911790555f5b600483018054821015614101575f90815260208082208301546001600160a01b0316825260038501905260409020805460ff191690556001016140c3565b5050925f5b845181101561414a576001906001600160a01b036141248288613766565b5116828060a01b03165f526003840160205260405f208260ff1982541617905501614106565b5092600482018151916001600160401b03831161336157600160401b83116133615760209082548484558085106141b5575b5001905f5260205f205f5b838110614198575050505060050155565b82516001600160a01b031681830155602090920191600101614187565b6141ca90845f528580855f200191039061401e565b5f61417c565b63301164255f526004601cfd5b63375f0aab60e11b5f5260045ffd5b6141f69250615775565b5f80614062565b90600182811c9216801561422b575b602083101461421757565b634e487b7160e01b5f52602260045260245ffd5b91607f169161420c565b604051905f825f5160206157f75f395f51905f525491614254836141fd565b80835292600181169081156142e35750600114614278575b613929925003836133c7565b505f5160206157f75f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b8183106142c75750509060206139299282010161426c565b60209193508060019154838589010152019101909184926142af565b6020925061392994915060ff191682840152151560051b82010161426c565b604051905f825f5160206158375f395f51905f525491614321836141fd565b80835292600181169081156142e3575060011461434457613929925003836133c7565b505f5160206158375f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b8183106143935750509060206139299282010161426c565b602091935080600191548385890101520191019091849261437b565b435f19810193929084116136405760ff164381106143ff57505f925b838110156143db575b505f925050565b80408281036143ed5750600193505050565b156143fa575f19016143cb565b6143d4565b6144099043613633565b926143cb565b903590601e1981360301821215612d1f57018035906001600160401b038211612d1f57602001918160051b36038313612d1f57565b90608081016001614455828461440f565b9050116148ea57614466818361440f565b9050156148c3576144769161440f565b1561375257803590603e1981360301821215612d1f570191614498838061440f565b9190928260051b9383850460201484151715613640576144ba85969495615307565b925f945f97601a60fe19853603019501965b888a101561487b578960051b85013586811215612d1f5785016144ee816137a8565b6001600160a01b03165f90815260208a9052604090205415610064575f608082016001600160801b03614520826152e6565b16151580614868575b614857575b6001600160a01b0361453f846137a8565b604051630427a21d60e11b81526020600482015294911691610124850191906001600160801b03906145be906001600160a01b0361457c8561331e565b16602489015260208401356044890152614598604085016152fa565b151560648901526001600160a01b036145b36060860161331e565b166084890152613332565b1660a48601526145d060a082016152fa565b151560c486015236819003601e190160c082013581811215612d1f578201602081359101936001600160401b038211612d1f576060820236038513612d1f57819061010060e48a015252610144870193905f905b80821061480d5750505060e082013590811215612d1f5701803560208201926001600160401b038211612d1f578160051b908136038513612d1f5791879594936023198785030161010488015281845260208085019385010194935f9160fe19813603015b8484106147005750505050505050602093916001600160801b03848093039316905af190811561326e575f916146ce575b50816020916001938a0152019901986144cc565b90506020813d82116146f8575b816146e8602093836133c7565b81010312612d1f575160016146ba565b3d91506146db565b919395979850919395601f19848203018752873582811215612d1f578301602081013582526001600160a01b036147396040830161331e565b1660208301526060810135603e193683900301811215612d1f578101602081013591906040016001600160401b038311612d1f578236038113612d1f57829060e060408601528160e08601526101008501375f61010083850101526001600160801b036147a860808301613332565b16606084015260a0810135608084015260c081013563ffffffff60e01b8116809103612d1f57836020936147ea60e086956101009560a060019a0152016152fa565b151560c0830152601f80199101160101990197019401918a989796959391614689565b90919460608060019288358152838060a01b0361482c60208b0161331e565b1660208201526001600160801b0361484660408b01613332565b166040820152019601920190614624565b9050614862816152e6565b9061452e565b5061487560a0840161492e565b15614529565b5094935095509550506020925020910135907fd04cd9af813f6f0b56e9411a6ee6a84eb5ac35a96f0c33d2e3a07d65baa8f4186020604051848152a15f5260205260405f2090565b5050507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6306d6c38360e01b5f5260045ffd5b903590601e1981360301821215612d1f57018035906001600160401b038211612d1f57602001918160061b36038313612d1f57565b358015158103612d1f5790565b903590605e1981360301821215612d1f570190565b60c082016001614960828561440f565b905011614ce657614971818461440f565b9050156148c357614982908361440f565b1561375257803590607e1981360301821215612d1f570191606083019060206149aa8361387c565b91019065ffffffffffff806149be8461387c565b1691161015614cd7576149d08261387c565b65ffffffffffff80600286015460201c16911610614cc857614a1665ffffffffffff614a0f614a0982614a028761387c565b168761532c565b9361387c565b168461532c565b1115614cb9576007820154600690920180548435946001600160a01b0394851694604082019391925f91602091166044614a5c83614a54898961493b565b01358b61395b565b604051948593849263095ea7b360e01b84528c600485015260248401525af190811561326e575f91614c9a575b5015614c8b575460405163394f179b60e11b81526001600160a01b03909116600482015260248101959095526020818101356044870152856064815f885af194851561326e575f95614c53575b5090614ae19161493b565b91614aeb8261387c565b9260405193637fbe95b560e01b85526040600486015260a48501918035601e1982360301811215612d1f578101602081359101936001600160401b038211612d1f578160061b36038513612d1f5760606044890152819052869360c485019392915f5b818110614c1b57505050836020959365ffffffffffff829484895f9601356064860152614b84604060018060a01b03920161331e565b16608485015216602483015203925af191821561326e575f92614be5575b50614bac9061387c565b6040519160208301938452604083015265ffffffffffff60d01b9060d01b16606082015260468152614bdf6066826133c7565b51902090565b9091506020813d602011614c13575b81614c01602093836133c7565b81010312612d1f575190614bac614ba2565b3d9150614bf4565b919550919293604080600192838060a01b03614c368a61331e565b168152602089013560208201520196019101918895949392614b4e565b919094506020823d602011614c83575b81614c70602093836133c7565b81010312612d1f57905193614ae1614ad6565b3d9150614c63565b6367b9145160e01b5f5260045ffd5b614cb3915060203d6020116106f6576106e881836133c7565b5f614a89565b6308027f7760e31b5f5260045ffd5b637bde91e760e11b5f5260045ffd5b63087a19ab60e41b5f5260045ffd5b633249ceed60e11b5f5260045ffd5b903590601e1981360301821215612d1f57018035906001600160401b038211612d1f57602001918136038313612d1f57565b9060e081016001614d38828461440f565b905011614f9b57614d49818361440f565b9050156148c357614d599161440f565b1561375257803590609e1981360301821215612d1f57016060810190614d7f828261440f565b905015614f8c5765ffffffffffff600284015460201c1691614da18342613633565b614db060168601548092613654565b9360808401359460018101809111613640578503614f7d57614dd585614ddb9361369c565b9061395b565b93614dea601782015486613633565b4210614f6e57614df990615354565b934260058601541015614f5f57614e4e906040840195614e40614e48614e1f8988614cf5565b9190614e2b888a61440f565b949091614e38368c6136af565b943691613403565b9336916136ee565b92614039565b7fa1a3b42179ad30022438a1ea333b38eaf4a7329beee5e2b8111c0dcd4e08821c6020604051858152a160a082360312612d1f5760405193614e8f856133ac565b614e9936846136af565b8552356001600160401b038111612d1f57614eb79036908401613439565b602085015235906001600160401b038211612d1f570136601f82011215612d1f57614ee99036906020813591016136ee565b91826040820152816060820152519160208351930151906040519283926020840195865260408401526060830160208351919301905f5b818110614f3d57505050815203808252614bdf90602001826133c7565b82516001600160a01b0316855286955060209485019490920191600101614f20565b6333fc8f5160e21b5f5260045ffd5b6372a84ce560e11b5f5260045ffd5b6343d3f5bf60e01b5f5260045ffd5b636c2bf3db60e01b5f5260045ffd5b631d3fc6bf60e21b5f5260045ffd5b909493919365ffffffffffff600283015460201c16614fc9428461532c565b614fe1614fdb6016860154809361369c565b8361395b565b9182841080806151fd575b156151cb575083106151bd57615002908361395b565b106151ae57615012905b8261529f565b94601960f81b5f523060601b60025260165260365f2093600281101561349457806150a3575050600181036150945715613752576150538161505a92614cf5565b3691613403565b916060835103615085578260206134549401516060604083015192015192600181549101549061536f565b632ce466bf60e01b5f5260045ffd5b6360a1ea7760e01b5f5260045ffd5b9193916001146150b65750505050505f90565b6150db90600860048796970154910154906001600160801b038260801c921690615213565b925f9260035f9201915b868110156151a35761510b6105886151056150538460051b860186614cf5565b8661573b565b6001600160a01b0381165f9081526020859052604090205460ff16615136575b506001905b016150e5565b6001600160a01b03165f9081527ff02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c0060205260409020805c1561517b5750600190615130565b94600161518992965d61394d565b93858514615197575f61512b565b50505050505050600190565b505050505050505f90565b63046bb1e560e51b5f5260045ffd5b62f4462b60e01b5f5260045ffd5b93929150504282116151ee57615012926151e6575b5061500c565b90505f6151e0565b6347860b9760e01b5f5260045ffd5b5061520c60188701548561395b565b4210614fec565b6001600160801b0380921602911661522b8183613654565b91811561365e5706156134545760010190565b615246615652565b61524e6156a9565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614bdf60c0826133c7565b906152aa90826156db565b156152b557600f0190565b60090190565b60ff5f5160206158d75f395f51905f525460401c16156152d757565b631afcd79f60e31b5f5260045ffd5b356001600160801b0381168103612d1f5790565b35908115158203612d1f57565b6040519190601f01601f191682016001600160401b03811183821017612d1f57604052565b601661534b6134549365ffffffffffff600285015460201c1690613633565b91015490613654565b61535e42826156db565b156153695760090190565b600f0190565b929391949061537e8587615775565b156155115782156155115770014551231950b75fc4402da1732fc9bebe19831015615511576001169061010e6153b381615307565b9160883684376002600188160160888401538760898401526002840160a984015360aa830186905260ca8301527e300046524f53542d736563703235366b312d4b454343414b3235362d76316360ea8301526303430b6160e51b61010a830152812060cc820181815290600260ec84016001815360428420809318845253604270014551231950b75fc4402da1732fc9bebe19922060801c6001600160401b0360801b8260801b16179070014551231950b75fc4402da1732fc9bebe1990600160c01b9060401c090880156151a35784601b6080945f9660209870014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe19038552018684015280604084015270014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe1903606082015282805260015afa505f51915f5260205260018060a01b0360405f20161490565b5050505050505f90565b61552361388f565b5060028101546005820154604051929091615563916004916001600160a01b031661554d866133ac565b615556826135c9565b86526020860152016138fa565b6040830152606082015290565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116155e7579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561326e575f516001600160a01b038116156155dd57905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156134945780615604575050565b6001810361561b5763f645eedf60e01b5f5260045ffd5b60028103615636575063fce698f760e01b5f5260045260245ffd5b6003146156405750565b6335e2f38360e21b5f5260045260245ffd5b61565a614235565b805190811561566a576020012090565b50505f5160206158575f395f51905f525480156156845790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6156b1614302565b80519081156156c1576020012090565b50505f5160206158f75f395f51905f525480156156845790565b906014600e83015492015480831461572c57818184109311918215911115918190615725575b15615716578261571057505090565b14919050565b634c38ae9560e11b5f5260045ffd5b5081615701565b63f26224af60e01b5f5260045ffd5b815191906041830361576b576157649250602082015190606060408401519301515f1a90615570565b9192909190565b50505f9160029190565b6401000003d01990600790829081818009900908906401000003d0199080091490565b906157bc57508051156157ad57602081519101fd5b63d6bda27560e01b5f5260045ffd5b815115806157ed575b6157cd575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156157c556fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101","sourceMap":"1553:47517:165:-:0;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;1944:72:37;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47517:165;48775:19;;;1553:47517;48775:38;1553:47517;;-1:-1:-1;;;;;48884:9:165;1553:47517;48912:9;1553:47517;;48972:10;-1:-1:-1;1553:47517:165;;;49000:28;;;;;1553:47517;;;;;;49000:42;1553:47517;;;;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;14987:40;28092:37:169;-1:-1:-1;;;;;;;;;;;1553:47517:165;28113:15:169;28092:37;;:::i;:::-;14987:40:165;:52;1553:47517;;;;;;-1:-1:-1;1553:47517:165;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;13111:34;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;2357:1:29;1553:47517:165;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;1553:47517:165;;;;;;;;;;;;;;;;19900:52;-1:-1:-1;;;;;;;;;;;1553:47517:165;19900:52;1553:47517;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;25864:11:165;;:16;1553:47517;;-1:-1:-1;;;;;;;;;;;1553:47517:165;25960:19;1553:47517;25960:19;;1553:47517;25960:38;1553:47517;;26053:19;;;1553:47517;;;;;;;;;;;;;;;;;;;;;26163:29;26233:27;;;;;26375:39;;;1553:47517;;26495:13;;26510:22;;;;;;26789:15;;;:28;1553:47517;;;;;27053:29;;;-1:-1:-1;;;;;2670:66:165;;;;27053:29;1553:47517;2670:66;7051:25:77;2670:66:165;7105:8:77;2670:66:165;;;;;;;;;27053:29;;1553:47517;;27053:29;;;;;;:::i;:::-;1553:47517;27043:40;;1553:47517;;;;;;;;;;;;972:64:36;1553:47517:165;;;;;;;;;;;;;;;26902:261;1553:47517;26902:261;;1553:47517;2670:66;1553:47517;;2670:66;1553:47517;2670:66;;1553:47517;2670:66;1553:47517;2670:66;;1553:47517;;2670:66;;1553:47517;;2670:66;;1553:47517;2670:66;1553:47517;2670:66;;1553:47517;;26902:261;;;1553:47517;26902:261;;:::i;:::-;1553:47517;26879:294;;3980:23:40;;:::i;:::-;3993:249:80;1553:47517:165;3993:249:80;;-1:-1:-1;;;3993:249:80;;;;;;;;;;1553:47517:165;;;3993:249:80;1553:47517:165;;3993:249:80;;7051:25:77;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47517:165;27307:20;;;2670:66;;1553:47517;;;;27485:100;1553:47517;;;;;27415:32;;;1553:47517;;27485:48;27536:49;27485:48;;;1553:47517;27536:49;;1553:47517;27485:100;;:::i;:::-;27599:77;;;;;;1553:47517;;-1:-1:-1;;;27599:77:165;;-1:-1:-1;;;;;1553:47517:165;;;27599:77;;1553:47517;27639:4;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27599:77;;;;;26490:223;-1:-1:-1;1553:47517:165;;-1:-1:-1;;;27712:57:165;;-1:-1:-1;;;;;1553:47517:165;;;;27712:57;;1553:47517;27639:4;1553:47517;;;;;;;;;;;;;;;;;;;;;;;27712:57;;;;;;;;;;;;;;26490:223;1553:47517;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;23301:19;1553:47517;;;;;;;27915:32;;;1553:47517;;;-1:-1:-1;;;1553:47517:165;;;;;27712:57;;;;1553:47517;27712:57;1553:47517;27712:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1553:47517;;;;;;;;;27599:77;;;;;;;;:::i;:::-;1553:47517;;27599:77;;;;;1553:47517;;;;27599:77;1553:47517;;;2670:66;-1:-1:-1;;;2670:66:165;;1553:47517;;;;;2670:66;;;1553:47517;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;26534:3;26580:11;;26613:14;;;;;;:::i;:::-;1553:47517;26613:34;26668:14;;;;;:::i;:::-;1553:47517;;;;;26534:3;;1553:47517;;26495:13;;1553:47517;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;26202:155;26327:19;;;:::i;:::-;26202:155;;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;35504:37:165;1553:47517;;;;35504:37;:::i;:::-;35593:32;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;35641:96;;;;;;1553:47517;;;;;;;;;;;;35641:96;;1553:47517;;;;;;;;35681:4;;35661:10;1553:47517;35641:96;;;:::i;:::-;;;;;;;;;1553:47517;-1:-1:-1;;1553:47517:165;;-1:-1:-1;;;35773:79:165;;35661:10;1553:47517;35773:79;;1553:47517;35681:4;1553:47517;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;35773:79;;;;;;;;;;;1553:47517;;;;;-1:-1:-1;;;;;1553:47517:165;;;;35968:70;1553:47517;;;;35661:10;;35968:70;;35911:238;;;;;1553:47517;;-1:-1:-1;;;35911:238:165;;-1:-1:-1;;;;;1553:47517:165;;;;35911:238;;1553:47517;;;;;;;;;;;;;;;;;;;;;;35911:238;;;;;;;;;35968:70;1553:47517;;;;;;;;35911:238;;;;;;:::i;:::-;1553:47517;;35911:238;;;1553:47517;;;;35911:238;1553:47517;;;;;;;;;35911:238;1553:47517;;;35968:70;;;;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;35773:79;;;;1553:47517;35773:79;1553:47517;35773:79;;;;;;;:::i;:::-;;;;;1553:47517;;;;;;;;;35641:96;;;;;:::i;:::-;1553:47517;;35641:96;;;;1553:47517;;;;;;;;;;;;;;16432:211;-1:-1:-1;;;;;;;;;;;1553:47517:165;16529:25;1553:47517;28092:37:169;28113:15;28092:37;;:::i;:::-;16470:38:165;1553:47517;16529:25;;1553:47517;;-1:-1:-1;;;;;1553:47517:165;;;;;16432:211;;:::i;:::-;1553:47517;;;;;;;;;;;;;;;;;;;;;28092:37:169;-1:-1:-1;;;;;;;;;;;1553:47517:165;28113:15:169;28092:37;;:::i;:::-;16046:41:165;1553:47517;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;12568:23;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;15475:25;-1:-1:-1;;;;;;;;;;;1553:47517:165;15475:25;1553:47517;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;12300:40;1553:47517;;;;;;;;;;;;;;;;;;;;;;;11710:32;-1:-1:-1;;;;;;;;;;;1553:47517:165;11710:32;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;28092:37:169;-1:-1:-1;;;;;;;;;;;1553:47517:165;28113:15:169;28092:37;;:::i;:::-;15785:41:165;1553:47517;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;:::i;:::-;-1:-1:-1;33433:28:169;33440:20;;;33433:28;:::i;:::-;33519:20;33512:28;33519:20;;;33512:28;:::i;:::-;10483:25:165;;;1553:47517;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47517:165;;;;;;;33557:241:169;;1553:47517:165;;33557:241:169;;1553:47517:165;;33557:241:169;;1553:47517:165;10872:33;;;1553:47517;10940:39;;;;1553:47517;11008:33;;;1553:47517;;;11085:48;;;1553:47517;11178:49;;;;1553:47517;;;;;;;;:::i;:::-;;;;;;:::i;:::-;33440:20:169;10566:19:165;;1553:47517;;;10872:33;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10621:27;;;1553:47517;;;;;;;;;;;;;;10526:712;;1553:47517;;;;;;;;;:::i;:::-;10677:20;;;1553:47517;-1:-1:-1;;;;;1553:47517:165;;;2288:3;;11178:49;1553:47517;;;;;;;;2288:3;33519:20:169;1553:47517:165;;;;;;;;2288:3;;;;10526:712;;1553:47517;;;;10526:712;;1553:47517;;;;10780:22;;;1553:47517;:::i;:::-;10526:712;1553:47517;10526:712;;1553:47517;;;10827:16;;1553:47517;;;:::i;:::-;10526:712;1553:47517;10526:712;;1553:47517;;;;10526:712;;1553:47517;;;;10526:712;;1553:47517;;;;10526:712;;1553:47517;;;;10526:712;;1553:47517;;;;10526:712;;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;17398:22;-1:-1:-1;;;;;;;;;;;1553:47517:165;17398:22;1553:47517;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1553:47517:165;;;;18635:28;18567:13;18635:28;;18562:129;18582:23;;;;;;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;18635:28;1553:47517;;;18607:3;18664:15;;;18635:28;18664:15;;;;:::i;:::-;;:::i;:::-;1553:47517;;;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;18626:54;;;;:::i;:::-;1553:47517;;18567:13;;1553:47517;;;;;;;-1:-1:-1;;1553:47517:165;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;757:66:38;3327:69:76;1737:93:38;;1948:4;757:66;3556:68:76;-1:-1:-1;;;;;;;;;;;1553:47517:165;36887:19;1948:4:38;36887:19:165;;1553:47517;36887:38;1553:47517;;;;37125:20;37121:295;;1553:47517;37529:27;;;1553:47517;;;;37565:33;1553:47517;37529:69;1553:47517;;;;37664:37;;1553:47517;;;37705:21;1553:47517;;;37705:21;;:::i;:::-;1553:47517;-1:-1:-1;1553:47517:165;;37795:28;1553:47517;;;;37795:28;;:::i;:::-;1553:47517;40621:22;;1553:47517;;40621:22;1553:47517;;;;40621:22;:::i;:::-;2366:5;;;;;;;;1553:47517;2366:5;;;;;;;40756:40;2366:5;;;40756:40;:::i;:::-;40806:18;;;40855:22;;;;;;2366:5;38593:146;2366:5;;;;1083:131:25;;1553:47517:165;37935:30;1553:47517;;;;37935:30;;:::i;:::-;38011:33;1553:47517;;;;38011:33;;:::i;:::-;1553:47517;38144:21;1553:47517;;;37705:21;38144;:::i;:::-;1553:47517;38226:13;;1553:47517;;38226:13;;:::i;:::-;1553:47517;;;19605:303:169;1553:47517:165;19605:303:169;;1553:47517:165;;;;;;;;2288:3;1553:47517;;;;;;;;;;;;;37565:33;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19605:303:169;;;;;;:::i;:::-;1553:47517:165;19582:336:169;;37529:27:165;;;;;1553:47517;;38498:21;1553:47517;;;37705:21;38498;:::i;:::-;1553:47517;2288:3;1553:47517;;37664:37;;1553:47517;;;;37664:37;;1553:47517;38535:26;1553:47517;;;;;;38535:26;1553:47517;38704:21;1553:47517;;;37705:21;38704;:::i;:::-;1553:47517;;;;38593:146;;:::i;:::-;2113:66;;;3556:68:76;757:66:38;3556:68:76;1553:47517:165;;2113:66;-1:-1:-1;;;2113:66:165;;1553:47517;;2113:66;40879:3;40941:22;40621;1553:47517;;40621:22;1553:47517;;;;40941:22;:::i;:::-;1553:47517;;;;;;;;;;;;;41006:19;;;1553:47517;;;;;;;;37529:27;1553:47517;;;;;1948:4:38;41006:79:165;1553:47517;;1948:4:38;1553:47517:165;;;41584:17;1553:47517;;;;;;;;;41164:17;;;;;:::i;:::-;;;;1553:47517;;;;;;;-1:-1:-1;41006:19:165;;;1553:47517;;;;;;;-1:-1:-1;;1553:47517:165;;;;;41287:39;;;1553:47517;;41287:41;;;:::i;:::-;1553:47517;;41160:270;41482:17;41449:51;41482:17;;;;:::i;:::-;1553:47517;;;;;;;;;;;;;41449:51;41584:17;:::i;:::-;1553:47517;;;;;;17359:159:169;;;;;;;4093:83:22;;;;1553:47517:165;40879:3;1553:47517;40840:13;;;41160:270;1553:47517;;41006:19;1553:47517;;;;;;;;41006:19;1553:47517;;;;;;;;;;41160:270;;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47517;2288:3;1553:47517;;2288:3;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;37121:295;37169:56;37211:13;;1553:47517;;37211:13;;:::i;:::-;1553:47517;;;;;37169:56;:::i;:::-;1553:47517;;;;37356:21;1553:47517;;;37356:21;;:::i;:::-;1553:47517;37338:15;:39;37121:295;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;1737:93:38;-1:-1:-1;;;1789:30:38;;1553:47517:165;1789:30:38;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;14108:77;;28092:37:169;;28113:15;;28092:37;:::i;:::-;14108:77:165;1553:47517;;;9268:329:171;1553:47517:165;;;;;9268:329:171;;;;;;;;;;;;;;;;;;;;1553:47517:165;9268:329:171;;;;1553:47517:165;9268:329:171;1553:47517:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20138:19;-1:-1:-1;;;;;;;;;;;1553:47517:165;20138:19;1553:47517;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18907:36;-1:-1:-1;;;;;;;;;;;1553:47517:165;18907:36;1553:47517;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;18160:31;-1:-1:-1;;;;;;;;;;;1553:47517:165;18160:31;:43;1553:47517;;;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;23205:11:165;;:16;1553:47517;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;23301:19;;1553:47517;23301:38;1553:47517;;23394:19;;;1553:47517;;;;;;;;;;;;;;;;;;;;;23545:32;;;1553:47517;23607:48;;;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;23669:78;;;;;1553:47517;;-1:-1:-1;;;23669:78:165;;23689:10;1553:47517;23669:78;;1553:47517;23709:4;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23669:78;;;;;1553:47517;-1:-1:-1;;1553:47517:165;;-1:-1:-1;;;23783:61:165;;23689:10;1553:47517;23783:61;;1553:47517;23709:4;1553:47517;;;;;;;;;;;;;;;;;;;;;;23783:61;1553:47517;23669:78;;;;;:::i;:::-;1553:47517;;23669:78;;;;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;21897:19;;;1553:47517;;;;;22004:26;;1553:47517;;;21994:37;;22050:25;;1553:47517;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;12840:35;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17167:25;-1:-1:-1;;;;;;;;;;;1553:47517:165;17167:25;1553:47517;:::i;:::-;;;;;;-1:-1:-1;;;;;1553:47517:165;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;5647:18:40;:43;;;1553:47517:165;;;;;;;;:::i;:::-;;;;:::i;:::-;;2446:3;1553:47517;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5835:13:40;;1553:47517:165;;;;5870:4:40;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;5647:43:40;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;5669:21:40;5647:43;;1553:47517:165;;;;;;;;;;;;;2303:62:29;;:::i;:::-;1944:72:37;;:::i;:::-;3300:4;1553:47517:165;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;3319:20:37;1553:47517:165;;;966:10:34;1553:47517:165;;3319:20:37;1553:47517:165;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1553:47517:165;;;;17867:19;17802:13;17867:19;;17797:120;17817:20;;;;;;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;17839:3;17893:12;;;;;:::i;:::-;1553:47517;;;;;;;;;;;;17858:48;;;;:::i;:::-;1553:47517;;;;;;;;;17802:13;;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;:::i;:::-;;;;972:64:36;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;11994:30;-1:-1:-1;;;;;;;;;;;1553:47517:165;11994:30;1553:47517;;;;;;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;1553:47517:165;;;;;;;-1:-1:-1;;;;;1553:47517:165;3975:40:29;1553:47517:165;;3975:40:29;1553:47517:165;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;6429:44:30;;;;;1553:47517:165;6425:105:30;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;6959:1:30;;-1:-1:-1;;;;;1553:47517:165;6891:76:30;;:::i;:::-;;;:::i;6959:1::-;1553:47517:165;;:::i;:::-;2224:17;;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1553:47517:165;;-1:-1:-1;;;;;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47517:165;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;-1:-1:-1;;;;;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47517:165;;;;;3676:10:40;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;;;;;;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;9320:17;;:::i;:::-;2288:3;;6591:4:30;9298:19:165;;1553:47517;3652:7:40;2288:3:165;;;1553:47517;;2288:3;;;1553:47517;2288:3;1553:47517;2288:3;;;;;1553:47517;2288:3;;;;;;;;;;1553:47517;;;;;;;:::i;:::-;;;;9377:57;1553:47517;9347:27;3676:10:40;9347:27:165;;1553:47517;;;;2288:3;1553:47517;;;;;;;;28092:37:169;28113:15;28092:37;;:::i;:::-;9487:38:165;1553:47517;;;9444:33;;;1553:47517;;2203:1:169;;;;;;;;1553:47517:165;;;;;;;9587:32;;;1553:47517;;;;;;;;;;;9574:57;;;;;;;;9568:63;9574:57;;;;;1553:47517;9568:63;;:::i;:::-;2366:5;;;;;;;;;;;9641:48;;;1553:47517;2366:5;2446:3;2366:5;;2446:3;2366:5;;;;;1553:47517;9759:49;1553:47517;-1:-1:-1;;;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;;;;;;1553:47517:165;6654:20:30;1553:47517:165;;;6907:1;1553:47517;;6654:20:30;1553:47517:165;;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47517;2288:3;;1553:47517;2288:3;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47517;2288:3;;1553:47517;2288:3;9574:57;;;;1553:47517;9574:57;1553:47517;9574:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1553:47517;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;6591:4:30;1553:47517:165;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;3676:10:40;1553:47517:165;;;;;;;;;;;;;;;;6591:4:30;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;6907:1;1553:47517;;;;;;;;;;;;6907:1;1553:47517;;;;;:::i;:::-;;;;;;;-1:-1:-1;1553:47517:165;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;;;;;6591:4:30;1553:47517:165;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;6907:1;1553:47517;;;;;;;;;;;6907:1;1553:47517;;;;;:::i;:::-;;;;6425:105:30;-1:-1:-1;;;6496:23:30;;1553:47517:165;;6496:23:30;6429:44;6907:1:165;1553:47517;;-1:-1:-1;;;;;1553:47517:165;6448:25:30;;6429:44;;;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;1553:47517:165;;;;;4301:16:30;1553:47517:165;;4724:16:30;;:34;;;;1553:47517:165;;4788:16:30;:50;;;;1553:47517:165;4853:13:30;:30;;;;1553:47517:165;4849:91:30;;;6959:1;1553:47517:165;;;-1:-1:-1;;;;;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;4977:67:30;;1553:47517:165;6891:76:30;;:::i;6959:1::-;6891:76;;:::i;:::-;1553:47517:165;;:::i;:::-;2224:17;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1553:47517:165;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:10:40;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;;;;;;1553:47517:165;6891:76:30;;:::i;:::-;;;:::i;:::-;4803:15:165;:19;2288:3;;4861:21;;2288:3;;4928:32;;;2288:3;;;5209:2;5173:32;;;;:::i;:::-;2288:3;5153:58;;2288:3;;;1553:47517;;;;;;;;;;;;;;;;;:::i;:::-;2288:3;1553:47517;;2288:3;;;;;;2303:62:29;;:::i;:::-;1553:47517:165;;1800:178:73;;;;;;;1553:47517:165;;;1800:178:73;;;1553:47517:165;;-1:-1:-1;;;;;;;;;;;1553:47517:165;48493:24;1553:47517;;;;;;;48493:24;5367:17;;:::i;:::-;2288:3;1553:47517;2288:3;;5345:19;;1553:47517;3652:7:40;2288:3:165;;;1553:47517;2288:3;;;;1553:47517;2288:3;;;;;;;;;;;;;;;;;;1553:47517;;;;;;:::i;:::-;2288:3;;;-1:-1:-1;;;;;1553:47517:165;;;5417:52;;;2288:3;;;1553:47517;;;5417:52;;;;2288:3;;;5394:20;;;1553:47517;;;;;;-1:-1:-1;;;;;;1553:47517:165;;;;;;;2288:3;;;1553:47517;;;;;;;;2288:3;;;1553:47517;;;;;;;;;;2203:1:169;5479:25:165;;;2203:1:169;1553:47517:165;;:::i;:::-;;2383:18:169;1553:47517:165;;;;;;:::i;:::-;1855:13:169;1553:47517:165;;23096:89:169;1553:47517:165;5667:22;;;1553:47517;;-1:-1:-1;;;;;;2203:1:169;;;;;1553:47517:165;;;;;;;;;:::i;:::-;;;;5754:65;;;1553:47517;;;5754:65;1553:47517;5735:16;;;1553:47517;2288:3;2203:1:169;;1553:47517:165;2203:1:169;;;1553:47517:165;5829:33;;;2203:1:169;;-1:-1:-1;;2203:1:169;1553:47517:165;;;2203:1:169;;;1553:47517:165;;-1:-1:-1;;;5933:37:165;;1553:47517;;;;;5933:37;;;;;;;;5927:43;5933:37;;;;;5927:43;;:::i;:::-;2366:5;;;;;;;;;;5980:48;;;1553:47517;2366:5;2446:3;2366:5;;2446:3;2366:5;;;;;2446:3;;6260:213;6098:49;;;;6290:37;6098:49;1553:47517;6098:49;;1553:47517;;;;;;;:::i;:::-;;;2446:3;;;1553:47517;;2446:3;;;1553:47517;;;;2446:3;:::i;:::-;4803:15;;1553:47517;;2446:3;;:::i;:::-;6290:37;;6260:213;:::i;:::-;5064:101:30;;1553:47517:165;;;5064:101:30;1553:47517:165;5140:14:30;1553:47517:165;-1:-1:-1;;;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;5140:14:30;1553:47517:165;;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47517;2288:3;1553:47517;;2288:3;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47517;2288:3;1553:47517;;2288:3;5933:37;1553:47517;;;;;;;;;2288:3;-1:-1:-1;;;2288:3:165;;1553:47517;2288:3;;;-1:-1:-1;;;2288:3:165;;1553:47517;2288:3;;;-1:-1:-1;;;2288:3:165;;1553:47517;2288:3;;;-1:-1:-1;;;2288:3:165;;1553:47517;2288:3;;1553:47517;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;3676:10:40;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;1553:47517:165;;;;;;;;4977:67:30;-1:-1:-1;;;;;;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;4977:67:30;;4849:91;-1:-1:-1;;;4906:23:30;;1553:47517:165;4906:23:30;;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;4824:6:60;-1:-1:-1;;;;;1553:47517:165;4815:4:60;4807:23;4803:145;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;4803:145:60;-1:-1:-1;;;4908:29:60;;1553:47517:165;;4908:29:60;1553:47517:165;-1:-1:-1;1553:47517:165;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4401:6:60;1553:47517:165;4392:4:60;4384:23;;;:120;;;;1553:47517:165;4367:251:60;;;2303:62:29;;:::i;:::-;1553:47517:165;;-1:-1:-1;;;5865:52:60;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;5865:52:60;;;;;;;;1553:47517:165;-1:-1:-1;5861:437:60;;-1:-1:-1;;;6227:60:60;;1553:47517:165;;;;;1805:47:53;6227:60:60;5861:437;5959:40;;;-1:-1:-1;;;;;;;;;;;5959:40:60;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;1553:47517:165;;;;;2407:36:53;;;;1553:47517:165;;;;2458:15:53;:11;;4065:25:66;;1553:47517:165;4107:55:66;4065:25;;;;;;;1553:47517:165;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;:::-;;1553:47517:165;;;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;1553:47517:165;;6159:70:53;-1:-1:-1;;;6199:19:53;;1553:47517:165;;6199:19:53;1744:119;-1:-1:-1;;;1805:47:53;;1553:47517:165;;;1805:47:53;;5955:120:60;-1:-1:-1;;;6026:34:60;;1553:47517:165;;;6026:34:60;;5865:52;;;;1553:47517:165;5865:52:60;;1553:47517:165;5865:52:60;;;;;;1553:47517:165;5865:52:60;;;:::i;:::-;;;1553:47517:165;;;;;5865:52:60;;;;1553:47517:165;-1:-1:-1;1553:47517:165;;5865:52:60;;;-1:-1:-1;5865:52:60;;4367:251;-1:-1:-1;;;4578:29:60;;1553:47517:165;4578:29:60;;4384:120;-1:-1:-1;;;;;;;;;;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;4462:42:60;;;-1:-1:-1;4384:120:60;;;1553:47517:165;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;2971:9:37;2967:62;;1553:47517:165;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;3627:22:37;1553:47517:165;;;966:10:34;1553:47517:165;;3627:22:37;1553:47517:165;;2967:62:37;-1:-1:-1;;;3003:15:37;;1553:47517:165;3003:15:37;;1553:47517:165;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47517:165;20673:23;;1553:47517;;-1:-1:-1;;;;;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28092:37:169;-1:-1:-1;;;;;;;;;;;1553:47517:165;28113:15:169;28092:37;;:::i;:::-;1553:47517:165;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;1944:72:37;;:::i;:::-;29218:36:165;1553:47517;;;;29218:36;:::i;:::-;-1:-1:-1;;;;;;1553:47517:165;;;;29305:70;1553:47517;;;;29342:10;;29305:70;-1:-1:-1;;;;;;;;;;;1553:47517:165;12568:23;;1553:47517;-1:-1:-1;;;;;1553:47517:165;29265:134;;;;;1553:47517;;-1:-1:-1;;;29265:134:165;;-1:-1:-1;;;;;1553:47517:165;;;;29265:134;;1553:47517;;;;;;;;;;;;;;;;;;29265:134;1553:47517;;29265:134;;;;;;;;;1553:47517;;;;;;;;29305:70;;;1553:47517;;;;;;;;;;;;;;3980:23:40;;:::i;1553:47517:165:-;;;;;;;;;;;;;;11456:22;-1:-1:-1;;;;;;;;;;;1553:47517:165;11456:22;1553:47517;;;;;;;;;;;;;;;;;;;;;19500:51;-1:-1:-1;;;;;;;;;;;1553:47517:165;19500:51;1553:47517;;;;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;2303:62:29;;:::i;:::-;1553:47517:165;;20991:51;-1:-1:-1;;;;;;;;;;;1553:47517:165;20991:51;1553:47517;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;31261:36:165;1553:47517;;;;31261:36;:::i;:::-;31349:32;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;31397:96;;;;;;1553:47517;;;;;;;;;;;;31397:96;;1553:47517;;;;;;;;31437:4;;31417:10;1553:47517;31397:96;;;:::i;:::-;;;;;;;;;1553:47517;-1:-1:-1;;1553:47517:165;;-1:-1:-1;;;31529:79:165;;31417:10;1553:47517;31529:79;;1553:47517;31437:4;1553:47517;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;31529:79;;;;;;;;;;;1553:47517;;;;;-1:-1:-1;;;;;1553:47517:165;;;;31724:70;1553:47517;;;;31417:10;;31724:70;;-1:-1:-1;;;;;;;;;;;1553:47517:165;31349:20;12568:23;1553:47517;-1:-1:-1;;;;;1553:47517:165;31667:236;;;;;1553:47517;;-1:-1:-1;;;31667:236:165;;-1:-1:-1;;;;;1553:47517:165;;;;31667:236;;1553:47517;;;;;;;;;;;;;;31667:236;1553:47517;;;31667:236;;;;;;;;;;1553:47517;;;;;;;;31724:70;;;;1553:47517;-1:-1:-1;;;1553:47517:165;;;;;31529:79;;;;1553:47517;31529:79;1553:47517;31529:79;;;;;;;:::i;:::-;;;;;1553:47517;;;;;;;;;31397:96;;;;;:::i;:::-;1553:47517;;31397:96;;;;1553:47517;;;;;;-1:-1:-1;;1553:47517:165;;;;;;:::i;:::-;;;:::i;:::-;1944:72:37;;;:::i;:::-;33329:37:165;1553:47517;;;;33329:37;:::i;:::-;-1:-1:-1;;;;;;1553:47517:165;;;;33417:70;1553:47517;;;;33454:10;;33417:70;;33377:136;;;;;1553:47517;;-1:-1:-1;;;33377:136:165;;-1:-1:-1;;;;;1553:47517:165;;;;33377:136;;1553:47517;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;33377:136;1553:47517;-1:-1:-1;33377:136:165;;;;;;;;1553:47517;33377:136;;;33417:70;1553:47517;;;;;;;33377:136;1553:47517;33377:136;;;:::i;:::-;1553:47517;33377:136;;;1553:47517;;;;;;;;;33417:70;;;;1553:47517;;;;;;-1:-1:-1;;1553:47517:165;;;;2303:62:29;;:::i;:::-;1553:47517:165;;21388:52;-1:-1:-1;;;;;;;;;;;1553:47517:165;21388:52;1553:47517;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;19165:42;-1:-1:-1;;;;;;;;;;;1553:47517:165;19165:42;1553:47517;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;:::-;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;:::-;-1:-1:-1;;;;;1553:47517:165;;;;;;-1:-1:-1;;1553:47517:165;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;-1:-1:-1;;1553:47517:165;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47517:165;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1553:47517:165;;;;:::o;2224:17::-;1553:47517;;;;;;;:::i;:::-;2224:17;1553:47517;;-1:-1:-1;;;1553:47517:165;2224:17;;;:::o;2288:3::-;;;;;;;;;;:::o;:::-;1553:47517;;;2288:3;;;;;;;;;;;;;;;:::o;:::-;1553:47517;;;2288:3;;;;;;;;2203:1:169;;;;;;;;;;1553:47517:165;;;;;;;2203:1:169;:::o;:::-;1553:47517:165;;2203:1:169;;;;;;;;:::o;2366:5:165:-;;;;;;;;;;;;;;;;:::o;2446:3::-;;;;;;;;;;;1553:47517;;;;:::i;:::-;2446:3;;;1553:47517;;;2446:3;;;1553:47517;2446:3;;;:::o;:::-;-1:-1:-1;;;;;2446:3:165;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1553:47517;;;;;;;:::i;:::-;2446:3;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;1553:47517;;;;;:::i;:::-;2446:3;;;;;;;;1553:47517;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;:::o;:::-;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;14365:375::-;28092:37:169;-1:-1:-1;;;;;;;;;;;1553:47517:165;28113:15:169;28092:37;;:::i;:::-;14617:22:165;;;1553:47517;14569:22;;;;;;14722:11;;;;1553:47517;14365:375;:::o;14593:3::-;14640:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47517:165;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;14616:39;14612:90;;1553:47517;;14554:13;;14612:90;14675:12;;;;1553:47517;14675:12;:::o;1553:47517::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47517:165;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47517:165;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;:::o;2670:66::-;;;;;;;;;;:::o;3405:215:29:-;-1:-1:-1;;;;;1553:47517:165;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;1553:47517:165;;-1:-1:-1;;;;;;1553:47517:165;;;;;;;-1:-1:-1;;;;;1553:47517:165;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;1553:47517:165;;3509:1:29;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;1553:47517:165;;-1:-1:-1;2763:40:29;2709:128:37;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;2770:61:37;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:37;;-1:-1:-1;2805:15:37;38843:934:165;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;39019:19;;;;1553:47517;39019:38;1553:47517;;;;;39112:19;;;1553:47517;;;;;;;;;;;;;;39150:24;39112:62;1553:47517;;3543:209:25;1553:47517:165;3543:209:25;1553:47517:165;3543:209:25;1553:47517:165;;3543:209:25;1553:47517:165;1052:614:22;;;;;;;;-1:-1:-1;;;;;1052:614:22;;;;;1651:6:167;1052:614:22;1553:47517:165;1052:614:22;1888:66:167;4093:83:22;;1998:66:167;1553:47517:165;4093:83:22;;;2108:66:167;1553:47517:165;4093:83:22;;;2218:66:167;2210:6;4093:83:22;;;2328:66:167;2320:6;4093:83:22;;;2438:66:167;2430:6;4093:83:22;;;2548:66:167;2540:6;4093:83:22;;;2658:66:167;2650:6;4093:83:22;;;2768:66:167;2760:6;4093:83:22;;;2878:66:167;2870:6;4093:83:22;;;2988:66:167;2980:6;4093:83:22;;;3098:66:167;3090:6;4093:83:22;;;3208:66:167;3200:6;4093:83:22;;;3318:66:167;3310:6;4093:83:22;;;3428:66:167;3420:6;4093:83:22;;;3538:66:167;3530:6;4093:83:22;;;3648:66:167;3640:6;4093:83:22;;;3758:66:167;3750:6;4093:83:22;;;3868:66:167;3860:6;4093:83:22;;;3978:66:167;3970:6;4093:83:22;;;4088:66:167;4080:6;4093:83:22;;;4198:66:167;4190:6;4093:83:22;;;39572:4:165;4536:2:167;1553:47517:165;4437:66:167;;;;;4436:103;4416:6;4093:83:22;;;4592:66:167;4584:6;4093:83:22;;;39449:135:165;4670:150:167;;;;;;1553:47517:165;;;;;;;-1:-1:-1;1553:47517:165;39595:28;;;1553:47517;;;;-1:-1:-1;1553:47517:165;;39652:33;;;:35;1553:47517;;39652:35;:::i;:::-;1553:47517;;;;-1:-1:-1;;;;;1553:47517:165;;;;39703:32;;1553:47517;;39703:32;39746:24;38843:934;:::o;1553:47517::-;;;;;;;;;38843:934;;;;-1:-1:-1;;;;;;;;;;;1553:47517:165;39019:19;31292:4;39019:19;;1553:47517;39019:38;1553:47517;;;-1:-1:-1;1553:47517:165;39112:19;;;1553:47517;;;;-1:-1:-1;1553:47517:165;;;;;;;;;39150:24;39112:62;1553:47517;;3543:209:25;-1:-1:-1;3543:209:25;1553:47517:165;3543:209:25;1553:47517:165;-1:-1:-1;3543:209:25;1553:47517:165;1052:614:22;;;;;;;;-1:-1:-1;;;;;1052:614:22;;;;;1545:4:168;1052:614:22;1553:47517:165;1052:614:22;2041:66:168;4093:83:22;;39511:4:165;1052:614:22;1553:47517:165;2187:66:168;2186:105;1553:47517:165;4093:83:22;;;2342:66:168;1553:47517:165;4093:83:22;;;-1:-1:-1;2420:150:168;;;;;;1553:47517:165;;;;;;;-1:-1:-1;1553:47517:165;39595:28;;;1553:47517;;;;-1:-1:-1;1553:47517:165;;39652:33;;;:35;1553:47517;;39652:35;:::i;23318:229:169:-;1553:47517:165;;:::i;:::-;;;23496:12:169;15374:24:83;15370:103;;1553:47517:165;837:15:87;14374:24:83;14370:103;;1553:47517:165;;;;;:::i;:::-;23466:1:169;1553:47517:165;;;23496:12:169;1553:47517:165;23434:106:169;;;1553:47517:165;;837:15:87;1553:47517:165;;23434:106:169;;1553:47517:165;23318:229:169;:::o;14370:103:83:-;15421:41;;;23466:1:169;14421:41:83;14452:2;14421:41;1553:47517:165;837:15:87;1553:47517:165;;;23466:1:169;14421:41:83;15370:103;15421:41;;;23466:1:169;15421:41:83;15452:2;15421:41;1553:47517:165;23496:12:169;1553:47517:165;;;23466:1:169;15421:41:83;1553:47517:165;;;;;;;;;;;:::o;:::-;;;;;;;;;;46525:1421;;;;2203:1:169;;47225:25:165;;;;2203:1:169;;;1145:66:27;;1837:24:26;;:71;;;;46525:1421:165;1553:47517;;;;;2203:1:169;1553:47517:165;;2203:1:169;1553:47517:165;;;;1705:1673:171;;;;;;;;;;;;;;;;;;;-1:-1:-1;1705:1673:171;;;;;;;47385:52:165;;;1553:47517;;-1:-1:-1;;;;;;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;-1:-1:-1;47548:3:165;47523:16;;;1553:47517;;47519:27;;;;;-1:-1:-1;1553:47517:165;;;47225:25;1553:47517;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;47621:15;;1553:47517;;;;;;;-1:-1:-1;;1553:47517:165;;;;;47504:13;;47519:27;;;;-1:-1:-1;47723:3:165;1553:47517;;47696:25;;;;;1553:47517;;-1:-1:-1;;;;;47763:17:165;1553:47517;47763:17;;:::i;:::-;2288:3;1553:47517;;;;;;;-1:-1:-1;1553:47517:165;;47794:15;;1553:47517;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;47681:13;;47696:25;;;47523:16;47848;;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;-1:-1:-1;;;1553:47517:165;;;;47225:25;1553:47517;;;;;;;;;;;47676:163;1553:47517;;;-1:-1:-1;1553:47517:165;47225:25;-1:-1:-1;1553:47517:165;-1:-1:-1;1553:47517:165;;;;;;47891:28;;;;;;1553:47517;46525:1421::o;1553:47517::-;2288:3;;-1:-1:-1;;;;;1553:47517:165;;;;;47225:25;1553:47517;;;;;;;;;;;;-1:-1:-1;1553:47517:165;;;;-1:-1:-1;1553:47517:165;;;;;;:::i;:::-;;;;1705:1673:171;;-1:-1:-1;1705:1673:171;;;;1553:47517:165;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;1837:71:26;1865:43;;;;:::i;:::-;1837:71;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22293:532:169;22418:12;-1:-1:-1;;2288:3:165;;;22293:532:169;;2288:3:165;;;;1553:47517;;22418:12:169;22458:22;;22418:12;;22458:50;1553:47517:165;22458:50:169;;22542:8;;;;;;22518:278;-1:-1:-1;1553:47517:165;;-1:-1:-1;;22293:532:169:o;22523:17::-;22581:12;;22611:11;;;;;-1:-1:-1;22433:1:169;;-1:-1:-1;;;22642:11:169:o;22607:119::-;22678:8;22674:52;;-1:-1:-1;;1553:47517:165;22523:17:169;;22674:52;22706:5;;22458:50;22487:21;22418:12;;22487:21;:::i;:::-;22458:50;;;1553:47517:165;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;:::o;39783:683::-;;39911:22;;;39944:1;39911:22;;;;:::i;:::-;:34;;;1553:47517;;39988:22;;;;:::i;:::-;:34;;;39984:177;;40215:22;;;:::i;:::-;1553:47517;;;;;;;;;;;;;;;;;;40305:23;;;;;:::i;:::-;2366:5;;;;1553:47517;2366:5;;;;;45606:2;2366:5;;;;;;;45652:36;;;;;;:::i;:::-;45698:18;1553:47517;45732:13;1553:47517;;45867:28;1553:47517;;;;;;45867:28;;45727:685;45767:3;45747:18;;;;;;1553:47517;;;;;;;;;;;;;;45896:18;;;:::i;:::-;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;45867:53;1553:47517;;;39911:22;45990:25;;-1:-1:-1;;;;;45990:25:165;;;:::i;:::-;1553:47517;45990:30;;:72;;;45767:3;45986:144;;45767:3;-1:-1:-1;;;;;46177:18:165;;;:::i;:::-;1553:47517;;-1:-1:-1;;;46169:76:165;;45606:2;46169:76;;;1553:47517;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;-1:-1:-1;;;;;1553:47517:165;;;:::i;:::-;;;;;;45606:2;1553:47517;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;;;;;;45606:2;1553:47517;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45606:2;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;41449:51;1553:47517;;;;;;;;;;;;45606:2;1553:47517;;;;;;;;;;;;;;;;;;;;;;;46169:76;;;;;;;45606:2;46169:76;;-1:-1:-1;;;;;46169:76:165;;;;1553:47517;;46169:76;;;;;;;;1553:47517;46169:76;;;1553:47517;4093:83:22;;45606:2:165;4093:83:22;39944:1:165;4093:83:22;;;;1553:47517:165;45767:3;1553:47517;45732:13;;;46169:76;;;45606:2;46169:76;;;;;;;;;1553:47517;46169:76;;;:::i;:::-;;;1553:47517;;;;;39944:1;46169:76;;;;;-1:-1:-1;46169:76:165;;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;45606:2;1553:47517;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;:::i;:::-;;45606:2;1553:47517;;;;;;;-1:-1:-1;;1553:47517:165;;;;;;;;;;;;45606:2;1553:47517;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;39911:22;1553:47517;;;:::i;:::-;;;;;;;;;;39911:22;1553:47517;;;;;;;;;;;;;;;;;;45606:2;1553:47517;;;;;;;;39944:1;1553:47517;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39944:1;1553:47517;;;;;;;;;;;45606:2;1553:47517;;;:::i;:::-;;45606:2;1553:47517;;;-1:-1:-1;;;;;1553:47517:165;;;;;:::i;:::-;;;;;;;;;;;;;;45986:144;46090:25;;;;;:::i;:::-;45986:144;;;45990:72;46025:37;;1553:47517;46025:37;;;:::i;:::-;46024:38;45990:72;;45747:18;;;;;;;;;;45606:2;45747:18;;1083:131:25;40364:16:165;;1553:47517;;40345:36;45606:2;1553:47517;;;;;40345:36;1553:47517;3543:209:25;45606:2:165;3543:209:25;1553:47517:165;;3543:209:25;39783:683:165;:::o;39984:177::-;40130:20;;;40137:13;40130:20;:::o;1553:47517::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;41916:1705::-;42046:24;;;42081:1;42046:24;;;;:::i;:::-;:36;;;1553:47517;;42127:24;;;;:::i;:::-;:36;;;42123:179;;42358:24;;;;:::i;:::-;1553:47517;;;;;;;;;;;;;;;;;;42404:21;;;;;42428;42404;;;:::i;:::-;42428;;;1553:47517;42428:21;;;;:::i;:::-;1553:47517;;;42404:45;1553:47517;;;42507:21;;;:::i;:::-;1553:47517;42532:29;;;;1553:47517;42428:21;1553:47517;;;;42507:54;1553:47517;;42718:46;1553:47517;42742:21;42638:46;42662:21;;;;:::i;:::-;1553:47517;42638:46;;:::i;:::-;42742:21;;:::i;:::-;1553:47517;42718:46;;:::i;:::-;-1:-1:-1;1553:47517:165;;;42886:31;;;1553:47517;42955:32;;;;1553:47517;;;;;-1:-1:-1;;;;;1553:47517:165;;;;43054:19;;;;1553:47517;;;;42428:21;;1553:47517;42942:144;43023:62;42428:21;43054:19;;1553:47517;43054:19;:::i;:::-;:31;1553:47517;43023:62;;:::i;:::-;43054:19;1553:47517;;;;;;;;;42942:144;;;;;;1553:47517;;;;;42942:144;;;;;;;1553:47517;42942:144;;;41916:1705;1553:47517;;;;;43054:19;1553:47517;-1:-1:-1;;;43176:185:165;;-1:-1:-1;;;;;1553:47517:165;;;42942:144;43176:185;;1553:47517;;;;;;;;42428:21;43321:26;;;1553:47517;42942:144;1553:47517;;;;43176:185;1553:47517;-1:-1:-1;43176:185:165;;;;;;;;1553:47517;43176:185;;;41916:1705;43462:19;;;;;:::i;:::-;43483:21;;;;:::i;:::-;1553:47517;43054:19;1553:47517;;;;;43413:92;;43054:19;42942:144;43413:92;;1553:47517;;;;;;;;;;;;;;;;;;;;42428:21;1553:47517;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;42955:32;1553:47517;;;;;;;42404:21;42942:144;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;42428:21;1553:47517;;;;;;;;;;;43176:185;1553:47517;;;;43054:19;1553:47517;;;;;;;;:::i;:::-;;;;;;;;;;;43413:92;;;;;;;;;1553:47517;43413:92;;;1553:47517;43592:21;;;;:::i;:::-;43054:19;1553:47517;18032:70:169;42428:21:165;18032:70:169;;1553:47517:165;;;43054:19;1553:47517;;;2288:3;1553:47517;;;;;;42404:21;1553:47517;;;18032:70:169;;;;;;;:::i;:::-;1553:47517:165;18022:81:169;;41916:1705:165;:::o;43413:92::-;;;;42428:21;43413:92;;42428:21;43413:92;;;;;;1553:47517;43413:92;;;:::i;:::-;;;1553:47517;;;;;;43592:21;43413:92;;;;;-1:-1:-1;43413:92:165;;1553:47517;;;;;;;43054:19;1553:47517;42081:1;1553:47517;;;;;;;;;:::i;:::-;;;;42428:21;1553:47517;;;42428:21;1553:47517;;;;;;;;;;;;;;;;43176:185;;;;;42428:21;43176:185;;42428:21;43176:185;;;;;;1553:47517;43176:185;;;:::i;:::-;;;1553:47517;;;;;;;43462:19;43176:185;;;;;-1:-1:-1;43176:185:165;;1553:47517;;;;;;42942:144;1553:47517;;42942:144;;;;42428:21;42942:144;42428:21;42942:144;;;;;;;:::i;:::-;;;;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;:::o;43688:1657::-;;43821:27;;;43859:1;43821:27;;;;:::i;:::-;:39;;;1553:47517;;43908:27;;;;:::i;:::-;:39;;;43904:182;;44145:27;;;:::i;:::-;1553:47517;;;;;;;;;;;;;;;;;;44194:22;;;;;;;;:::i;:::-;:33;;;1553:47517;;;44361:29;;;1553:47517;;;;44343:15;:47;:15;;:47;:::i;:::-;44342:72;44394:16;;;1553:47517;44342:72;;;:::i;:::-;44433:20;;;;1553:47517;2670:66;43859:1;2670:66;;;;;;;44433:43;;1553:47517;;44567:43;;44535:75;44567:43;;:::i;:::-;44535:75;;:::i;:::-;44662:25;44647:40;44662:25;;;1553:47517;44647:40;;:::i;:::-;44343:15;44628:59;1553:47517;;44806:34;;;:::i;:::-;44343:15;;1553:47517;44858:28;;1553:47517;44858:46;1553:47517;;;44998:217;45098:45;;;;;2446:3;;45098:45;;;;:::i;:::-;45157:22;;;;;;:::i;:::-;1553:47517;;;2446:3;1553:47517;2446:3;;:::i;:::-;1553:47517;;2446:3;;:::i;:::-;1553:47517;;2446:3;;:::i;:::-;44998:217;;:::i;:::-;45231:47;1553:47517;45098:45;1553:47517;;;;45231:47;1553:47517;;;;;;;45098:45;1553:47517;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;45098:45;1553:47517;;;;44194:22;1553:47517;;;18426:30:169;2203:1;1553:47517:165;2203:1:169;;18476:32;;2203:1;1553:47517:165;45098:45;1553:47517;18392:206:169;;;1553:47517:165;18392:206:169;;1553:47517:165;;;45098:45;1553:47517;;;44194:22;1553:47517;;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47517:165;;18392:206:169;;;;;;1553:47517:165;18392:206:169;;;:::i;1553:47517:165:-;;;-1:-1:-1;;;;;1553:47517:165;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;43859:1;1553:47517;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24038:3813:169;;;;;;1553:47517:165;32036:29:169;;;1553:47517:165;;;;32068:22:169;24407:15;32068:22;;:::i;:::-;32036:77;32068:45;32093:16;;;1553:47517:165;32068:45:169;;;:::i;:::-;32036:77;;:::i;:::-;24437:15;;;;;;:82;;24038:3813;24433:676;;;24543:35;;;1553:47517:165;;24628:25:169;;;;:::i;:::-;:39;1553:47517:165;;25203:24:169;24433:676;;25203:24;;:::i;:::-;3226:200:80;-1:-1:-1;;;1553:47517:165;3226:200:80;25268:4:169;3226:200:80;;32036:29:169;3226:200:80;32093:16:169;3226:200:80;;1553:47517:165;3226:200:80;1553:47517:165;32036:29:169;1553:47517:165;;;;;25331:37:169;;;25392:23;;32036:19;25392:23;;1553:47517:165;;;;;;;2446:3;1553:47517;;:::i;:::-;2446:3;;;:::i;:::-;1553:47517;3226:200:80;1553:47517:165;;25523:23:169;1553:47517:165;;25713:240:169;1553:47517:165;26234:272:169;25713:240;;;3226:200:80;25713:240:169;;;;;;;1553:47517:165;32036:19:169;1553:47517:165;;26323:32:169;;1553:47517:165;26234:272:169;;:::i;1553:47517:165:-;;;;;;;;;;;;;;;;;;25327:2495:169;1553:47517:165;;;32036:19:169;26527:37;26523:1299;;25327:2495;;;;;1553:47517:165;24038:3813:169;:::o;26523:1299::-;26600:199;26637:15;26677:25;26637:15;;;;;1553:47517:165;26677:25:169;;1553:47517:165;;-1:-1:-1;;;;;1553:47517:165;;;;;26600:199:169;;:::i;:::-;26814:27;1553:47517:165;26861:13:169;27057:14;1553:47517:165;27057:14:169;;26856:929;26900:3;26876:22;;;;;;3927:8:77;3871:27;2446:3:165;1553:47517;;;;;;;;:::i;2446:3::-;3871:27:77;;:::i;3927:8::-;-1:-1:-1;;;;;1553:47517:165;;;;;;;;;;;;;;;;27053:718:169;;26900:3;;32036:19;26900:3;26861:13;1553:47517:165;26861:13:169;;27053:718;-1:-1:-1;;;;;2780:163:73;1553:47517:165;2780:163:73;;;2113:66:165;1553:47517;2780:163:73;;;;3327:69:76;;27416:50:169;;;27494:8;32036:19;27494:8;;;27412:223;3556:68:76;32036:19:169;27661:17;3556:68:76;;;27661:17:169;:::i;:::-;:30;;;;27657:96;;27053:718;;;27657:96;27719:11;;;;;;;32036:19;27719:11;:::o;26876:22::-;;;;;;;;1553:47517:165;27799:12:169;:::o;1553:47517:165:-;;;;;;;;;;;;;;;;;;24433:676:169;24407:15;;;;;;24902:21;;1553:47517:165;;25203:24:169;24960:69;;;24433:676;;;;24960:69;24999:15;;24960:69;;;1553:47517:165;;;;;;;;;24437:82:169;24487:32;24474:45;24487:32;;;1553:47517:165;24474:45:169;;:::i;:::-;24407:15;24456:63;24437:82;;30885:456;-1:-1:-1;;;;;30885:456:169;;1553:47517:165;;;;31194:24:169;;;;:::i;:::-;1553:47517:165;;;;;;31306:5:169;1553:47517:165;;31319:1:169;1553:47517:165;30885:456:169;:::o;4016:191:40:-;4129:17;;:::i;:::-;4148:20;;:::i;:::-;1553:47517:165;;4107:92:40;;;;1553:47517:165;1959:95:40;1553:47517:165;;;1959:95:40;;1553:47517:165;1959:95:40;;;1553:47517:165;4170:13:40;1959:95;;;1553:47517:165;4193:4:40;1959:95;;;1553:47517:165;1959:95:40;4107:92;;;;;;:::i;28801:312:169:-;;28924:37;28801:312;28924:37;;:::i;:::-;;;;28984;;28977:44;:::o;28920:187::-;29059:37;;29052:44;:::o;7082:141:30:-;1553:47517:165;-1:-1:-1;;;;;;;;;;;1553:47517:165;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;1553:47517:165;;-1:-1:-1;;;;;1553:47517:165;;;;;;;:::o;:::-;;;;;;;;;;:::o;863:809:22:-;1052:614;;;863:809;1052:614;;-1:-1:-1;;1052:614:22;;;-1:-1:-1;;;;;1052:614:22;;;;;;;;;;863:809::o;31526:179:169:-;31678:16;31640:34;31639:59;31526:179;1553:47517:165;31645:29:169;;;1553:47517:165;;;;31640:34:169;;:::i;:::-;31678:16;;1553:47517:165;31639:59:169;;:::i;28342:322::-;28462:50;28496:15;28462:50;;:::i;:::-;28496:15;;;28535:37;;28528:44;:::o;28458:200::-;28610:37;;28603:44;:::o;7001:1787:20:-;;;;;;7608:63;;;;:::i;:::-;7607:64;7603:107;;7961:15;;7957:58;;-1:-1:-1;;8029:25:20;;;8025:68;;2933:1:27;2929:5;4026:14:20;2670:66:165;4010:31:20;;;:::i;:::-;1553:47517:165;425:3:20;1553:47517:165;;;4003:1:27;2933;2929:5;;1553:47517:165;425:3:20;4492:84:22;;;4093:83;2670:66:165;4093:83:22;;;4003:1:27;1553:47517:165;;2670:66;4492:84:22;;;2670:66:165;4093:83:22;;;;;2670:66:165;4093:83:22;;;1581:66:20;2670::165;4093:83:22;;;-1:-1:-1;;;2670:66:165;4093:83:22;;;531:131:25;;2670:66:165;4093:83:22;;;;;;4003:1:27;2670:66:165;4492:84:22;;2933:1:27;4492:84:22;;2670:66:165;531:131:25;;5696:10:20;;;4093:83:22;;4492:84;2670:66:165;1145::27;;531:131:25;;6084:3:20;1553:47517:165;-1:-1:-1;;;;;1553:47517:165;;;6084:3:20;1553:47517:165;;6062:44:20;1145:66:27;;;1860::20;1553:47517:165;1860:66:20;;1553:47517:165;6037:2:20;1553:47517:165;6140:32:20;6133:57;8567:14;;8563:57;;1145:66:27;3386:2;6084:3:20;1145:66:27;1553:47517:165;1145:66:27;648:2:20;1145:66:27;;;6396:43:26;;1145:66:27;;1553:47517:165;4093:83:22;;1553:47517:165;4093:83:22;;;;;6037:2:20;4093:83:22;;;1145:66:27;;6954:42:26;;-1:-1:-1;;1553:47517:165;1530:4:24;4093:83:22;;;;;;2933:1:27;1640:140:24;;;1553:47517:165;1640:140:24;3543:209:25;1553:47517:165;3543:209:25;648:2:20;3543:209:25;1553:47517:165;;;;;6037:2:20;1553:47517:165;3543:209:25;4476:141:27;9285:100:26;7001:1787:20;:::o;8025:68::-;8070:12;;;;;;1553:47517:165;8070:12:20;:::o;32460:467:169:-;1553:47517:165;;:::i;:::-;-1:-1:-1;32764:51:169;;;1553:47517:165;32882:27:169;;;1553:47517:165;;;;;;;;32835:15:169;;-1:-1:-1;;;;;1553:47517:165;;;;:::i;:::-;;;;:::i;:::-;;;32623:297:169;;;2288:3:165;32835:15:169;1553:47517:165;:::i;:::-;;32623:297:169;;1553:47517:165;32623:297:169;;;1553:47517:165;32460:467:169;:::o;5203:1551:77:-;;;6283:66;6270:79;;6266:164;;1553:47517:165;;;;;;-1:-1:-1;1553:47517:165;;;;;;;;;;;;;;;;;;;6541:24:77;;;;;;;;;-1:-1:-1;6541:24:77;-1:-1:-1;;;;;1553:47517:165;;6579:20:77;6575:113;;6698:49;-1:-1:-1;6698:49:77;-1:-1:-1;5203:1551:77;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:77;6541:24;6615:62;-1:-1:-1;6615:62:77;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;1553:47517:165;;;;;;7366:29:77;;;7411:7;;:::o;7362:444::-;1553:47517:165;7462:38:77;;1553:47517:165;;7523:23:77;;;7375:20;7523:23;1553:47517:165;7375:20:77;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;1553:47517:165;;;7375:20:77;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;1553:47517:165;;;7375:20:77;7763:32;6928:687:40;1553:47517:165;;:::i;:::-;;;;7100:22:40;;;;1553:47517:165;;7145:22:40;7138:29;:::o;7096:513::-;-1:-1:-1;;;;;;;;;;;;;1553:47517:165;7473:15:40;;;;7508:17;:::o;7469:130::-;7564:20;7571:13;7564:20;:::o;7836:723::-;1553:47517:165;;:::i;:::-;;;;8017:25:40;;;;1553:47517:165;;8065:25:40;8058:32;:::o;8013:540::-;-1:-1:-1;;;;;;;;;;;;;1553:47517:165;8411:18:40;;;;8449:20;:::o;29520:863:169:-;;29766:54;29688;;;1553:47517:165;29766:54:169;;1553:47517:165;29894:10:169;;;1553:47517:165;;29965:9:169;;;;29997;;;;;30029;;;30130:14;;;;;29520:863;1553:47517:165;;;30346:30:169;;;30339:37;;29520:863;:::o;30346:30::-;30361:14;;29520:863;-1:-1:-1;29520:863:169:o;1553:47517:165:-;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;30130:14:169;;;;;1553:47517:165;;;;-1:-1:-1;1553:47517:165;;-1:-1:-1;1553:47517:165;2129:778:77;1553:47517:165;;;2129:778:77;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:77;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;1767:250:27:-;-1:-1:-1;;912:66:27;701;;912;;;;;1984:15;1974:29;;1967:43;912:66;-1:-1:-1;;912:66:27;;1948:15;:62;1767:250;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;1553:47517:165;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;1553:47517:165;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;1553:47517:165;;;;4933:24:66;1553:47517:165;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":10996,"length":32},{"start":11143,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])":"b24fcac0","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32,address)":"3683c4d2","createProgramWithAbiInterface(bytes32,bytes32,address,address)":"0c18d277","createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)":"ee32004f","createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)":"0d91bf2a","eip712Domain()":"84b0196e","genesisBlockHash()":"28e24b3d","genesisTimestamp()":"cacf66ab","initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])":"53f7fd48","isValidator(address)":"facd743b","latestCommittedBatchHash()":"71a8cf2d","latestCommittedBatchTimestamp()":"d456fd51","lookupGenesisHash()":"8b1edf1e","middleware()":"f4f20ac0","mirrorImpl()":"e6fabc09","nonces(address)":"7ecebe00","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","proxiableUUID()":"52d1902d","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)":"8c4ace6a","requestCodeValidationBaseFee()":"188509e9","requestCodeValidationExtraFee()":"f1ef31ec","requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)":"f0fd702a","setMirror(address)":"3d43b418","setRequestCodeValidationBaseFee(uint256)":"11bec80d","setRequestCodeValidationExtraFee(uint256)":"0b9737ce","signingThresholdFraction()":"e3a6684f","storageView()":"c2eb812f","timelines()":"9eb939a8","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsAggregatedPublicKey()":"3bd109fa","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","validatorsVerifiableSecretSharingCommitment()":"a5d53a44","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApproveERC20Failed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchTimestampNotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchTimestampTooEarly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlobNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeAlreadyOnValidationOrValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeNotValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeValidationNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CommitmentEraNotNext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ElectionNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyValidatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErasTimestampMustNotBeEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisHashAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisHashNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"providedBlobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedBlobHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidBlobHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"providedLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedLength\",\"type\":\"uint256\"}],\"name\":\"InvalidBlobHashesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidElectionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFROSTAggregatedPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPreviousCommittedBatchHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PredecessorBlockNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentEraNotPrevious\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentPredatesGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentTimestampNotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterGenesisHashNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureVerificationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampOlderThanPreviousEra\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyChainCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyRewardsCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyValidatorsCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownProgram\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationBeforeGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationDelayTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsAlreadyScheduled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsNotFoundForTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueTransfer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"head\",\"type\":\"bytes32\"}],\"name\":\"AnnouncesCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BatchCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"name\":\"ValidatorsCommittedForEra\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"blockTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBatchHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"expiry\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"exited\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"valueToReceiveNegativeSign\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"call\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"head\",\"type\":\"bytes32\"}],\"internalType\":\"struct Gear.ChainCommitment[]\",\"name\":\"chainCommitment\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.CodeCommitment[]\",\"name\":\"codeCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct Gear.OperatorRewardsCommitment\",\"name\":\"operators\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"stakers\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.RewardsCommitment[]\",\"name\":\"rewardsCommitment\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"verifiableSecretSharingCommitment\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsCommitment[]\",\"name\":\"validatorsCommitment\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BatchCommitment\",\"name\":\"_batch\",\"type\":\"tuple\"},{\"internalType\":\"enum Gear.SignatureType\",\"name\":\"_signatureType\",\"type\":\"uint8\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"}],\"name\":\"createProgramWithAbiInterface\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithAbiInterfaceAndExecutableBalance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithExecutableBalance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_middleware\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_eraDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_electionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationDelay\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"_aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_verifiableSecretSharingCommitment\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBatchHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBatchTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"middleware\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCodeValidationBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCodeValidationExtraFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"_blobHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v1\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s1\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_v2\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s2\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidationOnBehalf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBaseFee\",\"type\":\"uint256\"}],\"name\":\"setRequestCodeValidationBaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExtraFee\",\"type\":\"uint256\"}],\"name\":\"setRequestCodeValidationExtraFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdFraction\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"thresholdNumerator\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"thresholdDenominator\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageView\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"number\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.GenesisBlockInfo\",\"name\":\"genesisBlock\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.CommittedBatchInfo\",\"name\":\"latestCommittedBatch\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middleware\",\"type\":\"address\"}],\"internalType\":\"struct Gear.AddressBook\",\"name\":\"implAddresses\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"thresholdNumerator\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"thresholdDenominator\",\"type\":\"uint128\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"verifiableSecretSharingCommitmentPointer\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"list\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"useFromTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsView\",\"name\":\"validators0\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"verifiableSecretSharingCommitmentPointer\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"list\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"useFromTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsView\",\"name\":\"validators1\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.ValidationSettingsView\",\"name\":\"validationSettings\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"computeSettings\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"era\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"election\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validationDelay\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.Timelines\",\"name\":\"timelines\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"programsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatedCodesCount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxValidators\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"requestCodeValidationBaseFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestCodeValidationExtraFee\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouter.StorageView\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timelines\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"era\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"election\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validationDelay\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.Timelines\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsAggregatedPublicKey\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsVerifiableSecretSharingCommitment\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"BlobNotFound()\":[{\"details\":\"Thrown when the tx is not in EIP-4844/EIP-7594 format, so it doesn't have blobhashes.\"}],\"CodeAlreadyOnValidationOrValidated()\":[{\"details\":\"Thrown when the code is already on validation or validated.\"}],\"CodeNotValidated()\":[{\"details\":\"Thrown when the code is not validated and someone tries to create program with it.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"EraDurationTooShort()\":[{\"details\":\"Thrown when the era duration is too short (era duration must be greater than election duration).\"}],\"ErasTimestampMustNotBeEqual()\":[{\"details\":\"Thrown when the timestamp of an era is equal to the timestamp of the previous era. Should never happen, because the implementation.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"ExpiredSignature(uint256)\":[{\"details\":\"Thrown when deadline for code validation request has expired.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"GenesisHashAlreadySet()\":[{\"details\":\"Thrown when the genesis hash is already set by someone else.\"}],\"GenesisHashNotFound()\":[{\"details\":\"Thrown when the genesis hash is not found from previous blocks. There is 256 blocks lookback for `blockhash` opcode, so if the genesis block is too old, it may not be found.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidBlobHash(uint256,bytes32,bytes32)\":[{\"details\":\"Thrown when the blobhash for code validation request is invalid.\"}],\"InvalidBlobHashesLength(uint256,uint256)\":[{\"details\":\"Thrown when the provided blob hashes length doesn't match the actual blob hashes length in transaction.\"}],\"InvalidElectionDuration()\":[{\"details\":\"Thrown when an invalid election duration is provided (must be greater than 0).\"}],\"InvalidFrostSignatureCount()\":[{\"details\":\"Thrown when the number of FROST signatures is invalid.\"}],\"InvalidFrostSignatureLength()\":[{\"details\":\"Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidSigner(address,address)\":[{\"details\":\"Thrown when the signer of the code validation request is not the requester.\"}],\"InvalidTimestamp()\":[{\"details\":\"Thrown when an invalid block.timestamp is provided (must be greater than 0).\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"RouterGenesisHashNotInitialized()\":[{\"details\":\"Thrown when the router's genesis hash is not initialized (no one called `lookupGenesisHash` yet).\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"TimestampInFuture()\":[{\"details\":\"Thrown when the timestamp is in the future.\"}],\"TimestampOlderThanPreviousEra()\":[{\"details\":\"Thrown when the timestamp is older than the previous era.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ValidationBeforeGenesis()\":[{\"details\":\"Thrown when signature validation is attempted before the genesis block.\"}],\"ValidationDelayTooBig()\":[{\"details\":\"Thrown when the validation delay is too big.\"}],\"ValidatorsNotFoundForTimestamp()\":[{\"details\":\"Thrown when no validators are found for a given timestamp. Should never happen, because the implementation.\"}]},\"events\":{\"AnnouncesCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the all transitions until head were committed.\",\"params\":{\"head\":\"The hash of committed announces chain head.\"}},\"BatchCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that all commitments in batch has been applied.\",\"params\":{\"hash\":\"Batch hash (`keccak256` algorithm), see `Gear.batchCommitmentHash(...)`.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"codeId\":\"The expected code ID of the applied WASM blob, one the client side it's calculated as `gprimitives::CodeId::generate(wasm_code)`.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\"}},\"StorageSlotChanged(bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\",\"params\":{\"slot\":\"The new storage slot.\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"},\"ValidatorsCommittedForEra(uint256)\":{\"details\":\"This is an *informational* and *request* event, signaling that validators has been set for the next era.\",\"params\":{\"eraIndex\":\"The index of the era for which the validators have been committed.\"}}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.\",\"returns\":{\"_0\":\"domainSeparator The domain separator.\"}},\"areValidators(address[])\":{\"details\":\"Checks if the given addresses are all validators.\",\"returns\":{\"_0\":\"areValidators `true` if all addresses are validators, `false` otherwise.\"}},\"codeState(bytes32)\":{\"details\":\"Returns the state of code.\",\"returns\":{\"_0\":\"codeState The state of the code.\"}},\"codesStates(bytes32[])\":{\"details\":\"Returns the states of multiple codes.\",\"returns\":{\"_0\":\"codesStates The states of the codes.\"}},\"commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])\":{\"details\":\"Commits new batch of changes to `Router` state. `CodeGotValidated` event is emitted for each code in commitment. `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.\",\"params\":{\"_batch\":\"The batch commitment data.\",\"_signatureType\":\"The type of signature to validate.\",\"_signatures\":\"The signatures for the batch commitment.\"}},\"computeSettings()\":{\"details\":\"Returns the computation settings.\",\"returns\":{\"_0\":\"computeSettings The computation settings.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createProgram(bytes32,bytes32,address)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, and initializer. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \\\"Solidity ABI Interface\\\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_salt\":\"The salt for the program creation.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithAbiInterface(bytes32,bytes32,address,address)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \\\"Solidity ABI Interface\\\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_abiInterface\":\"The ABI interface address for the program.\",\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_salt\":\"The salt for the program creation.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \\\"Solidity ABI Interface\\\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_abiInterface\":\"The ABI interface address for the program.\",\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_initialExecutableBalance\":\"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_salt\":\"The salt for the program creation.\",\"_v\":\"ECDSA signature parameter.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \\\"Solidity ABI Interface\\\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_initialExecutableBalance\":\"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_salt\":\"The salt for the program creation.\",\"_v\":\"ECDSA signature parameter.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"genesisBlockHash()\":{\"details\":\"Returns the hash of the genesis block.\",\"returns\":{\"_0\":\"genesisBlockHash The hash of the genesis block.\"}},\"genesisTimestamp()\":{\"details\":\"Returns the timestamp of the genesis block.\",\"returns\":{\"_0\":\"genesisTimestamp The timestamp of the genesis block.\"}},\"initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])\":{\"details\":\"Initializes the `Router` with the given parameters.\",\"params\":{\"_aggregatedPublicKey\":\"The aggregated public key of the initial validators. Will be used in future.\",\"_electionDuration\":\"The duration of an election in seconds.\",\"_eraDuration\":\"The duration of an era in seconds.\",\"_middleware\":\"The address of the middleware contract.\",\"_mirror\":\"The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.\",\"_owner\":\"The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.\",\"_validationDelay\":\"The delay before validators can start validating in seconds.\",\"_validators\":\"The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, so the list of validators is used for signature verification.\",\"_verifiableSecretSharingCommitment\":\"The verifiable secret sharing commitment of the initial validators. Will be used in future.\",\"_wrappedVara\":\"The address of the `WrappedVara` (WVARA) ERC20 token contract.\"}},\"isValidator(address)\":{\"details\":\"Checks if the given address is a validator.\",\"returns\":{\"_0\":\"isValidator `true` if the address is a validator, `false` otherwise.\"}},\"latestCommittedBatchHash()\":{\"details\":\"Returns the hash of the latest committed batch.\",\"returns\":{\"_0\":\"latestCommittedBatchHash The hash of the latest committed batch.\"}},\"latestCommittedBatchTimestamp()\":{\"details\":\"Returns the timestamp of the latest committed batch.\",\"returns\":{\"_0\":\"latestCommittedBatchTimestamp The timestamp of the latest committed batch.\"}},\"lookupGenesisHash()\":{\"details\":\"Looks up the genesis hash from previous blocks.\"},\"middleware()\":{\"details\":\"Returns the address of the middleware implementation.\",\"returns\":{\"_0\":\"middleware The address of the middleware implementation.\"}},\"mirrorImpl()\":{\"details\":\"Returns the address of the mirror implementation.\",\"returns\":{\"_0\":\"mirrorImpl The address of the mirror implementation.\"}},\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"Pauses the contract.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\",\"returns\":{\"_0\":\"isPaused `true` if the contract is paused, `false` otherwise.\"}},\"programCodeId(address)\":{\"details\":\"Returns the code ID of the given program.\",\"returns\":{\"_0\":\"codeId The code ID of the program.\"}},\"programsCodeIds(address[])\":{\"details\":\"Returns the code IDs of the given programs.\",\"returns\":{\"_0\":\"codesIds The code IDs of the programs.\"}},\"programsCount()\":{\"details\":\"Returns the count of programs.\",\"returns\":{\"_0\":\"programsCount The count of programs.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\",\"details\":\"Reinitializes the `Router` to set up new storage layout. This function is intended to be called during an upgrade/wipe and can contain any logic. NOTE: Don't forget to bump `reinitializer(version)` in modifier!\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Requests code validation for the given code ID. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` in the WVARA ERC20 token.\",\"params\":{\"_codeId\":\"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_v\":\"ECDSA signature parameter.\"}},\"requestCodeValidationBaseFee()\":{\"details\":\"Returns the base fee for requesting code validation in WVARA ERC20 token.\",\"returns\":{\"_0\":\"requestCodeValidationBaseFee The base fee for requesting code validation.\"}},\"requestCodeValidationExtraFee()\":{\"details\":\"Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\",\"returns\":{\"_0\":\"requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else.\"}},\"requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)\":{\"details\":\"Requests code validation for the given code ID on behalf of someone else. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` in the WVARA ERC20 token.\",\"params\":{\"_blobHashes\":\"The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. This is needed to verify that the transaction has expected blobs attached.\",\"_codeId\":\"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_r2\":\"ECDSA signature parameter (for permit).\",\"_requester\":\"The address of the requester on behalf of whom the code validation is requested.\",\"_s1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_s2\":\"ECDSA signature parameter (for permit).\",\"_v1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_v2\":\"ECDSA signature parameter (for permit).\"}},\"setMirror(address)\":{\"details\":\"Sets the `Mirror` implementation address.\",\"params\":{\"newMirror\":\"The new mirror implementation address.\"}},\"setRequestCodeValidationBaseFee(uint256)\":{\"details\":\"Sets the base fee for requesting code validation in WVARA ERC20 token.\",\"params\":{\"newBaseFee\":\"The new base fee for requesting code validation.\"}},\"setRequestCodeValidationExtraFee(uint256)\":{\"details\":\"Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\",\"params\":{\"newExtraFee\":\"The new extra fee for requesting code validation on behalf of someone else.\"}},\"signingThresholdFraction()\":{\"details\":\"Returns the signing threshold fraction.\",\"returns\":{\"thresholdDenominator\":\"The denominator of the signing threshold fraction.\",\"thresholdNumerator\":\"The numerator of the signing threshold fraction.\"}},\"storageView()\":{\"details\":\"Returns the storage view of the contract storage.\",\"returns\":{\"_0\":\"storageView The storage view of the contract storage.\"}},\"timelines()\":{\"details\":\"Returns the timelines.\",\"returns\":{\"_0\":\"timelines The timelines.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"Unpauses the contract.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"validatedCodesCount()\":{\"details\":\"Returns the count of validated codes.\",\"returns\":{\"_0\":\"validatedCodesCount The count of validated codes.\"}},\"validators()\":{\"details\":\"Returns the list of current validators.\",\"returns\":{\"_0\":\"validators The list of current validators.\"}},\"validatorsAggregatedPublicKey()\":{\"details\":\"Returns the aggregated public key of the current validators.\",\"returns\":{\"_0\":\"validatorsAggregatedPublicKey The aggregated public key of the current validators.\"}},\"validatorsCount()\":{\"details\":\"Returns the count of current validators.\",\"returns\":{\"_0\":\"validatorsCount The count of current validators.\"}},\"validatorsThreshold()\":{\"details\":\"Returns the threshold number of validators required for a valid signature.\",\"returns\":{\"_0\":\"threshold The threshold number of validators required for a valid signature.\"}},\"validatorsVerifiableSecretSharingCommitment()\":{\"details\":\"Returns the verifiable secret sharing commitment of the current validators. This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.\",\"returns\":{\"_0\":\"validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators.\"}},\"wrappedVara()\":{\"details\":\"Returns the address of the wrapped Vara implementation.\",\"returns\":{\"_0\":\"wrappedVara The address of the wrapped Vara implementation.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AnnouncesCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"BatchCommitted(bytes32)\":{\"notice\":\"Emitted when batch of commitments has been applied.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its `Gear.CodeState` changed.\"},\"CodeValidationRequested(bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged(bytes32)\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsCommittedForEra(uint256)\":{\"notice\":\"Emitted when validators for the next era has been set.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13\",\"dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/Router.sol\":{\"keccak256\":\"0x0ec027c603c1617e7e76cdb19ae716d3797f90efb2cc253649b98775776d8280\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://85bc845aa757e2609af57d7b1cefdbc43f3d89189230e9d11b07c49d7106b5be\",\"dweb:/ipfs/QmQDySUQWR2UYFKp1xvL7QbZcpNn4kCtPyPJkLBFeTTBYA\"]},\"src/libraries/Clones.sol\":{\"keccak256\":\"0xedec50e3e6f10f016b8f8ea91bc63f69dffe8287e755778a8ef980f51206d1d7\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://789789391f384e4b4925e49818ddac6f19b70f01d90befdeac4e2c69e2926bc3\",\"dweb:/ipfs/QmUgyWxAHKmza1mSQnkxFroBxsnzchUntEjCqsrJfK9SrT\"]},\"src/libraries/ClonesSmall.sol\":{\"keccak256\":\"0x453f0262cf06f368b969ea3dbca328ee7fae1c8b73fdbc35ffe8252142d62b70\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d8237577660ba34d8105a6ec84a699059357471364bd4efdba10195ff93f7d4b\",\"dweb:/ipfs/QmRAky7bp7z3kgd56YwSdU2pRskoPryhQwaR5sCceSC9Lv\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/SSTORE2.sol\":{\"keccak256\":\"0xd280ac6c1bf76b0996b061139591884ea767f2fa97c103a4d6abb38c449c2cdd\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://59271a683dc86fde6556b000155742076227a490581f5b38d80bdf7bfe593389\",\"dweb:/ipfs/QmWGXRjg1sDa89XHpTXMT45iJazwc3S5qA8Aio4hbqhhmm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ApproveERC20Failed"},{"inputs":[],"type":"error","name":"BatchTimestampNotInPast"},{"inputs":[],"type":"error","name":"BatchTimestampTooEarly"},{"inputs":[],"type":"error","name":"BlobNotFound"},{"inputs":[],"type":"error","name":"CodeAlreadyOnValidationOrValidated"},{"inputs":[],"type":"error","name":"CodeNotValidated"},{"inputs":[],"type":"error","name":"CodeValidationNotRequested"},{"inputs":[],"type":"error","name":"CommitmentEraNotNext"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"ElectionNotStarted"},{"inputs":[],"type":"error","name":"EmptyValidatorsList"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"EraDurationTooShort"},{"inputs":[],"type":"error","name":"ErasTimestampMustNotBeEqual"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisHashAlreadySet"},{"inputs":[],"type":"error","name":"GenesisHashNotFound"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes32","name":"providedBlobHash","type":"bytes32"},{"internalType":"bytes32","name":"expectedBlobHash","type":"bytes32"}],"type":"error","name":"InvalidBlobHash"},{"inputs":[{"internalType":"uint256","name":"providedLength","type":"uint256"},{"internalType":"uint256","name":"expectedLength","type":"uint256"}],"type":"error","name":"InvalidBlobHashesLength"},{"inputs":[],"type":"error","name":"InvalidElectionDuration"},{"inputs":[],"type":"error","name":"InvalidFROSTAggregatedPublicKey"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureCount"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureLength"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidPreviousCommittedBatchHash"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"requester","type":"address"}],"type":"error","name":"InvalidSigner"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"PredecessorBlockNotFound"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"RewardsCommitmentEraNotPrevious"},{"inputs":[],"type":"error","name":"RewardsCommitmentPredatesGenesis"},{"inputs":[],"type":"error","name":"RewardsCommitmentTimestampNotInPast"},{"inputs":[],"type":"error","name":"RouterGenesisHashNotInitialized"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SignatureVerificationFailed"},{"inputs":[],"type":"error","name":"TimestampInFuture"},{"inputs":[],"type":"error","name":"TimestampOlderThanPreviousEra"},{"inputs":[],"type":"error","name":"TooManyChainCommitments"},{"inputs":[],"type":"error","name":"TooManyRewardsCommitments"},{"inputs":[],"type":"error","name":"TooManyValidatorsCommitments"},{"inputs":[],"type":"error","name":"TransferFromFailed"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownProgram"},{"inputs":[],"type":"error","name":"ValidationBeforeGenesis"},{"inputs":[],"type":"error","name":"ValidationDelayTooBig"},{"inputs":[],"type":"error","name":"ValidatorsAlreadyScheduled"},{"inputs":[],"type":"error","name":"ValidatorsNotFoundForTimestamp"},{"inputs":[],"type":"error","name":"ZeroValueTransfer"},{"inputs":[{"internalType":"bytes32","name":"head","type":"bytes32","indexed":false}],"type":"event","name":"AnnouncesCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BatchCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32","indexed":false}],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"eraIndex","type":"uint256","indexed":false}],"type":"event","name":"ValidatorsCommittedForEra","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BatchCommitment","name":"_batch","type":"tuple","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint48","name":"blockTimestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBatchHash","type":"bytes32"},{"internalType":"uint8","name":"expiry","type":"uint8"},{"internalType":"struct Gear.ChainCommitment[]","name":"chainCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bool","name":"exited","type":"bool"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"bool","name":"valueToReceiveNegativeSign","type":"bool"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]},{"internalType":"bool","name":"call","type":"bool"}]}]},{"internalType":"bytes32","name":"head","type":"bytes32"}]},{"internalType":"struct Gear.CodeCommitment[]","name":"codeCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"struct Gear.RewardsCommitment[]","name":"rewardsCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.OperatorRewardsCommitment","name":"operators","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}]},{"internalType":"struct Gear.StakerRewardsCommitment","name":"stakers","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.ValidatorsCommitment[]","name":"validatorsCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bytes","name":"verifiableSecretSharingCommitment","type":"bytes"},{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"eraIndex","type":"uint256"}]}]},{"internalType":"enum Gear.SignatureType","name":"_signatureType","type":"uint8"},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithAbiInterface","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithAbiInterfaceAndExecutableBalance","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithExecutableBalance","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address","name":"_middleware","type":"address"},{"internalType":"uint256","name":"_eraDuration","type":"uint256"},{"internalType":"uint256","name":"_electionDuration","type":"uint256"},{"internalType":"uint256","name":"_validationDelay","type":"uint256"},{"internalType":"struct Gear.AggregatedPublicKey","name":"_aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bytes","name":"_verifiableSecretSharingCommitment","type":"bytes"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBatchHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBatchTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"middleware","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCodeValidationBaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCodeValidationExtraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_requester","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32[]","name":"_blobHashes","type":"bytes32[]"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v1","type":"uint8"},{"internalType":"bytes32","name":"_r1","type":"bytes32"},{"internalType":"bytes32","name":"_s1","type":"bytes32"},{"internalType":"uint8","name":"_v2","type":"uint8"},{"internalType":"bytes32","name":"_r2","type":"bytes32"},{"internalType":"bytes32","name":"_s2","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidationOnBehalf"},{"inputs":[{"internalType":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"uint256","name":"newBaseFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCodeValidationBaseFee"},{"inputs":[{"internalType":"uint256","name":"newExtraFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCodeValidationExtraFee"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdFraction","outputs":[{"internalType":"uint128","name":"thresholdNumerator","type":"uint128"},{"internalType":"uint128","name":"thresholdDenominator","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageView","outputs":[{"internalType":"struct IRouter.StorageView","name":"","type":"tuple","components":[{"internalType":"struct Gear.GenesisBlockInfo","name":"genesisBlock","type":"tuple","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint32","name":"number","type":"uint32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.CommittedBatchInfo","name":"latestCommittedBatch","type":"tuple","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.AddressBook","name":"implAddresses","type":"tuple","components":[{"internalType":"address","name":"mirror","type":"address"},{"internalType":"address","name":"wrappedVara","type":"address"},{"internalType":"address","name":"middleware","type":"address"}]},{"internalType":"struct Gear.ValidationSettingsView","name":"validationSettings","type":"tuple","components":[{"internalType":"uint128","name":"thresholdNumerator","type":"uint128"},{"internalType":"uint128","name":"thresholdDenominator","type":"uint128"},{"internalType":"struct Gear.ValidatorsView","name":"validators0","type":"tuple","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"verifiableSecretSharingCommitmentPointer","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"useFromTimestamp","type":"uint256"}]},{"internalType":"struct Gear.ValidatorsView","name":"validators1","type":"tuple","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"verifiableSecretSharingCommitmentPointer","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"useFromTimestamp","type":"uint256"}]}]},{"internalType":"struct Gear.ComputationSettings","name":"computeSettings","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]},{"internalType":"struct Gear.Timelines","name":"timelines","type":"tuple","components":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"election","type":"uint256"},{"internalType":"uint256","name":"validationDelay","type":"uint256"}]},{"internalType":"uint256","name":"programsCount","type":"uint256"},{"internalType":"uint256","name":"validatedCodesCount","type":"uint256"},{"internalType":"uint16","name":"maxValidators","type":"uint16"},{"internalType":"uint256","name":"requestCodeValidationBaseFee","type":"uint256"},{"internalType":"uint256","name":"requestCodeValidationExtraFee","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"timelines","outputs":[{"internalType":"struct Gear.Timelines","name":"","type":"tuple","components":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"election","type":"uint256"},{"internalType":"uint256","name":"validationDelay","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsAggregatedPublicKey","outputs":[{"internalType":"struct Gear.AggregatedPublicKey","name":"","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsVerifiableSecretSharingCommitment","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.","returns":{"_0":"domainSeparator The domain separator."}},"areValidators(address[])":{"details":"Checks if the given addresses are all validators.","returns":{"_0":"areValidators `true` if all addresses are validators, `false` otherwise."}},"codeState(bytes32)":{"details":"Returns the state of code.","returns":{"_0":"codeState The state of the code."}},"codesStates(bytes32[])":{"details":"Returns the states of multiple codes.","returns":{"_0":"codesStates The states of the codes."}},"commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])":{"details":"Commits new batch of changes to `Router` state. `CodeGotValidated` event is emitted for each code in commitment. `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.","params":{"_batch":"The batch commitment data.","_signatureType":"The type of signature to validate.","_signatures":"The signatures for the batch commitment."}},"computeSettings()":{"details":"Returns the computation settings.","returns":{"_0":"computeSettings The computation settings."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createProgram(bytes32,bytes32,address)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, and initializer. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_salt":"The salt for the program creation."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithAbiInterface(bytes32,bytes32,address,address)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_abiInterface":"The ABI interface address for the program.","_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_salt":"The salt for the program creation."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_abiInterface":"The ABI interface address for the program.","_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_deadline":"Deadline for the transaction to be executed.","_initialExecutableBalance":"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_salt":"The salt for the program creation.","_v":"ECDSA signature parameter."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_deadline":"Deadline for the transaction to be executed.","_initialExecutableBalance":"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_salt":"The salt for the program creation.","_v":"ECDSA signature parameter."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"genesisBlockHash()":{"details":"Returns the hash of the genesis block.","returns":{"_0":"genesisBlockHash The hash of the genesis block."}},"genesisTimestamp()":{"details":"Returns the timestamp of the genesis block.","returns":{"_0":"genesisTimestamp The timestamp of the genesis block."}},"initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])":{"details":"Initializes the `Router` with the given parameters.","params":{"_aggregatedPublicKey":"The aggregated public key of the initial validators. Will be used in future.","_electionDuration":"The duration of an election in seconds.","_eraDuration":"The duration of an era in seconds.","_middleware":"The address of the middleware contract.","_mirror":"The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.","_owner":"The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.","_validationDelay":"The delay before validators can start validating in seconds.","_validators":"The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, so the list of validators is used for signature verification.","_verifiableSecretSharingCommitment":"The verifiable secret sharing commitment of the initial validators. Will be used in future.","_wrappedVara":"The address of the `WrappedVara` (WVARA) ERC20 token contract."}},"isValidator(address)":{"details":"Checks if the given address is a validator.","returns":{"_0":"isValidator `true` if the address is a validator, `false` otherwise."}},"latestCommittedBatchHash()":{"details":"Returns the hash of the latest committed batch.","returns":{"_0":"latestCommittedBatchHash The hash of the latest committed batch."}},"latestCommittedBatchTimestamp()":{"details":"Returns the timestamp of the latest committed batch.","returns":{"_0":"latestCommittedBatchTimestamp The timestamp of the latest committed batch."}},"lookupGenesisHash()":{"details":"Looks up the genesis hash from previous blocks."},"middleware()":{"details":"Returns the address of the middleware implementation.","returns":{"_0":"middleware The address of the middleware implementation."}},"mirrorImpl()":{"details":"Returns the address of the mirror implementation.","returns":{"_0":"mirrorImpl The address of the mirror implementation."}},"nonces(address)":{"details":"Returns the next unused nonce for an address."},"owner()":{"details":"Returns the address of the current owner."},"pause()":{"details":"Pauses the contract."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise.","returns":{"_0":"isPaused `true` if the contract is paused, `false` otherwise."}},"programCodeId(address)":{"details":"Returns the code ID of the given program.","returns":{"_0":"codeId The code ID of the program."}},"programsCodeIds(address[])":{"details":"Returns the code IDs of the given programs.","returns":{"_0":"codesIds The code IDs of the programs."}},"programsCount()":{"details":"Returns the count of programs.","returns":{"_0":"programsCount The count of programs."}},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":"","details":"Reinitializes the `Router` to set up new storage layout. This function is intended to be called during an upgrade/wipe and can contain any logic. NOTE: Don't forget to bump `reinitializer(version)` in modifier!"},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)":{"details":"Requests code validation for the given code ID. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` in the WVARA ERC20 token.","params":{"_codeId":"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).","_deadline":"Deadline for the transaction to be executed.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_v":"ECDSA signature parameter."}},"requestCodeValidationBaseFee()":{"details":"Returns the base fee for requesting code validation in WVARA ERC20 token.","returns":{"_0":"requestCodeValidationBaseFee The base fee for requesting code validation."}},"requestCodeValidationExtraFee()":{"details":"Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.","returns":{"_0":"requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else."}},"requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)":{"details":"Requests code validation for the given code ID on behalf of someone else. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` in the WVARA ERC20 token.","params":{"_blobHashes":"The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. This is needed to verify that the transaction has expected blobs attached.","_codeId":"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).","_deadline":"Deadline for the transaction to be executed.","_r1":"ECDSA signature parameter (for requestCodeValidation).","_r2":"ECDSA signature parameter (for permit).","_requester":"The address of the requester on behalf of whom the code validation is requested.","_s1":"ECDSA signature parameter (for requestCodeValidation).","_s2":"ECDSA signature parameter (for permit).","_v1":"ECDSA signature parameter (for requestCodeValidation).","_v2":"ECDSA signature parameter (for permit)."}},"setMirror(address)":{"details":"Sets the `Mirror` implementation address.","params":{"newMirror":"The new mirror implementation address."}},"setRequestCodeValidationBaseFee(uint256)":{"details":"Sets the base fee for requesting code validation in WVARA ERC20 token.","params":{"newBaseFee":"The new base fee for requesting code validation."}},"setRequestCodeValidationExtraFee(uint256)":{"details":"Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.","params":{"newExtraFee":"The new extra fee for requesting code validation on behalf of someone else."}},"signingThresholdFraction()":{"details":"Returns the signing threshold fraction.","returns":{"thresholdDenominator":"The denominator of the signing threshold fraction.","thresholdNumerator":"The numerator of the signing threshold fraction."}},"storageView()":{"details":"Returns the storage view of the contract storage.","returns":{"_0":"storageView The storage view of the contract storage."}},"timelines()":{"details":"Returns the timelines.","returns":{"_0":"timelines The timelines."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause()":{"details":"Unpauses the contract."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"validatedCodesCount()":{"details":"Returns the count of validated codes.","returns":{"_0":"validatedCodesCount The count of validated codes."}},"validators()":{"details":"Returns the list of current validators.","returns":{"_0":"validators The list of current validators."}},"validatorsAggregatedPublicKey()":{"details":"Returns the aggregated public key of the current validators.","returns":{"_0":"validatorsAggregatedPublicKey The aggregated public key of the current validators."}},"validatorsCount()":{"details":"Returns the count of current validators.","returns":{"_0":"validatorsCount The count of current validators."}},"validatorsThreshold()":{"details":"Returns the threshold number of validators required for a valid signature.","returns":{"_0":"threshold The threshold number of validators required for a valid signature."}},"validatorsVerifiableSecretSharingCommitment()":{"details":"Returns the verifiable secret sharing commitment of the current validators. This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.","returns":{"_0":"validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators."}},"wrappedVara()":{"details":"Returns the address of the wrapped Vara implementation.","returns":{"_0":"wrappedVara The address of the wrapped Vara implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5","urls":["bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb","dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459","urls":["bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13","dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/Router.sol":{"keccak256":"0x0ec027c603c1617e7e76cdb19ae716d3797f90efb2cc253649b98775776d8280","urls":["bzz-raw://85bc845aa757e2609af57d7b1cefdbc43f3d89189230e9d11b07c49d7106b5be","dweb:/ipfs/QmQDySUQWR2UYFKp1xvL7QbZcpNn4kCtPyPJkLBFeTTBYA"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Clones.sol":{"keccak256":"0xedec50e3e6f10f016b8f8ea91bc63f69dffe8287e755778a8ef980f51206d1d7","urls":["bzz-raw://789789391f384e4b4925e49818ddac6f19b70f01d90befdeac4e2c69e2926bc3","dweb:/ipfs/QmUgyWxAHKmza1mSQnkxFroBxsnzchUntEjCqsrJfK9SrT"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/ClonesSmall.sol":{"keccak256":"0x453f0262cf06f368b969ea3dbca328ee7fae1c8b73fdbc35ffe8252142d62b70","urls":["bzz-raw://d8237577660ba34d8105a6ec84a699059357471364bd4efdba10195ff93f7d4b","dweb:/ipfs/QmRAky7bp7z3kgd56YwSdU2pRskoPryhQwaR5sCceSC9Lv"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/SSTORE2.sol":{"keccak256":"0xd280ac6c1bf76b0996b061139591884ea767f2fa97c103a4d6abb38c449c2cdd","urls":["bzz-raw://59271a683dc86fde6556b000155742076227a490581f5b38d80bdf7bfe593389","dweb:/ipfs/QmWGXRjg1sDa89XHpTXMT45iJazwc3S5qA8Aio4hbqhhmm"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":82325,"exportedSymbols":{"Clones":[82720],"ClonesSmall":[82804],"ECDSA":[51038],"EIP712Upgradeable":[44416],"FROST":[40965],"Gear":[84058],"Hashes":[41483],"IMiddleware":[74131],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001],"Memory":[41257],"NoncesUpgradeable":[43698],"OwnableUpgradeable":[42322],"PausableUpgradeable":[43858],"ReentrancyGuardTransientUpgradeable":[43943],"Router":[82324],"SSTORE2":[84514],"SlotDerivation":[48965],"StorageSlot":[49089],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:48997:165","nodes":[{"id":79424,"nodeType":"PragmaDirective","src":"74:24:165","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":79426,"nodeType":"ImportDirective","src":"100:101:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":79425,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79428,"nodeType":"ImportDirective","src":"202:98:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":43699,"symbolAliases":[{"foreign":{"id":79427,"name":"NoncesUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43698,"src":"210:17:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79430,"nodeType":"ImportDirective","src":"301:102:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":43859,"symbolAliases":[{"foreign":{"id":79429,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43858,"src":"309:19:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79432,"nodeType":"ImportDirective","src":"404:140:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":79431,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"417:35:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79434,"nodeType":"ImportDirective","src":"545:111:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":44417,"symbolAliases":[{"foreign":{"id":79433,"name":"EIP712Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44416,"src":"553:17:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79436,"nodeType":"ImportDirective","src":"657:88:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":79435,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"665:15:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79438,"nodeType":"ImportDirective","src":"746:80:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":79437,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"754:14:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79440,"nodeType":"ImportDirective","src":"827:74:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":79439,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"835:11:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79442,"nodeType":"ImportDirective","src":"902:75:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":51039,"symbolAliases":[{"foreign":{"id":79441,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"910:5:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79444,"nodeType":"ImportDirective","src":"978:52:165","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/FROST.sol","file":"frost-secp256k1-evm/FROST.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":40966,"symbolAliases":[{"foreign":{"id":79443,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"986:5:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79446,"nodeType":"ImportDirective","src":"1031:60:165","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/Memory.sol","file":"frost-secp256k1-evm/utils/Memory.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":79445,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"1039:6:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79448,"nodeType":"ImportDirective","src":"1092:73:165","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":79447,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"1100:6:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79450,"nodeType":"ImportDirective","src":"1166:48:165","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":79449,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"1174:11:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79452,"nodeType":"ImportDirective","src":"1215:40:165","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":79451,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"1223:7:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79454,"nodeType":"ImportDirective","src":"1256:40:165","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":79453,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"1264:7:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79456,"nodeType":"ImportDirective","src":"1297:50:165","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":79455,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"1305:12:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79458,"nodeType":"ImportDirective","src":"1348:48:165","nodes":[],"absolutePath":"src/libraries/Clones.sol","file":"src/libraries/Clones.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":82721,"symbolAliases":[{"foreign":{"id":79457,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82720,"src":"1356:6:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79460,"nodeType":"ImportDirective","src":"1397:58:165","nodes":[],"absolutePath":"src/libraries/ClonesSmall.sol","file":"src/libraries/ClonesSmall.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":82805,"symbolAliases":[{"foreign":{"id":79459,"name":"ClonesSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82804,"src":"1405:11:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79462,"nodeType":"ImportDirective","src":"1456:44:165","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":84059,"symbolAliases":[{"foreign":{"id":79461,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"1464:4:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79464,"nodeType":"ImportDirective","src":"1501:50:165","nodes":[],"absolutePath":"src/libraries/SSTORE2.sol","file":"src/libraries/SSTORE2.sol","nameLocation":"-1:-1:-1","scope":82325,"sourceUnit":84515,"symbolAliases":[{"foreign":{"id":79463,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84514,"src":"1509:7:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82324,"nodeType":"ContractDefinition","src":"1553:47517:165","nodes":[{"id":79481,"nodeType":"VariableDeclaration","src":"1849:106:165","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1874:12:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1849:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":79480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:66:165","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":79484,"nodeType":"VariableDeclaration","src":"2068:111:165","nodes":[],"constant":true,"mutability":"constant","name":"TRANSIENT_STORAGE","nameLocation":"2093:17:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2068:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866303262343635373337666136303435633266663533666232646634336336363931366163323136366661333033323634363638666232663661316438633030","id":79483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:66:165","typeDescriptions":{"typeIdentifier":"t_rational_108631543557424213897897473785501454225913773503351157840763824611960129686528_by_1","typeString":"int_const 1086...(70 digits omitted)...6528"},"value":"0xf02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c00"},"visibility":"private"},{"id":79487,"nodeType":"VariableDeclaration","src":"2186:55:165","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_NAME","nameLocation":"2210:11:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79485,"name":"string","nodeType":"ElementaryTypeName","src":"2186:6:165","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"566172612e45544820526f75746572","id":79486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2224:17:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_ded8ea4cbd8dfac3d256d1ee2019397a32c8630b040ad63275830e967889ecd8","typeString":"literal_string \"Vara.ETH Router\""},"value":"Vara.ETH Router"},"visibility":"private"},{"id":79490,"nodeType":"VariableDeclaration","src":"2247:44:165","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_VERSION","nameLocation":"2271:14:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79488,"name":"string","nodeType":"ElementaryTypeName","src":"2247:6:165","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"31","id":79489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2288:3:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"},"visibility":"private"},{"id":79493,"nodeType":"VariableDeclaration","src":"2298:73:165","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nameLocation":"2323:40:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79491,"name":"uint256","nodeType":"ElementaryTypeName","src":"2298:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f303030","id":79492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2366:5:165","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1_000"},"visibility":"private"},{"id":79496,"nodeType":"VariableDeclaration","src":"2377:72:165","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nameLocation":"2402:41:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79494,"name":"uint256","nodeType":"ElementaryTypeName","src":"2377:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":79495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:3:165","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"private"},{"id":79499,"nodeType":"VariableDeclaration","src":"2592:144:165","nodes":[],"constant":true,"mutability":"constant","name":"REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH","nameLocation":"2617:42:165","scope":82324,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79497,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2592:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833373564326566396239653333633634306132393566353338373364633734383333633364303139663334393436346365326665383839393936326238303937","id":79498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2670:66:165","typeDescriptions":{"typeIdentifier":"t_rational_25041847662038966976180655381136102362768580769727479521951050179079337377943_by_1","typeString":"int_const 2504...(69 digits omitted)...7943"},"value":"0x375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b8097"},"visibility":"private"},{"id":79507,"nodeType":"FunctionDefinition","src":"2811:53:165","nodes":[],"body":{"id":79506,"nodeType":"Block","src":"2825:39:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79503,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"2835:20:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2835:22:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79505,"nodeType":"ExpressionStatement","src":"2835:22:165"}]},"documentation":{"id":79500,"nodeType":"StructuredDocumentation","src":"2743:63:165","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":79501,"nodeType":"ParameterList","parameters":[],"src":"2822:2:165"},"returnParameters":{"id":79502,"nodeType":"ParameterList","parameters":[],"src":"2825:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79711,"nodeType":"FunctionDefinition","src":"4030:2502:165","nodes":[],"body":{"id":79710,"nodeType":"Block","src":"4445:2087:165","nodes":[],"statements":[{"expression":{"arguments":[{"id":79536,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79510,"src":"4470:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79535,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"4455:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:22:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79538,"nodeType":"ExpressionStatement","src":"4455:22:165"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79539,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43762,"src":"4487:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4487:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79541,"nodeType":"ExpressionStatement","src":"4487:17:165"},{"expression":{"arguments":[{"id":79543,"name":"EIP712_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79487,"src":"4528:11:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":79544,"name":"EIP712_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79490,"src":"4541:14:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":79542,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44129,"src":"4514:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":79545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79546,"nodeType":"ExpressionStatement","src":"4514:42:165"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79547,"name":"__Nonces_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43624,"src":"4566:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4566:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79549,"nodeType":"ExpressionStatement","src":"4566:15:165"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79550,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"4591:31:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4591:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79552,"nodeType":"ExpressionStatement","src":"4591:33:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79554,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4803:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":79555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4809:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"4803:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4821:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4803:19:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79558,"name":"InvalidTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74539,"src":"4824:16:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4824:18:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79553,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4795:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4795:48:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79561,"nodeType":"ExpressionStatement","src":"4795:48:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79563,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79520,"src":"4861:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4881:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4861:21:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79566,"name":"InvalidElectionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74542,"src":"4884:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4884:25:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4853:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4853:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79569,"nodeType":"ExpressionStatement","src":"4853:57:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79571,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79518,"src":"4928:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":79572,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79520,"src":"4943:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4928:32:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79574,"name":"EraDurationTooShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74545,"src":"4962:19:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4962:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79570,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4920:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4920:64:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79577,"nodeType":"ExpressionStatement","src":"4920:64:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79579,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79522,"src":"5153:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79580,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79518,"src":"5173:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":79581,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79520,"src":"5188:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5173:32:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79583,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5172:34:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":79584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5209:2:165","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"5172:39:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5153:58:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79587,"name":"ValidationDelayTooBig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74550,"src":"5213:21:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5213:23:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79578,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5145:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5145:92:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79590,"nodeType":"ExpressionStatement","src":"5145:92:165"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":79592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5264:25:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":79591,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82264,"src":"5248:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":79593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5248:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79594,"nodeType":"ExpressionStatement","src":"5248:42:165"},{"assignments":[79597],"declarations":[{"constant":false,"id":79597,"mutability":"mutable","name":"router","nameLocation":"5316:6:165","nodeType":"VariableDeclaration","scope":79710,"src":"5300:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":79596,"nodeType":"UserDefinedTypeName","pathNode":{"id":79595,"name":"Storage","nameLocations":["5300:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"5300:7:165"},"referencedDeclaration":74490,"src":"5300:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":79600,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79598,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"5325:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5325:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5300:34:165"},{"expression":{"id":79607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79601,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5345:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5352:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"5345:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79604,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"5367:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5372:10:165","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":83510,"src":"5367:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$83046_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":79606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5367:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"5345:39:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79608,"nodeType":"ExpressionStatement","src":"5345:39:165"},{"expression":{"id":79618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79609,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5394:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5401:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"5394:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":79614,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79512,"src":"5434:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":79615,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79514,"src":"5443:12:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":79616,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"5457:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":79612,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"5417:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5422:11:165","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":82922,"src":"5417:16:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$82922_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":79617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5417:52:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"5394:75:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79619,"nodeType":"ExpressionStatement","src":"5394:75:165"},{"expression":{"id":79627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79620,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5479:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5486:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"5479:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":79624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5505:18:165","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83144,"src":"5479:44:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":79625,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"5526:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5531:30:165","memberName":"VALIDATORS_THRESHOLD_NUMERATOR","nodeType":"MemberAccess","referencedDeclaration":82843,"src":"5526:35:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5479:82:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":79628,"nodeType":"ExpressionStatement","src":"5479:82:165"},{"expression":{"id":79636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79629,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5571:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79632,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5578:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"5571:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":79633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5597:20:165","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83146,"src":"5571:46:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":79634,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"5620:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5625:32:165","memberName":"VALIDATORS_THRESHOLD_DENOMINATOR","nodeType":"MemberAccess","referencedDeclaration":82847,"src":"5620:37:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5571:86:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":79637,"nodeType":"ExpressionStatement","src":"5571:86:165"},{"expression":{"id":79644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79638,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5667:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5674:15:165","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"5667:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79641,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"5692:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5697:26:165","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":83487,"src":"5692:31:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$83038_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":79643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5692:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"5667:58:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":79645,"nodeType":"ExpressionStatement","src":"5667:58:165"},{"expression":{"id":79655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79646,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5735:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79648,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5742:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"5735:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":79651,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79518,"src":"5769:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79652,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79520,"src":"5783:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79653,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79522,"src":"5802:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79649,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"5754:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5759:9:165","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":83141,"src":"5754:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$83141_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":79654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5754:65:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"5735:84:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":79656,"nodeType":"ExpressionStatement","src":"5735:84:165"},{"expression":{"id":79667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79657,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5829:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79660,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5836:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"5829:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5849:13:165","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":83088,"src":"5829:33:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":79664,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79530,"src":"5872:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":79665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5884:6:165","memberName":"length","nodeType":"MemberAccess","src":"5872:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5865:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":79662,"name":"uint16","nodeType":"ElementaryTypeName","src":"5865:6:165","typeDescriptions":{}}},"id":79666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5865:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"5829:62:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":79668,"nodeType":"ExpressionStatement","src":"5829:62:165"},{"assignments":[79670],"declarations":[{"constant":false,"id":79670,"mutability":"mutable","name":"decimalsFactor","nameLocation":"5910:14:165","nodeType":"VariableDeclaration","scope":79710,"src":"5902:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79669,"name":"uint256","nodeType":"ElementaryTypeName","src":"5902:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79678,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":79671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5927:2:165","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":79673,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79514,"src":"5946:12:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79672,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"5933:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":79674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5933:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":79675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5960:8:165","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":46861,"src":"5933:35:165","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":79676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5933:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5927:43:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5902:68:165"},{"expression":{"id":79687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79679,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"5980:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5987:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"5980:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6000:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"5980:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79684,"name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79493,"src":"6031:40:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79685,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79670,"src":"6074:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6031:57:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5980:108:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79688,"nodeType":"ExpressionStatement","src":"5980:108:165"},{"expression":{"id":79697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79689,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"6098:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6105:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6098:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6118:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":83094,"src":"6098:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79694,"name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79496,"src":"6150:41:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79695,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79670,"src":"6194:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6150:58:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6098:110:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79698,"nodeType":"ExpressionStatement","src":"6098:110:165"},{"expression":{"arguments":[{"expression":{"expression":{"id":79700,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79597,"src":"6290:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6297:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"6290:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":79702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6316:11:165","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":83149,"src":"6290:37:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"}},{"id":79703,"name":"_aggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79525,"src":"6341:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"}},{"id":79704,"name":"_verifiableSecretSharingCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79527,"src":"6375:34:165","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":79705,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79530,"src":"6423:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":79706,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6448:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":79707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6454:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"6448:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$82899_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79699,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82211,"src":"6260:16:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$82899_storage_ptr_$_t_struct$_AggregatedPublicKey_$82878_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,struct Gear.AggregatedPublicKey memory,bytes memory,address[] memory,uint256)"}},"id":79708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6260:213:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79709,"nodeType":"ExpressionStatement","src":"6260:213:165"}]},"documentation":{"id":79508,"nodeType":"StructuredDocumentation","src":"2870:1155:165","text":" @dev Initializes the `Router` with the given parameters.\n @param _owner The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.\n @param _mirror The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.\n @param _wrappedVara The address of the `WrappedVara` (WVARA) ERC20 token contract.\n @param _middleware The address of the middleware contract.\n @param _eraDuration The duration of an era in seconds.\n @param _electionDuration The duration of an election in seconds.\n @param _validationDelay The delay before validators can start validating in seconds.\n @param _aggregatedPublicKey The aggregated public key of the initial validators. Will be used in future.\n @param _verifiableSecretSharingCommitment The verifiable secret sharing commitment of the initial validators. Will be used in future.\n @param _validators The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures,\n so the list of validators is used for signature verification."},"functionSelector":"53f7fd48","implemented":true,"kind":"function","modifiers":[{"id":79533,"kind":"modifierInvocation","modifierName":{"id":79532,"name":"initializer","nameLocations":["4433:11:165"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"4433:11:165"},"nodeType":"ModifierInvocation","src":"4433:11:165"}],"name":"initialize","nameLocation":"4039:10:165","parameters":{"id":79531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79510,"mutability":"mutable","name":"_owner","nameLocation":"4067:6:165","nodeType":"VariableDeclaration","scope":79711,"src":"4059:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79509,"name":"address","nodeType":"ElementaryTypeName","src":"4059:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79512,"mutability":"mutable","name":"_mirror","nameLocation":"4091:7:165","nodeType":"VariableDeclaration","scope":79711,"src":"4083:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79511,"name":"address","nodeType":"ElementaryTypeName","src":"4083:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79514,"mutability":"mutable","name":"_wrappedVara","nameLocation":"4116:12:165","nodeType":"VariableDeclaration","scope":79711,"src":"4108:20:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79513,"name":"address","nodeType":"ElementaryTypeName","src":"4108:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79516,"mutability":"mutable","name":"_middleware","nameLocation":"4146:11:165","nodeType":"VariableDeclaration","scope":79711,"src":"4138:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79515,"name":"address","nodeType":"ElementaryTypeName","src":"4138:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79518,"mutability":"mutable","name":"_eraDuration","nameLocation":"4175:12:165","nodeType":"VariableDeclaration","scope":79711,"src":"4167:20:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79517,"name":"uint256","nodeType":"ElementaryTypeName","src":"4167:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79520,"mutability":"mutable","name":"_electionDuration","nameLocation":"4205:17:165","nodeType":"VariableDeclaration","scope":79711,"src":"4197:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79519,"name":"uint256","nodeType":"ElementaryTypeName","src":"4197:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79522,"mutability":"mutable","name":"_validationDelay","nameLocation":"4240:16:165","nodeType":"VariableDeclaration","scope":79711,"src":"4232:24:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79521,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79525,"mutability":"mutable","name":"_aggregatedPublicKey","nameLocation":"4300:20:165","nodeType":"VariableDeclaration","scope":79711,"src":"4266:54:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":79524,"nodeType":"UserDefinedTypeName","pathNode":{"id":79523,"name":"Gear.AggregatedPublicKey","nameLocations":["4266:4:165","4271:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":82878,"src":"4266:24:165"},"referencedDeclaration":82878,"src":"4266:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":79527,"mutability":"mutable","name":"_verifiableSecretSharingCommitment","nameLocation":"4345:34:165","nodeType":"VariableDeclaration","scope":79711,"src":"4330:49:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":79526,"name":"bytes","nodeType":"ElementaryTypeName","src":"4330:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":79530,"mutability":"mutable","name":"_validators","nameLocation":"4408:11:165","nodeType":"VariableDeclaration","scope":79711,"src":"4389:30:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79528,"name":"address","nodeType":"ElementaryTypeName","src":"4389:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79529,"nodeType":"ArrayTypeName","src":"4389:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4049:376:165"},"returnParameters":{"id":79534,"nodeType":"ParameterList","parameters":[],"src":"4445:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79806,"nodeType":"FunctionDefinition","src":"6852:3024:165","nodes":[],"body":{"id":79805,"nodeType":"Block","src":"6910:2966:165","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":79721,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"9183:5:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":79722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9183:7:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79720,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"9168:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9168:23:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79724,"nodeType":"ExpressionStatement","src":"9168:23:165"},{"expression":{"arguments":[{"id":79726,"name":"EIP712_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79487,"src":"9215:11:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":79727,"name":"EIP712_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79490,"src":"9228:14:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":79725,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44129,"src":"9201:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":79728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9201:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79729,"nodeType":"ExpressionStatement","src":"9201:42:165"},{"assignments":[79732],"declarations":[{"constant":false,"id":79732,"mutability":"mutable","name":"router","nameLocation":"9270:6:165","nodeType":"VariableDeclaration","scope":79805,"src":"9254:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":79731,"nodeType":"UserDefinedTypeName","pathNode":{"id":79730,"name":"Storage","nameLocations":["9254:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"9254:7:165"},"referencedDeclaration":74490,"src":"9254:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":79735,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79733,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"9279:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9279:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9254:34:165"},{"expression":{"id":79742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79736,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9298:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9305:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"9298:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79739,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"9320:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9325:10:165","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":83510,"src":"9320:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$83046_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":79741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9320:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"9298:39:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79743,"nodeType":"ExpressionStatement","src":"9298:39:165"},{"expression":{"id":79755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79744,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9347:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9354:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"9347:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":79751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9416:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9408:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":79749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9408:7:165","typeDescriptions":{}}},"id":79752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9408:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":79753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":79747,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"9377:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9382:18:165","memberName":"CommittedBatchInfo","nodeType":"MemberAccess","referencedDeclaration":83032,"src":"9377:23:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBatchInfo_$83032_storage_ptr_$","typeString":"type(struct Gear.CommittedBatchInfo storage pointer)"}},"id":79754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9402:4:165","9420:9:165"],"names":["hash","timestamp"],"nodeType":"FunctionCall","src":"9377:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_memory_ptr","typeString":"struct Gear.CommittedBatchInfo memory"}},"src":"9347:87:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":79756,"nodeType":"ExpressionStatement","src":"9347:87:165"},{"expression":{"id":79771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79757,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9444:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9451:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9444:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9464:13:165","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":83088,"src":"9444:33:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"arguments":[{"id":79766,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9513:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":79764,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"9487:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9492:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"9487:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":79767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9487:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":79768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9521:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"9487:38:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":79769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9526:6:165","memberName":"length","nodeType":"MemberAccess","src":"9487:45:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9480:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":79762,"name":"uint16","nodeType":"ElementaryTypeName","src":"9480:6:165","typeDescriptions":{}}},"id":79770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9480:53:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"9444:89:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":79772,"nodeType":"ExpressionStatement","src":"9444:89:165"},{"assignments":[79774],"declarations":[{"constant":false,"id":79774,"mutability":"mutable","name":"decimalsFactor","nameLocation":"9551:14:165","nodeType":"VariableDeclaration","scope":79805,"src":"9543:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79773,"name":"uint256","nodeType":"ElementaryTypeName","src":"9543:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79784,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":79775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9568:2:165","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"expression":{"id":79777,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9587:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9594:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"9587:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9608:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"9587:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79776,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"9574:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":79780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9574:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":79781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9621:8:165","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":46861,"src":"9574:55:165","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":79782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9574:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9568:63:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9543:88:165"},{"expression":{"id":79793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79785,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9641:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9648:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9641:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9661:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"9641:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79790,"name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79493,"src":"9692:40:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79791,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79774,"src":"9735:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9692:57:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9641:108:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79794,"nodeType":"ExpressionStatement","src":"9641:108:165"},{"expression":{"id":79803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79795,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79732,"src":"9759:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9766:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9759:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9779:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":83094,"src":"9759:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79800,"name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79496,"src":"9811:41:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79801,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79774,"src":"9855:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9811:58:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9759:110:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79804,"nodeType":"ExpressionStatement","src":"9759:110:165"}]},"documentation":{"id":79712,"nodeType":"StructuredDocumentation","src":"6538:309:165","text":" @dev Reinitializes the `Router` to set up new storage layout.\n This function is intended to be called during an upgrade/wipe and can contain any logic.\n NOTE: Don't forget to bump `reinitializer(version)` in modifier!\n @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":79715,"kind":"modifierInvocation","modifierName":{"id":79714,"name":"onlyOwner","nameLocations":["6883:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"6883:9:165"},"nodeType":"ModifierInvocation","src":"6883:9:165"},{"arguments":[{"hexValue":"35","id":79717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6907:1:165","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"}],"id":79718,"kind":"modifierInvocation","modifierName":{"id":79716,"name":"reinitializer","nameLocations":["6893:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"6893:13:165"},"nodeType":"ModifierInvocation","src":"6893:16:165"}],"name":"reinitialize","nameLocation":"6861:12:165","parameters":{"id":79713,"nodeType":"ParameterList","parameters":[],"src":"6873:2:165"},"returnParameters":{"id":79719,"nodeType":"ParameterList","parameters":[],"src":"6910:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79816,"nodeType":"FunctionDefinition","src":"10041:84:165","nodes":[],"body":{"id":79815,"nodeType":"Block","src":"10123:2:165","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":79807,"nodeType":"StructuredDocumentation","src":"9882:154:165","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":79813,"kind":"modifierInvocation","modifierName":{"id":79812,"name":"onlyOwner","nameLocations":["10113:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"10113:9:165"},"nodeType":"ModifierInvocation","src":"10113:9:165"}],"name":"_authorizeUpgrade","nameLocation":"10050:17:165","overrides":{"id":79811,"nodeType":"OverrideSpecifier","overrides":[],"src":"10104:8:165"},"parameters":{"id":79810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79809,"mutability":"mutable","name":"newImplementation","nameLocation":"10076:17:165","nodeType":"VariableDeclaration","scope":79816,"src":"10068:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79808,"name":"address","nodeType":"ElementaryTypeName","src":"10068:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10067:27:165"},"returnParameters":{"id":79814,"nodeType":"ParameterList","parameters":[],"src":"10123:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":79870,"nodeType":"FunctionDefinition","src":"10297:948:165","nodes":[],"body":{"id":79869,"nodeType":"Block","src":"10361:884:165","nodes":[],"statements":[{"assignments":[79825],"declarations":[{"constant":false,"id":79825,"mutability":"mutable","name":"router","nameLocation":"10387:6:165","nodeType":"VariableDeclaration","scope":79869,"src":"10371:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":79824,"nodeType":"UserDefinedTypeName","pathNode":{"id":79823,"name":"Storage","nameLocations":["10371:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"10371:7:165"},"referencedDeclaration":74490,"src":"10371:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":79828,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79826,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"10396:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10396:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10371:34:165"},{"assignments":[79833],"declarations":[{"constant":false,"id":79833,"mutability":"mutable","name":"validationSettings","nameLocation":"10450:18:165","nodeType":"VariableDeclaration","scope":79869,"src":"10415:53:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_memory_ptr","typeString":"struct Gear.ValidationSettingsView"},"typeName":{"id":79832,"nodeType":"UserDefinedTypeName","pathNode":{"id":79831,"name":"Gear.ValidationSettingsView","nameLocations":["10415:4:165","10420:22:165"],"nodeType":"IdentifierPath","referencedDeclaration":83165,"src":"10415:27:165"},"referencedDeclaration":83165,"src":"10415:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_storage_ptr","typeString":"struct Gear.ValidationSettingsView"}},"visibility":"internal"}],"id":79839,"initialValue":{"arguments":[{"expression":{"id":79836,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10483:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10490:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"10483:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":79834,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"10471:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10476:6:165","memberName":"toView","nodeType":"MemberAccess","referencedDeclaration":84057,"src":"10471:11:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$83153_storage_ptr_$returns$_t_struct$_ValidationSettingsView_$83165_memory_ptr_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (struct Gear.ValidationSettingsView memory)"}},"id":79838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10471:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},"nodeType":"VariableDeclarationStatement","src":"10415:94:165"},{"expression":{"arguments":[{"expression":{"id":79841,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10566:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10573:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"10566:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},{"expression":{"id":79843,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10621:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10628:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"10621:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},{"expression":{"id":79845,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10677:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10684:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"10677:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},{"id":79847,"name":"validationSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79833,"src":"10731:18:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},{"expression":{"id":79848,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10780:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79849,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10787:15:165","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"10780:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage","typeString":"struct Gear.ComputationSettings storage ref"}},{"expression":{"id":79850,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10827:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10834:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"10827:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},{"expression":{"expression":{"id":79852,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10872:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10879:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"10872:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10892:13:165","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":83082,"src":"10872:33:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79855,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"10940:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10947:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"10940:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79857,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10960:19:165","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":83085,"src":"10940:39:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79858,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"11008:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11015:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11008:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11028:13:165","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":83088,"src":"11008:33:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":79861,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"11085:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11092:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11085:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11105:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"11085:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79864,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79825,"src":"11178:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11185:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11178:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79866,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11198:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":83094,"src":"11178:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"},{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"},{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"},{"typeIdentifier":"t_struct$_ValidationSettingsView_$83165_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"},{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage","typeString":"struct Gear.ComputationSettings storage ref"},{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79840,"name":"StorageView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74457,"src":"10526:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_StorageView_$74457_storage_ptr_$","typeString":"type(struct IRouter.StorageView storage pointer)"}},"id":79867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10552:12:165","10599:20:165","10662:13:165","10711:18:165","10763:15:165","10816:9:165","10857:13:165","10919:19:165","10993:13:165","11055:28:165","11147:29:165"],"names":["genesisBlock","latestCommittedBatch","implAddresses","validationSettings","computeSettings","timelines","programsCount","validatedCodesCount","maxValidators","requestCodeValidationBaseFee","requestCodeValidationExtraFee"],"nodeType":"FunctionCall","src":"10526:712:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_memory_ptr","typeString":"struct IRouter.StorageView memory"}},"functionReturnParameters":79822,"id":79868,"nodeType":"Return","src":"10519:719:165"}]},"baseFunctions":[74643],"documentation":{"id":79817,"nodeType":"StructuredDocumentation","src":"10150:142:165","text":" @dev Returns the storage view of the contract storage.\n @return storageView The storage view of the contract storage."},"functionSelector":"c2eb812f","implemented":true,"kind":"function","modifiers":[],"name":"storageView","nameLocation":"10306:11:165","parameters":{"id":79818,"nodeType":"ParameterList","parameters":[],"src":"10317:2:165"},"returnParameters":{"id":79822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79870,"src":"10341:18:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_memory_ptr","typeString":"struct IRouter.StorageView"},"typeName":{"id":79820,"nodeType":"UserDefinedTypeName","pathNode":{"id":79819,"name":"StorageView","nameLocations":["10341:11:165"],"nodeType":"IdentifierPath","referencedDeclaration":74457,"src":"10341:11:165"},"referencedDeclaration":74457,"src":"10341:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_storage_ptr","typeString":"struct IRouter.StorageView"}},"visibility":"internal"}],"src":"10340:20:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79882,"nodeType":"FunctionDefinition","src":"11381:109:165","nodes":[],"body":{"id":79881,"nodeType":"Block","src":"11439:51:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79876,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"11456:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11456:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11466:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"11456:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11479:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"11456:27:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79875,"id":79880,"nodeType":"Return","src":"11449:34:165"}]},"baseFunctions":[74649],"documentation":{"id":79871,"nodeType":"StructuredDocumentation","src":"11251:125:165","text":" @dev Returns the hash of the genesis block.\n @return genesisBlockHash The hash of the genesis block."},"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"11390:16:165","parameters":{"id":79872,"nodeType":"ParameterList","parameters":[],"src":"11406:2:165"},"returnParameters":{"id":79875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79882,"src":"11430:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11430:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11429:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79894,"nodeType":"FunctionDefinition","src":"11636:113:165","nodes":[],"body":{"id":79893,"nodeType":"Block","src":"11693:56:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79888,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"11710:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11710:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11720:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"11710:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11733:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"11710:32:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":79887,"id":79892,"nodeType":"Return","src":"11703:39:165"}]},"baseFunctions":[74655],"documentation":{"id":79883,"nodeType":"StructuredDocumentation","src":"11496:135:165","text":" @dev Returns the timestamp of the genesis block.\n @return genesisTimestamp The timestamp of the genesis block."},"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"11645:16:165","parameters":{"id":79884,"nodeType":"ParameterList","parameters":[],"src":"11661:2:165"},"returnParameters":{"id":79887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79886,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79894,"src":"11685:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79885,"name":"uint48","nodeType":"ElementaryTypeName","src":"11685:6:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11684:8:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79906,"nodeType":"FunctionDefinition","src":"11911:125:165","nodes":[],"body":{"id":79905,"nodeType":"Block","src":"11977:59:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79900,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"11994:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11994:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12004:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"11994:30:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":79903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12025:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83029,"src":"11994:35:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79899,"id":79904,"nodeType":"Return","src":"11987:42:165"}]},"baseFunctions":[74661],"documentation":{"id":79895,"nodeType":"StructuredDocumentation","src":"11755:151:165","text":" @dev Returns the hash of the latest committed batch.\n @return latestCommittedBatchHash The hash of the latest committed batch."},"functionSelector":"71a8cf2d","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBatchHash","nameLocation":"11920:24:165","parameters":{"id":79896,"nodeType":"ParameterList","parameters":[],"src":"11944:2:165"},"returnParameters":{"id":79899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79906,"src":"11968:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11968:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11967:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79918,"nodeType":"FunctionDefinition","src":"12213:134:165","nodes":[],"body":{"id":79917,"nodeType":"Block","src":"12283:64:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79912,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"12300:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12300:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12310:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"12300:30:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":79915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12331:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83031,"src":"12300:40:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":79911,"id":79916,"nodeType":"Return","src":"12293:47:165"}]},"baseFunctions":[74667],"documentation":{"id":79907,"nodeType":"StructuredDocumentation","src":"12042:166:165","text":" @dev Returns the timestamp of the latest committed batch.\n @return latestCommittedBatchTimestamp The timestamp of the latest committed batch."},"functionSelector":"d456fd51","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBatchTimestamp","nameLocation":"12222:29:165","parameters":{"id":79908,"nodeType":"ParameterList","parameters":[],"src":"12251:2:165"},"returnParameters":{"id":79911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79918,"src":"12275:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79909,"name":"uint48","nodeType":"ElementaryTypeName","src":"12275:6:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12274:8:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79930,"nodeType":"FunctionDefinition","src":"12499:106:165","nodes":[],"body":{"id":79929,"nodeType":"Block","src":"12551:54:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79924,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"12568:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12568:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12578:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"12568:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12592:6:165","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":82915,"src":"12568:30:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79923,"id":79928,"nodeType":"Return","src":"12561:37:165"}]},"baseFunctions":[74673],"documentation":{"id":79919,"nodeType":"StructuredDocumentation","src":"12353:141:165","text":" @dev Returns the address of the mirror implementation.\n @return mirrorImpl The address of the mirror implementation."},"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"12508:10:165","parameters":{"id":79920,"nodeType":"ParameterList","parameters":[],"src":"12518:2:165"},"returnParameters":{"id":79923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79930,"src":"12542:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79921,"name":"address","nodeType":"ElementaryTypeName","src":"12542:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12541:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79942,"nodeType":"FunctionDefinition","src":"12770:112:165","nodes":[],"body":{"id":79941,"nodeType":"Block","src":"12823:59:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79936,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"12840:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12840:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12850:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"12840:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12864:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"12840:35:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79935,"id":79940,"nodeType":"Return","src":"12833:42:165"}]},"baseFunctions":[74679],"documentation":{"id":79931,"nodeType":"StructuredDocumentation","src":"12611:154:165","text":" @dev Returns the address of the wrapped Vara implementation.\n @return wrappedVara The address of the wrapped Vara implementation."},"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"12779:11:165","parameters":{"id":79932,"nodeType":"ParameterList","parameters":[],"src":"12790:2:165"},"returnParameters":{"id":79935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79942,"src":"12814:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79933,"name":"address","nodeType":"ElementaryTypeName","src":"12814:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12813:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79954,"nodeType":"FunctionDefinition","src":"13042:110:165","nodes":[],"body":{"id":79953,"nodeType":"Block","src":"13094:58:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79948,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"13111:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13111:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13121:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"13111:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13135:10:165","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":82921,"src":"13111:34:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79947,"id":79952,"nodeType":"Return","src":"13104:41:165"}]},"baseFunctions":[74685],"documentation":{"id":79943,"nodeType":"StructuredDocumentation","src":"12888:149:165","text":" @dev Returns the address of the middleware implementation.\n @return middleware The address of the middleware implementation."},"functionSelector":"f4f20ac0","implemented":true,"kind":"function","modifiers":[],"name":"middleware","nameLocation":"13051:10:165","parameters":{"id":79944,"nodeType":"ParameterList","parameters":[],"src":"13061:2:165"},"returnParameters":{"id":79947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79954,"src":"13085:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79945,"name":"address","nodeType":"ElementaryTypeName","src":"13085:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13084:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79969,"nodeType":"FunctionDefinition","src":"13345:175:165","nodes":[],"body":{"id":79968,"nodeType":"Block","src":"13440:80:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":79963,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"13483:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13483:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":79961,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"13457:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13462:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"13457:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":79965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13457:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":79966,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13494:19:165","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82883,"src":"13457:56:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"functionReturnParameters":79960,"id":79967,"nodeType":"Return","src":"13450:63:165"}]},"baseFunctions":[74692],"documentation":{"id":79955,"nodeType":"StructuredDocumentation","src":"13158:182:165","text":" @dev Returns the aggregated public key of the current validators.\n @return validatorsAggregatedPublicKey The aggregated public key of the current validators."},"functionSelector":"3bd109fa","implemented":true,"kind":"function","modifiers":[],"name":"validatorsAggregatedPublicKey","nameLocation":"13354:29:165","parameters":{"id":79956,"nodeType":"ParameterList","parameters":[],"src":"13383:2:165"},"returnParameters":{"id":79960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79969,"src":"13407:31:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":79958,"nodeType":"UserDefinedTypeName","pathNode":{"id":79957,"name":"Gear.AggregatedPublicKey","nameLocations":["13407:4:165","13412:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":82878,"src":"13407:24:165"},"referencedDeclaration":82878,"src":"13407:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"}],"src":"13406:33:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79986,"nodeType":"FunctionDefinition","src":"13986:207:165","nodes":[],"body":{"id":79985,"nodeType":"Block","src":"14078:115:165","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":79979,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"14134:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14134:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":79977,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"14108:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":79978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14113:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"14108:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":79981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14108:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":79982,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14145:40:165","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":82886,"src":"14108:77:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":79975,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84514,"src":"14095:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SSTORE2_$84514_$","typeString":"type(library SSTORE2)"}},"id":79976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14103:4:165","memberName":"read","nodeType":"MemberAccess","referencedDeclaration":84487,"src":"14095:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (address) view returns (bytes memory)"}},"id":79983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14095:91:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":79974,"id":79984,"nodeType":"Return","src":"14088:98:165"}]},"baseFunctions":[74698],"documentation":{"id":79970,"nodeType":"StructuredDocumentation","src":"13526:455:165","text":" @dev Returns the verifiable secret sharing commitment of the current validators.\n This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct.\n See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.\n @return validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators."},"functionSelector":"a5d53a44","implemented":true,"kind":"function","modifiers":[],"name":"validatorsVerifiableSecretSharingCommitment","nameLocation":"13995:43:165","parameters":{"id":79971,"nodeType":"ParameterList","parameters":[],"src":"14038:2:165"},"returnParameters":{"id":79974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79973,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79986,"src":"14064:12:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":79972,"name":"bytes","nodeType":"ElementaryTypeName","src":"14064:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14063:14:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80033,"nodeType":"FunctionDefinition","src":"14365:375:165","nodes":[],"body":{"id":80032,"nodeType":"Block","src":"14447:293:165","nodes":[],"statements":[{"assignments":[79999],"declarations":[{"constant":false,"id":79999,"mutability":"mutable","name":"_currentValidators","nameLocation":"14481:18:165","nodeType":"VariableDeclaration","scope":80032,"src":"14457:42:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":79998,"nodeType":"UserDefinedTypeName","pathNode":{"id":79997,"name":"Gear.Validators","nameLocations":["14457:4:165","14462:10:165"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"14457:15:165"},"referencedDeclaration":82899,"src":"14457:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":80005,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80002,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"14528:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14528:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80000,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"14502:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14507:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"14502:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14502:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14457:81:165"},{"body":{"id":80028,"nodeType":"Block","src":"14598:114:165","statements":[{"condition":{"id":80023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14616:39:165","subExpression":{"baseExpression":{"expression":{"id":80017,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79999,"src":"14617:18:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80018,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14636:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":82891,"src":"14617:22:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":80022,"indexExpression":{"baseExpression":{"id":80019,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79990,"src":"14640:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80021,"indexExpression":{"id":80020,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80007,"src":"14652:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14640:14:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14617:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80027,"nodeType":"IfStatement","src":"14612:90:165","trueBody":{"id":80026,"nodeType":"Block","src":"14657:45:165","statements":[{"expression":{"hexValue":"66616c7365","id":80024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14682:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":79994,"id":80025,"nodeType":"Return","src":"14675:12:165"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80007,"src":"14569:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80011,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79990,"src":"14573:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14585:6:165","memberName":"length","nodeType":"MemberAccess","src":"14573:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14569:22:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80029,"initializationExpression":{"assignments":[80007],"declarations":[{"constant":false,"id":80007,"mutability":"mutable","name":"i","nameLocation":"14562:1:165","nodeType":"VariableDeclaration","scope":80029,"src":"14554:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80006,"name":"uint256","nodeType":"ElementaryTypeName","src":"14554:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80009,"initialValue":{"hexValue":"30","id":80008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14566:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14554:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14593:3:165","subExpression":{"id":80014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80007,"src":"14593:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80016,"nodeType":"ExpressionStatement","src":"14593:3:165"},"nodeType":"ForStatement","src":"14549:163:165"},{"expression":{"hexValue":"74727565","id":80030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14729:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":79994,"id":80031,"nodeType":"Return","src":"14722:11:165"}]},"baseFunctions":[74707],"documentation":{"id":79987,"nodeType":"StructuredDocumentation","src":"14199:161:165","text":" @dev Checks if the given addresses are all validators.\n @return areValidators `true` if all addresses are validators, `false` otherwise."},"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"14374:13:165","parameters":{"id":79991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79990,"mutability":"mutable","name":"_validators","nameLocation":"14407:11:165","nodeType":"VariableDeclaration","scope":80033,"src":"14388:30:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79988,"name":"address","nodeType":"ElementaryTypeName","src":"14388:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79989,"nodeType":"ArrayTypeName","src":"14388:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14387:32:165"},"returnParameters":{"id":79994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80033,"src":"14441:4:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":79992,"name":"bool","nodeType":"ElementaryTypeName","src":"14441:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14440:6:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80051,"nodeType":"FunctionDefinition","src":"14902:144:165","nodes":[],"body":{"id":80050,"nodeType":"Block","src":"14970:76:165","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80043,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"15013:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15013:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80041,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"14987:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14992:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"14987:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14987:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15024:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":82891,"src":"14987:40:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":80048,"indexExpression":{"id":80047,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80036,"src":"15028:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14987:52:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":80040,"id":80049,"nodeType":"Return","src":"14980:59:165"}]},"baseFunctions":[74715],"documentation":{"id":80034,"nodeType":"StructuredDocumentation","src":"14746:151:165","text":" @dev Checks if the given address is a validator.\n @return isValidator `true` if the address is a validator, `false` otherwise."},"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"14911:11:165","parameters":{"id":80037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80036,"mutability":"mutable","name":"_validator","nameLocation":"14931:10:165","nodeType":"VariableDeclaration","scope":80051,"src":"14923:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80035,"name":"address","nodeType":"ElementaryTypeName","src":"14923:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14922:20:165"},"returnParameters":{"id":80040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80051,"src":"14964:4:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80038,"name":"bool","nodeType":"ElementaryTypeName","src":"14964:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14963:6:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80076,"nodeType":"FunctionDefinition","src":"15290:285:165","nodes":[],"body":{"id":80075,"nodeType":"Block","src":"15405:170:165","nodes":[],"statements":[{"assignments":[80063],"declarations":[{"constant":false,"id":80063,"mutability":"mutable","name":"router","nameLocation":"15439:6:165","nodeType":"VariableDeclaration","scope":80075,"src":"15415:30:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80062,"nodeType":"UserDefinedTypeName","pathNode":{"id":80061,"name":"IRouter.Storage","nameLocations":["15415:7:165","15423:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"15415:15:165"},"referencedDeclaration":74490,"src":"15415:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80066,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80064,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"15448:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15448:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15415:42:165"},{"expression":{"components":[{"expression":{"expression":{"id":80067,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80063,"src":"15475:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15482:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"15475:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15501:18:165","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83144,"src":"15475:44:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":80070,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80063,"src":"15521:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15528:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"15521:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15547:20:165","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83146,"src":"15521:46:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":80073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15474:94:165","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"functionReturnParameters":80058,"id":80074,"nodeType":"Return","src":"15467:101:165"}]},"baseFunctions":[74723],"documentation":{"id":80052,"nodeType":"StructuredDocumentation","src":"15052:233:165","text":" @dev Returns the signing threshold fraction.\n @return thresholdNumerator The numerator of the signing threshold fraction.\n @return thresholdDenominator The denominator of the signing threshold fraction."},"functionSelector":"e3a6684f","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdFraction","nameLocation":"15299:24:165","parameters":{"id":80053,"nodeType":"ParameterList","parameters":[],"src":"15323:2:165"},"returnParameters":{"id":80058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80055,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15355:18:165","nodeType":"VariableDeclaration","scope":80076,"src":"15347:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":80054,"name":"uint128","nodeType":"ElementaryTypeName","src":"15347:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":80057,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15383:20:165","nodeType":"VariableDeclaration","scope":80076,"src":"15375:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":80056,"name":"uint128","nodeType":"ElementaryTypeName","src":"15375:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"15346:58:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80091,"nodeType":"FunctionDefinition","src":"15707:126:165","nodes":[],"body":{"id":80090,"nodeType":"Block","src":"15768:65:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80085,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"15811:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15811:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80083,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"15785:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15790:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"15785:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15785:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15822:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"15785:41:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":80082,"id":80089,"nodeType":"Return","src":"15778:48:165"}]},"baseFunctions":[74730],"documentation":{"id":80077,"nodeType":"StructuredDocumentation","src":"15581:121:165","text":" @dev Returns the list of current validators.\n @return validators The list of current validators."},"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"15716:10:165","parameters":{"id":80078,"nodeType":"ParameterList","parameters":[],"src":"15726:2:165"},"returnParameters":{"id":80082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80091,"src":"15750:16:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":80079,"name":"address","nodeType":"ElementaryTypeName","src":"15750:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80080,"nodeType":"ArrayTypeName","src":"15750:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"15749:18:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80106,"nodeType":"FunctionDefinition","src":"15972:129:165","nodes":[],"body":{"id":80105,"nodeType":"Block","src":"16029:72:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80099,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"16072:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80097,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"16046:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16051:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"16046:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16046:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16083:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"16046:41:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":80103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16088:6:165","memberName":"length","nodeType":"MemberAccess","src":"16046:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80096,"id":80104,"nodeType":"Return","src":"16039:55:165"}]},"baseFunctions":[74736],"documentation":{"id":80092,"nodeType":"StructuredDocumentation","src":"15839:128:165","text":" @dev Returns the count of current validators.\n @return validatorsCount The count of current validators."},"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"15981:15:165","parameters":{"id":80093,"nodeType":"ParameterList","parameters":[],"src":"15996:2:165"},"returnParameters":{"id":80096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80106,"src":"16020:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80094,"name":"uint256","nodeType":"ElementaryTypeName","src":"16020:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16019:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80137,"nodeType":"FunctionDefinition","src":"16302:348:165","nodes":[],"body":{"id":80136,"nodeType":"Block","src":"16363:287:165","nodes":[],"statements":[{"assignments":[80116],"declarations":[{"constant":false,"id":80116,"mutability":"mutable","name":"router","nameLocation":"16397:6:165","nodeType":"VariableDeclaration","scope":80136,"src":"16373:30:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80115,"nodeType":"UserDefinedTypeName","pathNode":{"id":80114,"name":"IRouter.Storage","nameLocations":["16373:7:165","16381:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"16373:15:165"},"referencedDeclaration":74490,"src":"16373:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80119,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80117,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"16406:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16406:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16373:42:165"},{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":80124,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80116,"src":"16496:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80122,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"16470:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16475:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":83777,"src":"16470:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16470:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16504:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"16470:38:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":80127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16509:6:165","memberName":"length","nodeType":"MemberAccess","src":"16470:45:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":80128,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80116,"src":"16529:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16536:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"16529:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16555:18:165","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":83144,"src":"16529:44:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":80131,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80116,"src":"16587:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16594:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"16587:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$83153_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16613:20:165","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":83146,"src":"16587:46:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":80120,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"16432:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16437:19:165","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":83945,"src":"16432:24:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint128_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint256,uint128,uint128) pure returns (uint256)"}},"id":80134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16432:211:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80111,"id":80135,"nodeType":"Return","src":"16425:218:165"}]},"baseFunctions":[74742],"documentation":{"id":80107,"nodeType":"StructuredDocumentation","src":"16107:190:165","text":" @dev Returns the threshold number of validators required for a valid signature.\n @return threshold The threshold number of validators required for a valid signature."},"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"16311:19:165","parameters":{"id":80108,"nodeType":"ParameterList","parameters":[],"src":"16330:2:165"},"returnParameters":{"id":80111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80137,"src":"16354:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80109,"name":"uint256","nodeType":"ElementaryTypeName","src":"16354:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16353:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80151,"nodeType":"FunctionDefinition","src":"16822:122:165","nodes":[],"body":{"id":80150,"nodeType":"Block","src":"16906:38:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80146,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"16923:5:165","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Router_$82324_$","typeString":"type(contract super Router)"}},"id":80147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16929:6:165","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":43784,"src":"16923:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":80148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16923:14:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":80145,"id":80149,"nodeType":"Return","src":"16916:21:165"}]},"baseFunctions":[43784,74748],"documentation":{"id":80138,"nodeType":"StructuredDocumentation","src":"16656:161:165","text":" @dev Returns true if the contract is paused, and false otherwise.\n @return isPaused `true` if the contract is paused, `false` otherwise."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"16831:6:165","overrides":{"id":80142,"nodeType":"OverrideSpecifier","overrides":[{"id":80140,"name":"IRouter","nameLocations":["16861:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"16861:7:165"},{"id":80141,"name":"PausableUpgradeable","nameLocations":["16870:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":43858,"src":"16870:19:165"}],"src":"16852:38:165"},"parameters":{"id":80139,"nodeType":"ParameterList","parameters":[],"src":"16837:2:165"},"returnParameters":{"id":80145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80151,"src":"16900:4:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80143,"name":"bool","nodeType":"ElementaryTypeName","src":"16900:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16899:6:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80163,"nodeType":"FunctionDefinition","src":"17069:130:165","nodes":[],"body":{"id":80162,"nodeType":"Block","src":"17150:49:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80158,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"17167:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17167:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17177:15:165","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"17167:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":80157,"id":80161,"nodeType":"Return","src":"17160:32:165"}]},"baseFunctions":[74755],"documentation":{"id":80152,"nodeType":"StructuredDocumentation","src":"16950:114:165","text":" @dev Returns the computation settings.\n @return computeSettings The computation settings."},"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"17078:15:165","parameters":{"id":80153,"nodeType":"ParameterList","parameters":[],"src":"17093:2:165"},"returnParameters":{"id":80157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80163,"src":"17117:31:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":80155,"nodeType":"UserDefinedTypeName","pathNode":{"id":80154,"name":"Gear.ComputationSettings","nameLocations":["17117:4:165","17122:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":83038,"src":"17117:24:165"},"referencedDeclaration":83038,"src":"17117:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$83038_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"17116:33:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80180,"nodeType":"FunctionDefinition","src":"17308:134:165","nodes":[],"body":{"id":80179,"nodeType":"Block","src":"17381:61:165","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80172,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"17398:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17398:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17408:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"17398:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17421:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"17398:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80177,"indexExpression":{"id":80176,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80166,"src":"17427:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17398:37:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"functionReturnParameters":80171,"id":80178,"nodeType":"Return","src":"17391:44:165"}]},"baseFunctions":[74764],"documentation":{"id":80164,"nodeType":"StructuredDocumentation","src":"17205:98:165","text":" @dev Returns the state of code.\n @return codeState The state of the code."},"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"17317:9:165","parameters":{"id":80167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80166,"mutability":"mutable","name":"_codeId","nameLocation":"17335:7:165","nodeType":"VariableDeclaration","scope":80180,"src":"17327:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80165,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17327:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17326:17:165"},"returnParameters":{"id":80171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80180,"src":"17365:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"},"typeName":{"id":80169,"nodeType":"UserDefinedTypeName","pathNode":{"id":80168,"name":"Gear.CodeState","nameLocations":["17365:4:165","17370:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":83026,"src":"17365:14:165"},"referencedDeclaration":83026,"src":"17365:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"17364:16:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80239,"nodeType":"FunctionDefinition","src":"17566:378:165","nodes":[],"body":{"id":80238,"nodeType":"Block","src":"17663:281:165","nodes":[],"statements":[{"assignments":[80193],"declarations":[{"constant":false,"id":80193,"mutability":"mutable","name":"router","nameLocation":"17689:6:165","nodeType":"VariableDeclaration","scope":80238,"src":"17673:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80192,"nodeType":"UserDefinedTypeName","pathNode":{"id":80191,"name":"Storage","nameLocations":["17673:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"17673:7:165"},"referencedDeclaration":74490,"src":"17673:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80196,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80194,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"17698:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17698:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17673:34:165"},{"assignments":[80202],"declarations":[{"constant":false,"id":80202,"mutability":"mutable","name":"res","nameLocation":"17742:3:165","nodeType":"VariableDeclaration","scope":80238,"src":"17718:27:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":80200,"nodeType":"UserDefinedTypeName","pathNode":{"id":80199,"name":"Gear.CodeState","nameLocations":["17718:4:165","17723:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":83026,"src":"17718:14:165"},"referencedDeclaration":83026,"src":"17718:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":80201,"nodeType":"ArrayTypeName","src":"17718:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":80210,"initialValue":{"arguments":[{"expression":{"id":80207,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80184,"src":"17769:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17779:6:165","memberName":"length","nodeType":"MemberAccess","src":"17769:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17748:20:165","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$83026_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":80204,"nodeType":"UserDefinedTypeName","pathNode":{"id":80203,"name":"Gear.CodeState","nameLocations":["17752:4:165","17757:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":83026,"src":"17752:14:165"},"referencedDeclaration":83026,"src":"17752:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":80205,"nodeType":"ArrayTypeName","src":"17752:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":80209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17748:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17718:68:165"},{"body":{"id":80234,"nodeType":"Block","src":"17844:73:165","statements":[{"expression":{"id":80232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":80222,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80202,"src":"17858:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":80224,"indexExpression":{"id":80223,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80212,"src":"17862:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17858:6:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":80225,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80193,"src":"17867:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17874:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"17867:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17887:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"17867:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80231,"indexExpression":{"baseExpression":{"id":80228,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80184,"src":"17893:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80230,"indexExpression":{"id":80229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80212,"src":"17903:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17893:12:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17867:39:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"17858:48:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":80233,"nodeType":"ExpressionStatement","src":"17858:48:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80215,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80212,"src":"17817:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80216,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80184,"src":"17821:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17831:6:165","memberName":"length","nodeType":"MemberAccess","src":"17821:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17817:20:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80235,"initializationExpression":{"assignments":[80212],"declarations":[{"constant":false,"id":80212,"mutability":"mutable","name":"i","nameLocation":"17810:1:165","nodeType":"VariableDeclaration","scope":80235,"src":"17802:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80211,"name":"uint256","nodeType":"ElementaryTypeName","src":"17802:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80214,"initialValue":{"hexValue":"30","id":80213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17814:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17802:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17839:3:165","subExpression":{"id":80219,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80212,"src":"17839:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80221,"nodeType":"ExpressionStatement","src":"17839:3:165"},"nodeType":"ForStatement","src":"17797:120:165"},{"expression":{"id":80236,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80202,"src":"17934:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":80190,"id":80237,"nodeType":"Return","src":"17927:10:165"}]},"baseFunctions":[74775],"documentation":{"id":80181,"nodeType":"StructuredDocumentation","src":"17448:113:165","text":" @dev Returns the states of multiple codes.\n @return codesStates The states of the codes."},"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"17575:11:165","parameters":{"id":80185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80184,"mutability":"mutable","name":"_codesIds","nameLocation":"17606:9:165","nodeType":"VariableDeclaration","scope":80239,"src":"17587:28:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80182,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17587:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80183,"nodeType":"ArrayTypeName","src":"17587:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"17586:30:165"},"returnParameters":{"id":80190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80239,"src":"17638:23:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":80187,"nodeType":"UserDefinedTypeName","pathNode":{"id":80186,"name":"Gear.CodeState","nameLocations":["17638:4:165","17643:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":83026,"src":"17638:14:165"},"referencedDeclaration":83026,"src":"17638:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":80188,"nodeType":"ArrayTypeName","src":"17638:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$83026_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"17637:25:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80255,"nodeType":"FunctionDefinition","src":"18070:140:165","nodes":[],"body":{"id":80254,"nodeType":"Block","src":"18143:67:165","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80247,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"18160:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18160:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18170:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18160:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18183:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":83079,"src":"18160:31:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":80252,"indexExpression":{"id":80251,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80242,"src":"18192:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18160:43:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":80246,"id":80253,"nodeType":"Return","src":"18153:50:165"}]},"baseFunctions":[74783],"documentation":{"id":80240,"nodeType":"StructuredDocumentation","src":"17950:115:165","text":" @dev Returns the code ID of the given program.\n @return codeId The code ID of the program."},"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"18079:13:165","parameters":{"id":80243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80242,"mutability":"mutable","name":"_programId","nameLocation":"18101:10:165","nodeType":"VariableDeclaration","scope":80255,"src":"18093:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80241,"name":"address","nodeType":"ElementaryTypeName","src":"18093:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18092:20:165"},"returnParameters":{"id":80246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80255,"src":"18134:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80244,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18134:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18133:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80311,"nodeType":"FunctionDefinition","src":"18342:376:165","nodes":[],"body":{"id":80310,"nodeType":"Block","src":"18439:279:165","nodes":[],"statements":[{"assignments":[80267],"declarations":[{"constant":false,"id":80267,"mutability":"mutable","name":"router","nameLocation":"18465:6:165","nodeType":"VariableDeclaration","scope":80310,"src":"18449:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80266,"nodeType":"UserDefinedTypeName","pathNode":{"id":80265,"name":"Storage","nameLocations":["18449:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"18449:7:165"},"referencedDeclaration":74490,"src":"18449:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80270,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80268,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"18474:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18474:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18449:34:165"},{"assignments":[80275],"declarations":[{"constant":false,"id":80275,"mutability":"mutable","name":"res","nameLocation":"18511:3:165","nodeType":"VariableDeclaration","scope":80310,"src":"18494:20:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80273,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18494:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80274,"nodeType":"ArrayTypeName","src":"18494:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":80282,"initialValue":{"arguments":[{"expression":{"id":80279,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80259,"src":"18531:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18544:6:165","memberName":"length","nodeType":"MemberAccess","src":"18531:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18517:13:165","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":80276,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18521:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80277,"nodeType":"ArrayTypeName","src":"18521:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":80281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18517:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"18494:57:165"},{"body":{"id":80306,"nodeType":"Block","src":"18612:79:165","statements":[{"expression":{"id":80304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":80294,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80275,"src":"18626:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":80296,"indexExpression":{"id":80295,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80284,"src":"18630:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18626:6:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":80297,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80267,"src":"18635:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18642:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18635:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80299,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18655:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":83079,"src":"18635:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":80303,"indexExpression":{"baseExpression":{"id":80300,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80259,"src":"18664:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80302,"indexExpression":{"id":80301,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80284,"src":"18677:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18664:15:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18635:45:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18626:54:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80305,"nodeType":"ExpressionStatement","src":"18626:54:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80287,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80284,"src":"18582:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80288,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80259,"src":"18586:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18599:6:165","memberName":"length","nodeType":"MemberAccess","src":"18586:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18582:23:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80307,"initializationExpression":{"assignments":[80284],"declarations":[{"constant":false,"id":80284,"mutability":"mutable","name":"i","nameLocation":"18575:1:165","nodeType":"VariableDeclaration","scope":80307,"src":"18567:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80283,"name":"uint256","nodeType":"ElementaryTypeName","src":"18567:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80286,"initialValue":{"hexValue":"30","id":80285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18579:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18567:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18607:3:165","subExpression":{"id":80291,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80284,"src":"18607:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80293,"nodeType":"ExpressionStatement","src":"18607:3:165"},"nodeType":"ForStatement","src":"18562:129:165"},{"expression":{"id":80308,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80275,"src":"18708:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":80264,"id":80309,"nodeType":"Return","src":"18701:10:165"}]},"baseFunctions":[74793],"documentation":{"id":80256,"nodeType":"StructuredDocumentation","src":"18216:121:165","text":" @dev Returns the code IDs of the given programs.\n @return codesIds The code IDs of the programs."},"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"18351:15:165","parameters":{"id":80260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80259,"mutability":"mutable","name":"_programsIds","nameLocation":"18386:12:165","nodeType":"VariableDeclaration","scope":80311,"src":"18367:31:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":80257,"name":"address","nodeType":"ElementaryTypeName","src":"18367:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80258,"nodeType":"ArrayTypeName","src":"18367:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"18366:33:165"},"returnParameters":{"id":80264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80311,"src":"18421:16:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18421:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80262,"nodeType":"ArrayTypeName","src":"18421:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"18420:18:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80323,"nodeType":"FunctionDefinition","src":"18835:115:165","nodes":[],"body":{"id":80322,"nodeType":"Block","src":"18890:60:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80317,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"18907:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18907:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18917:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18907:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18930:13:165","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":83082,"src":"18907:36:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80316,"id":80321,"nodeType":"Return","src":"18900:43:165"}]},"baseFunctions":[74799],"documentation":{"id":80312,"nodeType":"StructuredDocumentation","src":"18724:106:165","text":" @dev Returns the count of programs.\n @return programsCount The count of programs."},"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"18844:13:165","parameters":{"id":80313,"nodeType":"ParameterList","parameters":[],"src":"18857:2:165"},"returnParameters":{"id":80316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80323,"src":"18881:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80314,"name":"uint256","nodeType":"ElementaryTypeName","src":"18881:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18880:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80335,"nodeType":"FunctionDefinition","src":"19087:127:165","nodes":[],"body":{"id":80334,"nodeType":"Block","src":"19148:66:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80329,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"19165:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19165:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19175:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19165:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19188:19:165","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":83085,"src":"19165:42:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80328,"id":80333,"nodeType":"Return","src":"19158:49:165"}]},"baseFunctions":[74805],"documentation":{"id":80324,"nodeType":"StructuredDocumentation","src":"18956:126:165","text":" @dev Returns the count of validated codes.\n @return validatedCodesCount The count of validated codes."},"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"19096:19:165","parameters":{"id":80325,"nodeType":"ParameterList","parameters":[],"src":"19115:2:165"},"returnParameters":{"id":80328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80335,"src":"19139:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80326,"name":"uint256","nodeType":"ElementaryTypeName","src":"19139:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19138:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80347,"nodeType":"FunctionDefinition","src":"19411:147:165","nodes":[],"body":{"id":80346,"nodeType":"Block","src":"19483:75:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80341,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"19500:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19500:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19510:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19500:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19523:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"19500:51:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80340,"id":80345,"nodeType":"Return","src":"19493:58:165"}]},"baseFunctions":[74811],"documentation":{"id":80336,"nodeType":"StructuredDocumentation","src":"19220:186:165","text":" @dev Returns the base fee for requesting code validation in WVARA ERC20 token.\n @return requestCodeValidationBaseFee The base fee for requesting code validation."},"functionSelector":"188509e9","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidationBaseFee","nameLocation":"19420:28:165","parameters":{"id":80337,"nodeType":"ParameterList","parameters":[],"src":"19448:2:165"},"returnParameters":{"id":80340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80347,"src":"19474:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80338,"name":"uint256","nodeType":"ElementaryTypeName","src":"19474:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19473:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80359,"nodeType":"FunctionDefinition","src":"19810:149:165","nodes":[],"body":{"id":80358,"nodeType":"Block","src":"19883:76:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80353,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"19900:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19900:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80355,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19910:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19900:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19923:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":83094,"src":"19900:52:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80352,"id":80357,"nodeType":"Return","src":"19893:59:165"}]},"baseFunctions":[74817],"documentation":{"id":80348,"nodeType":"StructuredDocumentation","src":"19564:241:165","text":" @dev Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\n @return requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else."},"functionSelector":"f1ef31ec","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidationExtraFee","nameLocation":"19819:29:165","parameters":{"id":80349,"nodeType":"ParameterList","parameters":[],"src":"19848:2:165"},"returnParameters":{"id":80352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80359,"src":"19874:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80350,"name":"uint256","nodeType":"ElementaryTypeName","src":"19874:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19873:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80371,"nodeType":"FunctionDefinition","src":"20056:108:165","nodes":[],"body":{"id":80370,"nodeType":"Block","src":"20121:43:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80366,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"20138:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20138:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20148:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"20138:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"functionReturnParameters":80365,"id":80369,"nodeType":"Return","src":"20131:26:165"}]},"baseFunctions":[74824],"documentation":{"id":80360,"nodeType":"StructuredDocumentation","src":"19965:86:165","text":" @dev Returns the timelines.\n @return timelines The timelines."},"functionSelector":"9eb939a8","implemented":true,"kind":"function","modifiers":[],"name":"timelines","nameLocation":"20065:9:165","parameters":{"id":80361,"nodeType":"ParameterList","parameters":[],"src":"20074:2:165"},"returnParameters":{"id":80365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80371,"src":"20098:21:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_memory_ptr","typeString":"struct Gear.Timelines"},"typeName":{"id":80363,"nodeType":"UserDefinedTypeName","pathNode":{"id":80362,"name":"Gear.Timelines","nameLocations":["20098:4:165","20103:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":83141,"src":"20098:14:165"},"referencedDeclaration":83141,"src":"20098:14:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage_ptr","typeString":"struct Gear.Timelines"}},"visibility":"internal"}],"src":"20097:23:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80381,"nodeType":"FunctionDefinition","src":"20338:104:165","nodes":[],"body":{"id":80380,"nodeType":"Block","src":"20398:44:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80377,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44179,"src":"20415:18:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":80378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20415:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":80376,"id":80379,"nodeType":"Return","src":"20408:27:165"}]},"baseFunctions":[74830],"documentation":{"id":80372,"nodeType":"StructuredDocumentation","src":"20170:163:165","text":" @dev Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.\n @return domainSeparator The domain separator."},"functionSelector":"3644e515","implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"20347:16:165","parameters":{"id":80373,"nodeType":"ParameterList","parameters":[],"src":"20363:2:165"},"returnParameters":{"id":80376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80381,"src":"20389:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20389:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20388:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80397,"nodeType":"FunctionDefinition","src":"20606:116:165","nodes":[],"body":{"id":80396,"nodeType":"Block","src":"20663:59:165","nodes":[],"statements":[{"expression":{"id":80394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80389,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"20673:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20673:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20683:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"20673:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20697:6:165","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":82915,"src":"20673:30:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":80393,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80384,"src":"20706:9:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20673:42:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80395,"nodeType":"ExpressionStatement","src":"20673:42:165"}]},"baseFunctions":[74836],"documentation":{"id":80382,"nodeType":"StructuredDocumentation","src":"20473:128:165","text":" @dev Sets the `Mirror` implementation address.\n @param newMirror The new mirror implementation address."},"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":80387,"kind":"modifierInvocation","modifierName":{"id":80386,"name":"onlyOwner","nameLocations":["20653:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"20653:9:165"},"nodeType":"ModifierInvocation","src":"20653:9:165"}],"name":"setMirror","nameLocation":"20615:9:165","parameters":{"id":80385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80384,"mutability":"mutable","name":"newMirror","nameLocation":"20633:9:165","nodeType":"VariableDeclaration","scope":80397,"src":"20625:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80383,"name":"address","nodeType":"ElementaryTypeName","src":"20625:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20624:19:165"},"returnParameters":{"id":80388,"nodeType":"ParameterList","parameters":[],"src":"20663:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80413,"nodeType":"FunctionDefinition","src":"20901:161:165","nodes":[],"body":{"id":80412,"nodeType":"Block","src":"20981:81:165","nodes":[],"statements":[{"expression":{"id":80410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80405,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"20991:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20991:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21001:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"20991:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21014:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"20991:51:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":80409,"name":"newBaseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80400,"src":"21045:10:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20991:64:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80411,"nodeType":"ExpressionStatement","src":"20991:64:165"}]},"baseFunctions":[74842],"documentation":{"id":80398,"nodeType":"StructuredDocumentation","src":"20728:168:165","text":" @dev Sets the base fee for requesting code validation in WVARA ERC20 token.\n @param newBaseFee The new base fee for requesting code validation."},"functionSelector":"11bec80d","implemented":true,"kind":"function","modifiers":[{"id":80403,"kind":"modifierInvocation","modifierName":{"id":80402,"name":"onlyOwner","nameLocations":["20971:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"20971:9:165"},"nodeType":"ModifierInvocation","src":"20971:9:165"}],"name":"setRequestCodeValidationBaseFee","nameLocation":"20910:31:165","parameters":{"id":80401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80400,"mutability":"mutable","name":"newBaseFee","nameLocation":"20950:10:165","nodeType":"VariableDeclaration","scope":80413,"src":"20942:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80399,"name":"uint256","nodeType":"ElementaryTypeName","src":"20942:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20941:20:165"},"returnParameters":{"id":80404,"nodeType":"ParameterList","parameters":[],"src":"20981:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80429,"nodeType":"FunctionDefinition","src":"21296:165:165","nodes":[],"body":{"id":80428,"nodeType":"Block","src":"21378:83:165","nodes":[],"statements":[{"expression":{"id":80426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80421,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"21388:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21388:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21398:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"21388:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21411:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":83094,"src":"21388:52:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":80425,"name":"newExtraFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80416,"src":"21443:11:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21388:66:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80427,"nodeType":"ExpressionStatement","src":"21388:66:165"}]},"baseFunctions":[74848],"documentation":{"id":80414,"nodeType":"StructuredDocumentation","src":"21068:223:165","text":" @dev Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\n @param newExtraFee The new extra fee for requesting code validation on behalf of someone else."},"functionSelector":"0b9737ce","implemented":true,"kind":"function","modifiers":[{"id":80419,"kind":"modifierInvocation","modifierName":{"id":80418,"name":"onlyOwner","nameLocations":["21368:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21368:9:165"},"nodeType":"ModifierInvocation","src":"21368:9:165"}],"name":"setRequestCodeValidationExtraFee","nameLocation":"21305:32:165","parameters":{"id":80417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80416,"mutability":"mutable","name":"newExtraFee","nameLocation":"21346:11:165","nodeType":"VariableDeclaration","scope":80429,"src":"21338:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80415,"name":"uint256","nodeType":"ElementaryTypeName","src":"21338:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21337:21:165"},"returnParameters":{"id":80420,"nodeType":"ParameterList","parameters":[],"src":"21378:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80439,"nodeType":"FunctionDefinition","src":"21516:59:165","nodes":[],"body":{"id":80438,"nodeType":"Block","src":"21550:25:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80435,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43833,"src":"21560:6:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":80436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21560:8:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80437,"nodeType":"ExpressionStatement","src":"21560:8:165"}]},"baseFunctions":[74852],"documentation":{"id":80430,"nodeType":"StructuredDocumentation","src":"21467:44:165","text":" @dev Pauses the contract."},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":80433,"kind":"modifierInvocation","modifierName":{"id":80432,"name":"onlyOwner","nameLocations":["21540:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21540:9:165"},"nodeType":"ModifierInvocation","src":"21540:9:165"}],"name":"pause","nameLocation":"21525:5:165","parameters":{"id":80431,"nodeType":"ParameterList","parameters":[],"src":"21530:2:165"},"returnParameters":{"id":80434,"nodeType":"ParameterList","parameters":[],"src":"21550:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":80449,"nodeType":"FunctionDefinition","src":"21632:63:165","nodes":[],"body":{"id":80448,"nodeType":"Block","src":"21668:27:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80445,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43857,"src":"21678:8:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":80446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21678:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80447,"nodeType":"ExpressionStatement","src":"21678:10:165"}]},"baseFunctions":[74856],"documentation":{"id":80440,"nodeType":"StructuredDocumentation","src":"21581:46:165","text":" @dev Unpauses the contract."},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":80443,"kind":"modifierInvocation","modifierName":{"id":80442,"name":"onlyOwner","nameLocations":["21658:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21658:9:165"},"nodeType":"ModifierInvocation","src":"21658:9:165"}],"name":"unpause","nameLocation":"21641:7:165","parameters":{"id":80441,"nodeType":"ParameterList","parameters":[],"src":"21648:2:165"},"returnParameters":{"id":80444,"nodeType":"ParameterList","parameters":[],"src":"21668:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":80504,"nodeType":"FunctionDefinition","src":"21796:385:165","nodes":[],"body":{"id":80503,"nodeType":"Block","src":"21834:347:165","nodes":[],"statements":[{"assignments":[80455],"declarations":[{"constant":false,"id":80455,"mutability":"mutable","name":"router","nameLocation":"21860:6:165","nodeType":"VariableDeclaration","scope":80503,"src":"21844:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80454,"nodeType":"UserDefinedTypeName","pathNode":{"id":80453,"name":"Storage","nameLocations":["21844:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"21844:7:165"},"referencedDeclaration":74490,"src":"21844:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80458,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80456,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"21869:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21869:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"21844:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80460,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80455,"src":"21897:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21904:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"21897:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21917:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"21897:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":80465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21933:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21925:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80463,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21925:7:165","typeDescriptions":{}}},"id":80466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21925:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"21897:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80468,"name":"GenesisHashAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74553,"src":"21937:21:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21937:23:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80459,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"21889:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21889:72:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80471,"nodeType":"ExpressionStatement","src":"21889:72:165"},{"assignments":[80473],"declarations":[{"constant":false,"id":80473,"mutability":"mutable","name":"genesisHash","nameLocation":"21980:11:165","nodeType":"VariableDeclaration","scope":80503,"src":"21972:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21972:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80479,"initialValue":{"arguments":[{"expression":{"expression":{"id":80475,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80455,"src":"22004:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22011:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22004:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22024:6:165","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":83043,"src":"22004:26:165","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":80474,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"21994:9:165","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21994:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"21972:59:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80481,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80473,"src":"22050:11:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22073:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22065:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22065:7:165","typeDescriptions":{}}},"id":80485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22065:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22050:25:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80487,"name":"GenesisHashNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74556,"src":"22077:19:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22077:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"22042:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22042:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80490,"nodeType":"ExpressionStatement","src":"22042:57:165"},{"expression":{"id":80501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":80491,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80455,"src":"22110:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22117:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22110:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22130:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"22110:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":80497,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80455,"src":"22147:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22154:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22147:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80499,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22167:6:165","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":83043,"src":"22147:26:165","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":80496,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22137:9:165","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22137:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22110:64:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80502,"nodeType":"ExpressionStatement","src":"22110:64:165"}]},"baseFunctions":[74860],"documentation":{"id":80450,"nodeType":"StructuredDocumentation","src":"21720:71:165","text":" @dev Looks up the genesis hash from previous blocks."},"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"21805:17:165","parameters":{"id":80451,"nodeType":"ParameterList","parameters":[],"src":"21822:2:165"},"returnParameters":{"id":80452,"nodeType":"ParameterList","parameters":[],"src":"21834:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80633,"nodeType":"FunctionDefinition","src":"23043:986:165","nodes":[],"body":{"id":80632,"nodeType":"Block","src":"23187:842:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":80522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23214:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80521,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"23205:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23205:11:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":80524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23220:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23205:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80526,"name":"BlobNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"23223:12:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23223:14:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80520,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23197:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23197:41:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80529,"nodeType":"ExpressionStatement","src":"23197:41:165"},{"assignments":[80532],"declarations":[{"constant":false,"id":80532,"mutability":"mutable","name":"router","nameLocation":"23265:6:165","nodeType":"VariableDeclaration","scope":80632,"src":"23249:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80531,"nodeType":"UserDefinedTypeName","pathNode":{"id":80530,"name":"Storage","nameLocations":["23249:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"23249:7:165"},"referencedDeclaration":74490,"src":"23249:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80535,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80533,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"23274:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23274:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"23249:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80537,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80532,"src":"23301:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23308:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"23301:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23321:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"23301:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23337:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23329:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80540,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23329:7:165","typeDescriptions":{}}},"id":80543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23329:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23301:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80545,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"23341:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23341:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23293:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23293:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80548,"nodeType":"ExpressionStatement","src":"23293:82:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"},"id":80558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":80550,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80532,"src":"23394:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23401:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23394:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23414:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"23394:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80554,"indexExpression":{"id":80553,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80507,"src":"23420:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23394:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":80555,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"23432:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23437:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"23432:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":80557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23447:7:165","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":83021,"src":"23432:22:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"23394:60:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80559,"name":"CodeAlreadyOnValidationOrValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74565,"src":"23456:34:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23456:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80549,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23386:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23386:107:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80562,"nodeType":"ExpressionStatement","src":"23386:107:165"},{"assignments":[80565],"declarations":[{"constant":false,"id":80565,"mutability":"mutable","name":"_wrappedVara","nameLocation":"23517:12:165","nodeType":"VariableDeclaration","scope":80632,"src":"23504:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":80564,"nodeType":"UserDefinedTypeName","pathNode":{"id":80563,"name":"IWrappedVara","nameLocations":["23504:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"23504:12:165"},"referencedDeclaration":75001,"src":"23504:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":80571,"initialValue":{"arguments":[{"expression":{"expression":{"id":80567,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80532,"src":"23545:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23552:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"23545:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23566:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"23545:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80566,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"23532:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":80570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23532:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"23504:74:165"},{"assignments":[80573],"declarations":[{"constant":false,"id":80573,"mutability":"mutable","name":"baseFee","nameLocation":"23597:7:165","nodeType":"VariableDeclaration","scope":80632,"src":"23589:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80572,"name":"uint256","nodeType":"ElementaryTypeName","src":"23589:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80577,"initialValue":{"expression":{"expression":{"id":80574,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80532,"src":"23607:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23614:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23607:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23627:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"23607:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23589:66:165"},{"clauses":[{"block":{"id":80592,"nodeType":"Block","src":"23748:2:165","statements":[]},"errorName":"","id":80593,"nodeType":"TryCatchClause","src":"23748:2:165"},{"block":{"id":80594,"nodeType":"Block","src":"23757:2:165","statements":[]},"errorName":"","id":80595,"nodeType":"TryCatchClause","src":"23751:8:165"}],"externalCall":{"arguments":[{"expression":{"id":80580,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23689:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23693:6:165","memberName":"sender","nodeType":"MemberAccess","src":"23689:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80584,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23709:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":80583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23701:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80582,"name":"address","nodeType":"ElementaryTypeName","src":"23701:7:165","typeDescriptions":{}}},"id":80585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23701:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80586,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80573,"src":"23716:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80587,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80509,"src":"23725:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80588,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80511,"src":"23736:2:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80589,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80513,"src":"23740:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80590,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80515,"src":"23744:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80578,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80565,"src":"23669:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23682:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"23669:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":80591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23669:78:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80596,"nodeType":"TryStatement","src":"23665:94:165"},{"assignments":[80598],"declarations":[{"constant":false,"id":80598,"mutability":"mutable","name":"success","nameLocation":"23773:7:165","nodeType":"VariableDeclaration","scope":80632,"src":"23768:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80597,"name":"bool","nodeType":"ElementaryTypeName","src":"23768:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":80609,"initialValue":{"arguments":[{"expression":{"id":80601,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23809:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23813:6:165","memberName":"sender","nodeType":"MemberAccess","src":"23809:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80605,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23829:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":80604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23821:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80603,"name":"address","nodeType":"ElementaryTypeName","src":"23821:7:165","typeDescriptions":{}}},"id":80606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23821:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80607,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80573,"src":"23836:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80599,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80565,"src":"23783:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23796:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"23783:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":80608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23783:61:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"23768:76:165"},{"expression":{"arguments":[{"id":80611,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80598,"src":"23862:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80612,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"23871:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23871:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80610,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23854:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23854:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80615,"nodeType":"ExpressionStatement","src":"23854:38:165"},{"expression":{"id":80626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":80616,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80532,"src":"23903:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80620,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23910:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23903:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23923:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"23903:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80622,"indexExpression":{"id":80619,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80507,"src":"23929:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"23903:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":80623,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"23940:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23945:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"23940:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":80625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23955:19:165","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":83023,"src":"23940:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"23903:71:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":80627,"nodeType":"ExpressionStatement","src":"23903:71:165"},{"eventCall":{"arguments":[{"id":80629,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80507,"src":"24014:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80628,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74512,"src":"23990:23:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":80630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23990:32:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80631,"nodeType":"EmitStatement","src":"23985:37:165"}]},"baseFunctions":[74874],"documentation":{"id":80505,"nodeType":"StructuredDocumentation","src":"22187:851:165","text":" @dev Requests code validation for the given code ID.\n This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar\n attached to it containing WASM bytecode. On EVM, we can only verify that there was\n at least 1 blobhash in a transaction.\n Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()`\n in the WVARA ERC20 token.\n @param _codeId The expected code ID for which the validation is requested.\n It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter."},"functionSelector":"8c4ace6a","implemented":true,"kind":"function","modifiers":[{"id":80518,"kind":"modifierInvocation","modifierName":{"id":80517,"name":"whenNotPaused","nameLocations":["23169:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"23169:13:165"},"nodeType":"ModifierInvocation","src":"23169:13:165"}],"name":"requestCodeValidation","nameLocation":"23052:21:165","parameters":{"id":80516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80507,"mutability":"mutable","name":"_codeId","nameLocation":"23082:7:165","nodeType":"VariableDeclaration","scope":80633,"src":"23074:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23074:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80509,"mutability":"mutable","name":"_deadline","nameLocation":"23099:9:165","nodeType":"VariableDeclaration","scope":80633,"src":"23091:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80508,"name":"uint256","nodeType":"ElementaryTypeName","src":"23091:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80511,"mutability":"mutable","name":"_v","nameLocation":"23116:2:165","nodeType":"VariableDeclaration","scope":80633,"src":"23110:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80510,"name":"uint8","nodeType":"ElementaryTypeName","src":"23110:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80513,"mutability":"mutable","name":"_r","nameLocation":"23128:2:165","nodeType":"VariableDeclaration","scope":80633,"src":"23120:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80512,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23120:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80515,"mutability":"mutable","name":"_s","nameLocation":"23140:2:165","nodeType":"VariableDeclaration","scope":80633,"src":"23132:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23132:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23073:70:165"},"returnParameters":{"id":80519,"nodeType":"ParameterList","parameters":[],"src":"23187:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80899,"nodeType":"FunctionDefinition","src":"25536:2418:165","nodes":[],"body":{"id":80898,"nodeType":"Block","src":"25846:2108:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":80662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25873:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80661,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"25864:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25864:11:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":80664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25879:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25864:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80666,"name":"BlobNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"25882:12:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25882:14:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80660,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25856:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25856:41:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80669,"nodeType":"ExpressionStatement","src":"25856:41:165"},{"assignments":[80672],"declarations":[{"constant":false,"id":80672,"mutability":"mutable","name":"router","nameLocation":"25924:6:165","nodeType":"VariableDeclaration","scope":80898,"src":"25908:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80671,"nodeType":"UserDefinedTypeName","pathNode":{"id":80670,"name":"Storage","nameLocations":["25908:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"25908:7:165"},"referencedDeclaration":74490,"src":"25908:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80675,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80673,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"25933:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25933:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"25908:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80677,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80672,"src":"25960:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25967:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"25960:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80679,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"25980:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"25960:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25996:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80681,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25988:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80680,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25988:7:165","typeDescriptions":{}}},"id":80683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25988:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"25960:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80685,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"26000:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26000:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80676,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25952:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25952:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80688,"nodeType":"ExpressionStatement","src":"25952:82:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"},"id":80698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":80690,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80672,"src":"26053:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80691,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26060:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"26053:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26073:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"26053:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80694,"indexExpression":{"id":80693,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80638,"src":"26079:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26053:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":80695,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"26091:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26096:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"26091:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":80697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26106:7:165","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":83021,"src":"26091:22:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"26053:60:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80699,"name":"CodeAlreadyOnValidationOrValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74565,"src":"26115:34:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26115:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80689,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26045:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26045:107:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80702,"nodeType":"ExpressionStatement","src":"26045:107:165"},{"assignments":[80704],"declarations":[{"constant":false,"id":80704,"mutability":"mutable","name":"_blobHashesLength","nameLocation":"26171:17:165","nodeType":"VariableDeclaration","scope":80898,"src":"26163:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80703,"name":"uint256","nodeType":"ElementaryTypeName","src":"26163:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80706,"initialValue":{"hexValue":"30","id":80705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26191:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26163:29:165"},{"body":{"id":80722,"nodeType":"Block","src":"26215:142:165","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80709,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"26242:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80708,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26233:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26233:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":80713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26272:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26264:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80711,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26264:7:165","typeDescriptions":{}}},"id":80714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26264:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26233:41:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80718,"nodeType":"IfStatement","src":"26229:85:165","trueBody":{"id":80717,"nodeType":"Block","src":"26276:38:165","statements":[{"id":80716,"nodeType":"Break","src":"26294:5:165"}]}},{"expression":{"id":80720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26327:19:165","subExpression":{"id":80719,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"26327:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80721,"nodeType":"ExpressionStatement","src":"26327:19:165"}]},"condition":{"hexValue":"74727565","id":80707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26209:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":80723,"nodeType":"WhileStatement","src":"26202:155:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80725,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80641,"src":"26375:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26387:6:165","memberName":"length","nodeType":"MemberAccess","src":"26375:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80727,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"26397:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26375:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":80730,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80641,"src":"26440:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26452:6:165","memberName":"length","nodeType":"MemberAccess","src":"26440:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80732,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"26460:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80729,"name":"InvalidBlobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74572,"src":"26416:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":80733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26416:62:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26367:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:112:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80735,"nodeType":"ExpressionStatement","src":"26367:112:165"},{"body":{"id":80768,"nodeType":"Block","src":"26539:174:165","statements":[{"assignments":[80748],"declarations":[{"constant":false,"id":80748,"mutability":"mutable","name":"expectedBlobHash","nameLocation":"26561:16:165","nodeType":"VariableDeclaration","scope":80768,"src":"26553:24:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80747,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26553:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80752,"initialValue":{"arguments":[{"id":80750,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80737,"src":"26589:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80749,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26580:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26580:11:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"26553:38:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":80754,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80641,"src":"26613:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80756,"indexExpression":{"id":80755,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80737,"src":"26625:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26613:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80757,"name":"expectedBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80748,"src":"26631:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26613:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":80760,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80737,"src":"26665:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":80761,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80641,"src":"26668:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80763,"indexExpression":{"id":80762,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80737,"src":"26680:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26668:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80764,"name":"expectedBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80748,"src":"26684:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80759,"name":"InvalidBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74581,"src":"26649:15:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_error_$","typeString":"function (uint256,bytes32,bytes32) pure returns (error)"}},"id":80765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26649:52:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80753,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26605:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:97:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80767,"nodeType":"ExpressionStatement","src":"26605:97:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80740,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80737,"src":"26510:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80741,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80641,"src":"26514:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26526:6:165","memberName":"length","nodeType":"MemberAccess","src":"26514:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26510:22:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80769,"initializationExpression":{"assignments":[80737],"declarations":[{"constant":false,"id":80737,"mutability":"mutable","name":"i","nameLocation":"26503:1:165","nodeType":"VariableDeclaration","scope":80769,"src":"26495:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80736,"name":"uint256","nodeType":"ElementaryTypeName","src":"26495:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80739,"initialValue":{"hexValue":"30","id":80738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26507:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26495:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26534:3:165","subExpression":{"id":80744,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80737,"src":"26534:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80746,"nodeType":"ExpressionStatement","src":"26534:3:165"},"nodeType":"ForStatement","src":"26490:223:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80771,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26789:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":80772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26795:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"26789:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":80773,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80643,"src":"26808:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26789:28:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":80776,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80643,"src":"26836:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80775,"name":"ExpiredSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74586,"src":"26819:16:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":80777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26819:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80770,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26781:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26781:66:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80779,"nodeType":"ExpressionStatement","src":"26781:66:165"},{"assignments":[80781],"declarations":[{"constant":false,"id":80781,"mutability":"mutable","name":"structHash","nameLocation":"26866:10:165","nodeType":"VariableDeclaration","scope":80898,"src":"26858:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80780,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26858:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80800,"initialValue":{"arguments":[{"arguments":[{"id":80785,"name":"REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79499,"src":"26930:42:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80786,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80636,"src":"26990:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80787,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80638,"src":"27018:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":80791,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80641,"src":"27070:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}],"expression":{"id":80789,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27053:3:165","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":80790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27057:12:165","memberName":"encodePacked","nodeType":"MemberAccess","src":"27053:16:165","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":80792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27053:29:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":80788,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"27043:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":80793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27043:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":80795,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80636,"src":"27111:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80794,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43672,"src":"27101:9:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":80796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27101:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80797,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80643,"src":"27140:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80783,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26902:3:165","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":80784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26906:6:165","memberName":"encode","nodeType":"MemberAccess","src":"26902:10:165","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":80798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26902:261:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":80782,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"26879:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":80799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:294:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"26858:315:165"},{"assignments":[80802],"declarations":[{"constant":false,"id":80802,"mutability":"mutable","name":"hash","nameLocation":"27192:4:165","nodeType":"VariableDeclaration","scope":80898,"src":"27184:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80801,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27184:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80806,"initialValue":{"arguments":[{"id":80804,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80781,"src":"27216:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80803,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44218,"src":"27199:16:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":80805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27199:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27184:43:165"},{"assignments":[80808],"declarations":[{"constant":false,"id":80808,"mutability":"mutable","name":"signer","nameLocation":"27246:6:165","nodeType":"VariableDeclaration","scope":80898,"src":"27238:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80807,"name":"address","nodeType":"ElementaryTypeName","src":"27238:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":80816,"initialValue":{"arguments":[{"id":80811,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80802,"src":"27269:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80812,"name":"_v1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80645,"src":"27275:3:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80813,"name":"_r1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80647,"src":"27280:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80814,"name":"_s1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80649,"src":"27285:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80809,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"27255:5:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$51038_$","typeString":"type(library ECDSA)"}},"id":80810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27261:7:165","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":50988,"src":"27255:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":80815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27255:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"27238:51:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":80820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80818,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80808,"src":"27307:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80819,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80636,"src":"27317:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27307:20:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":80822,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80808,"src":"27343:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80823,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80636,"src":"27351:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":80821,"name":"InvalidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74593,"src":"27329:13:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":80824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27329:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80817,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"27299:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27299:64:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80826,"nodeType":"ExpressionStatement","src":"27299:64:165"},{"assignments":[80829],"declarations":[{"constant":false,"id":80829,"mutability":"mutable","name":"_wrappedVara","nameLocation":"27387:12:165","nodeType":"VariableDeclaration","scope":80898,"src":"27374:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":80828,"nodeType":"UserDefinedTypeName","pathNode":{"id":80827,"name":"IWrappedVara","nameLocations":["27374:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"27374:12:165"},"referencedDeclaration":75001,"src":"27374:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":80835,"initialValue":{"arguments":[{"expression":{"expression":{"id":80831,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80672,"src":"27415:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27422:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"27415:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27436:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"27415:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80830,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"27402:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":80834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27402:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"27374:74:165"},{"assignments":[80837],"declarations":[{"constant":false,"id":80837,"mutability":"mutable","name":"fee","nameLocation":"27467:3:165","nodeType":"VariableDeclaration","scope":80898,"src":"27459:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80836,"name":"uint256","nodeType":"ElementaryTypeName","src":"27459:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80845,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80838,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80672,"src":"27485:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27492:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27485:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27505:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":83091,"src":"27485:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":80841,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80672,"src":"27536:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27543:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27536:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27556:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":83094,"src":"27536:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27485:100:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27459:126:165"},{"clauses":[{"block":{"id":80859,"nodeType":"Block","src":"27677:2:165","statements":[]},"errorName":"","id":80860,"nodeType":"TryCatchClause","src":"27677:2:165"},{"block":{"id":80861,"nodeType":"Block","src":"27686:2:165","statements":[]},"errorName":"","id":80862,"nodeType":"TryCatchClause","src":"27680:8:165"}],"externalCall":{"arguments":[{"id":80848,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80636,"src":"27619:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80851,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27639:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":80850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27631:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80849,"name":"address","nodeType":"ElementaryTypeName","src":"27631:7:165","typeDescriptions":{}}},"id":80852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27631:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80853,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80837,"src":"27646:3:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80854,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80643,"src":"27651:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80855,"name":"_v2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80651,"src":"27662:3:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80856,"name":"_r2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80653,"src":"27667:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80857,"name":"_s2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80655,"src":"27672:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80846,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80829,"src":"27599:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27612:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"27599:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":80858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27599:77:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80863,"nodeType":"TryStatement","src":"27595:93:165"},{"assignments":[80865],"declarations":[{"constant":false,"id":80865,"mutability":"mutable","name":"success","nameLocation":"27702:7:165","nodeType":"VariableDeclaration","scope":80898,"src":"27697:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80864,"name":"bool","nodeType":"ElementaryTypeName","src":"27697:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":80875,"initialValue":{"arguments":[{"id":80868,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80636,"src":"27738:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80871,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27758:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":80870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27750:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80869,"name":"address","nodeType":"ElementaryTypeName","src":"27750:7:165","typeDescriptions":{}}},"id":80872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27750:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80873,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80837,"src":"27765:3:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80866,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80829,"src":"27712:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27725:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"27712:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":80874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27712:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"27697:72:165"},{"expression":{"arguments":[{"id":80877,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80865,"src":"27787:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80878,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"27796:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27796:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"27779:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27779:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80881,"nodeType":"ExpressionStatement","src":"27779:38:165"},{"expression":{"id":80892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":80882,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80672,"src":"27828:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27835:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27828:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27848:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"27828:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80888,"indexExpression":{"id":80885,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80638,"src":"27854:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"27828:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":80889,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"27865:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":80890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27870:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"27865:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":80891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27880:19:165","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":83023,"src":"27865:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"27828:71:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":80893,"nodeType":"ExpressionStatement","src":"27828:71:165"},{"eventCall":{"arguments":[{"id":80895,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80638,"src":"27939:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80894,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74512,"src":"27915:23:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":80896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27915:32:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80897,"nodeType":"EmitStatement","src":"27910:37:165"}]},"baseFunctions":[74899],"documentation":{"id":80634,"nodeType":"StructuredDocumentation","src":"24035:1496:165","text":" @dev Requests code validation for the given code ID on behalf of someone else.\n This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar\n attached to it containing WASM bytecode. On EVM, we can only verify that there was\n at least 1 blobhash in a transaction.\n Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()`\n in the WVARA ERC20 token.\n @param _requester The address of the requester on behalf of whom the code validation is requested.\n @param _codeId The expected code ID for which the validation is requested.\n It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\n @param _blobHashes The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`.\n This is needed to verify that the transaction has expected blobs attached.\n @param _deadline Deadline for the transaction to be executed.\n @param _v1 ECDSA signature parameter (for requestCodeValidation).\n @param _r1 ECDSA signature parameter (for requestCodeValidation).\n @param _s1 ECDSA signature parameter (for requestCodeValidation).\n @param _v2 ECDSA signature parameter (for permit).\n @param _r2 ECDSA signature parameter (for permit).\n @param _s2 ECDSA signature parameter (for permit)."},"functionSelector":"f0fd702a","implemented":true,"kind":"function","modifiers":[{"id":80658,"kind":"modifierInvocation","modifierName":{"id":80657,"name":"whenNotPaused","nameLocations":["25832:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"25832:13:165"},"nodeType":"ModifierInvocation","src":"25832:13:165"}],"name":"requestCodeValidationOnBehalf","nameLocation":"25545:29:165","parameters":{"id":80656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80636,"mutability":"mutable","name":"_requester","nameLocation":"25592:10:165","nodeType":"VariableDeclaration","scope":80899,"src":"25584:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80635,"name":"address","nodeType":"ElementaryTypeName","src":"25584:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80638,"mutability":"mutable","name":"_codeId","nameLocation":"25620:7:165","nodeType":"VariableDeclaration","scope":80899,"src":"25612:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80637,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25612:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80641,"mutability":"mutable","name":"_blobHashes","nameLocation":"25656:11:165","nodeType":"VariableDeclaration","scope":80899,"src":"25637:30:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80639,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25637:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80640,"nodeType":"ArrayTypeName","src":"25637:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":80643,"mutability":"mutable","name":"_deadline","nameLocation":"25685:9:165","nodeType":"VariableDeclaration","scope":80899,"src":"25677:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80642,"name":"uint256","nodeType":"ElementaryTypeName","src":"25677:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80645,"mutability":"mutable","name":"_v1","nameLocation":"25710:3:165","nodeType":"VariableDeclaration","scope":80899,"src":"25704:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80644,"name":"uint8","nodeType":"ElementaryTypeName","src":"25704:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80647,"mutability":"mutable","name":"_r1","nameLocation":"25731:3:165","nodeType":"VariableDeclaration","scope":80899,"src":"25723:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80646,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25723:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80649,"mutability":"mutable","name":"_s1","nameLocation":"25752:3:165","nodeType":"VariableDeclaration","scope":80899,"src":"25744:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80648,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25744:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80651,"mutability":"mutable","name":"_v2","nameLocation":"25771:3:165","nodeType":"VariableDeclaration","scope":80899,"src":"25765:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80650,"name":"uint8","nodeType":"ElementaryTypeName","src":"25765:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80653,"mutability":"mutable","name":"_r2","nameLocation":"25792:3:165","nodeType":"VariableDeclaration","scope":80899,"src":"25784:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25784:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80655,"mutability":"mutable","name":"_s2","nameLocation":"25813:3:165","nodeType":"VariableDeclaration","scope":80899,"src":"25805:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80654,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25805:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"25574:248:165"},"returnParameters":{"id":80659,"nodeType":"ParameterList","parameters":[],"src":"25846:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80944,"nodeType":"FunctionDefinition","src":"29034:396:165","nodes":[],"body":{"id":80943,"nodeType":"Block","src":"29188:242:165","nodes":[],"statements":[{"assignments":[80914,null],"declarations":[{"constant":false,"id":80914,"mutability":"mutable","name":"mirror","nameLocation":"29207:6:165","nodeType":"VariableDeclaration","scope":80943,"src":"29199:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80913,"name":"address","nodeType":"ElementaryTypeName","src":"29199:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":80920,"initialValue":{"arguments":[{"id":80916,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80902,"src":"29233:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80917,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80904,"src":"29242:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":80918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29249:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":80915,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81471,"src":"29218:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":80919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29218:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"29198:56:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":80930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80925,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80906,"src":"29305:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":80928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29337:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29329:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80926,"name":"address","nodeType":"ElementaryTypeName","src":"29329:7:165","typeDescriptions":{}}},"id":80929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29329:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29305:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":80933,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80906,"src":"29355:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"29305:70:165","trueExpression":{"expression":{"id":80931,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29342:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29346:6:165","memberName":"sender","nodeType":"MemberAccess","src":"29342:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80935,"name":"mirrorImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79930,"src":"29377:10:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":80936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29377:12:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":80937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29391:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":80938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29397:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":80922,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80914,"src":"29273:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80921,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"29265:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":80923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29265:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":80924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29294:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"29265:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":80939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29265:134:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80940,"nodeType":"ExpressionStatement","src":"29265:134:165"},{"expression":{"id":80941,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80914,"src":"29417:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":80912,"id":80942,"nodeType":"Return","src":"29410:13:165"}]},"baseFunctions":[74911],"documentation":{"id":80900,"nodeType":"StructuredDocumentation","src":"27960:1069:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, and initializer.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support,\n so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"3683c4d2","implemented":true,"kind":"function","modifiers":[{"id":80909,"kind":"modifierInvocation","modifierName":{"id":80908,"name":"whenNotPaused","nameLocations":["29144:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"29144:13:165"},"nodeType":"ModifierInvocation","src":"29144:13:165"}],"name":"createProgram","nameLocation":"29043:13:165","parameters":{"id":80907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80902,"mutability":"mutable","name":"_codeId","nameLocation":"29065:7:165","nodeType":"VariableDeclaration","scope":80944,"src":"29057:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29057:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80904,"mutability":"mutable","name":"_salt","nameLocation":"29082:5:165","nodeType":"VariableDeclaration","scope":80944,"src":"29074:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29074:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80906,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"29097:20:165","nodeType":"VariableDeclaration","scope":80944,"src":"29089:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80905,"name":"address","nodeType":"ElementaryTypeName","src":"29089:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29056:62:165"},"returnParameters":{"id":80912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80944,"src":"29175:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80910,"name":"address","nodeType":"ElementaryTypeName","src":"29175:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29174:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81049,"nodeType":"FunctionDefinition","src":"30903:1031:165","nodes":[],"body":{"id":81048,"nodeType":"Block","src":"31208:726:165","nodes":[],"statements":[{"assignments":[80969,80972],"declarations":[{"constant":false,"id":80969,"mutability":"mutable","name":"mirror","nameLocation":"31227:6:165","nodeType":"VariableDeclaration","scope":81048,"src":"31219:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80968,"name":"address","nodeType":"ElementaryTypeName","src":"31219:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80972,"mutability":"mutable","name":"router","nameLocation":"31251:6:165","nodeType":"VariableDeclaration","scope":81048,"src":"31235:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80971,"nodeType":"UserDefinedTypeName","pathNode":{"id":80970,"name":"Storage","nameLocations":["31235:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31235:7:165"},"referencedDeclaration":74490,"src":"31235:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80978,"initialValue":{"arguments":[{"id":80974,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80947,"src":"31276:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80975,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80949,"src":"31285:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":80976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31292:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":80973,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81471,"src":"31261:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":80977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31261:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"31218:79:165"},{"assignments":[80981],"declarations":[{"constant":false,"id":80981,"mutability":"mutable","name":"_wrappedVara","nameLocation":"31321:12:165","nodeType":"VariableDeclaration","scope":81048,"src":"31308:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":80980,"nodeType":"UserDefinedTypeName","pathNode":{"id":80979,"name":"IWrappedVara","nameLocations":["31308:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"31308:12:165"},"referencedDeclaration":75001,"src":"31308:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":80987,"initialValue":{"arguments":[{"expression":{"expression":{"id":80983,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80972,"src":"31349:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31356:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"31349:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31370:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"31349:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80982,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"31336:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":80986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31336:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"31308:74:165"},{"clauses":[{"block":{"id":81002,"nodeType":"Block","src":"31494:2:165","statements":[]},"errorName":"","id":81003,"nodeType":"TryCatchClause","src":"31494:2:165"},{"block":{"id":81004,"nodeType":"Block","src":"31503:2:165","statements":[]},"errorName":"","id":81005,"nodeType":"TryCatchClause","src":"31497:8:165"}],"externalCall":{"arguments":[{"expression":{"id":80990,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31417:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31421:6:165","memberName":"sender","nodeType":"MemberAccess","src":"31417:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80994,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31437:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":80993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31429:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80992,"name":"address","nodeType":"ElementaryTypeName","src":"31429:7:165","typeDescriptions":{}}},"id":80995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31429:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80996,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80953,"src":"31444:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":80997,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80955,"src":"31471:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80998,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80957,"src":"31482:2:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80999,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80959,"src":"31486:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81000,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80961,"src":"31490:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80988,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80981,"src":"31397:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31410:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"31397:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":81001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31397:96:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81006,"nodeType":"TryStatement","src":"31393:112:165"},{"assignments":[81008],"declarations":[{"constant":false,"id":81008,"mutability":"mutable","name":"success","nameLocation":"31519:7:165","nodeType":"VariableDeclaration","scope":81048,"src":"31514:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81007,"name":"bool","nodeType":"ElementaryTypeName","src":"31514:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":81019,"initialValue":{"arguments":[{"expression":{"id":81011,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31555:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31559:6:165","memberName":"sender","nodeType":"MemberAccess","src":"31555:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81015,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31575:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":81014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31567:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81013,"name":"address","nodeType":"ElementaryTypeName","src":"31567:7:165","typeDescriptions":{}}},"id":81016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31567:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81017,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80953,"src":"31582:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":81009,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80981,"src":"31529:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31542:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"31529:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":81018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31529:79:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"31514:94:165"},{"expression":{"arguments":[{"id":81021,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81008,"src":"31626:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81022,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"31635:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31635:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81020,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"31618:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31618:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81025,"nodeType":"ExpressionStatement","src":"31618:38:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81030,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80951,"src":"31724:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":81033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31756:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31748:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81031,"name":"address","nodeType":"ElementaryTypeName","src":"31748:7:165","typeDescriptions":{}}},"id":81034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31748:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"31724:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":81038,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80951,"src":"31774:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31724:70:165","trueExpression":{"expression":{"id":81036,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31761:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31765:6:165","memberName":"sender","nodeType":"MemberAccess","src":"31761:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81040,"name":"mirrorImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79930,"src":"31812:10:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":81041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31812:12:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":81042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31842:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":81043,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80953,"src":"31864:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":81027,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80969,"src":"31675:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81026,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"31667:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":81028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31667:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":81029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31696:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"31667:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31667:236:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81045,"nodeType":"ExpressionStatement","src":"31667:236:165"},{"expression":{"id":81046,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80969,"src":"31921:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":80967,"id":81047,"nodeType":"Return","src":"31914:13:165"}]},"baseFunctions":[74933],"documentation":{"id":80945,"nodeType":"StructuredDocumentation","src":"29436:1462:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance\n in WVARA ERC20 token.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support,\n so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"0d91bf2a","implemented":true,"kind":"function","modifiers":[{"id":80964,"kind":"modifierInvocation","modifierName":{"id":80963,"name":"whenNotPaused","nameLocations":["31176:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"31176:13:165"},"nodeType":"ModifierInvocation","src":"31176:13:165"}],"name":"createProgramWithExecutableBalance","nameLocation":"30912:34:165","parameters":{"id":80962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80947,"mutability":"mutable","name":"_codeId","nameLocation":"30964:7:165","nodeType":"VariableDeclaration","scope":81049,"src":"30956:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80946,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30956:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80949,"mutability":"mutable","name":"_salt","nameLocation":"30989:5:165","nodeType":"VariableDeclaration","scope":81049,"src":"30981:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30981:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80951,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"31012:20:165","nodeType":"VariableDeclaration","scope":81049,"src":"31004:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80950,"name":"address","nodeType":"ElementaryTypeName","src":"31004:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80953,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"31050:25:165","nodeType":"VariableDeclaration","scope":81049,"src":"31042:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":80952,"name":"uint128","nodeType":"ElementaryTypeName","src":"31042:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":80955,"mutability":"mutable","name":"_deadline","nameLocation":"31093:9:165","nodeType":"VariableDeclaration","scope":81049,"src":"31085:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80954,"name":"uint256","nodeType":"ElementaryTypeName","src":"31085:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80957,"mutability":"mutable","name":"_v","nameLocation":"31118:2:165","nodeType":"VariableDeclaration","scope":81049,"src":"31112:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80956,"name":"uint8","nodeType":"ElementaryTypeName","src":"31112:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80959,"mutability":"mutable","name":"_r","nameLocation":"31138:2:165","nodeType":"VariableDeclaration","scope":81049,"src":"31130:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31130:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80961,"mutability":"mutable","name":"_s","nameLocation":"31158:2:165","nodeType":"VariableDeclaration","scope":81049,"src":"31150:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31150:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"30946:220:165"},"returnParameters":{"id":80967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81049,"src":"31199:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80965,"name":"address","nodeType":"ElementaryTypeName","src":"31199:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31198:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81095,"nodeType":"FunctionDefinition","src":"33096:448:165","nodes":[],"body":{"id":81094,"nodeType":"Block","src":"33299:245:165","nodes":[],"statements":[{"assignments":[81066,null],"declarations":[{"constant":false,"id":81066,"mutability":"mutable","name":"mirror","nameLocation":"33318:6:165","nodeType":"VariableDeclaration","scope":81094,"src":"33310:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81065,"name":"address","nodeType":"ElementaryTypeName","src":"33310:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":81072,"initialValue":{"arguments":[{"id":81068,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81052,"src":"33344:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81069,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81054,"src":"33353:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":81070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33360:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81067,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81471,"src":"33329:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":81071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33329:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"33309:57:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81077,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81056,"src":"33417:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":81080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33449:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33441:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81078,"name":"address","nodeType":"ElementaryTypeName","src":"33441:7:165","typeDescriptions":{}}},"id":81081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33441:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"33417:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":81085,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81056,"src":"33467:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33417:70:165","trueExpression":{"expression":{"id":81083,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33454:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33458:6:165","memberName":"sender","nodeType":"MemberAccess","src":"33454:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81087,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81058,"src":"33489:13:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":81088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33504:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":81089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33511:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":81074,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81066,"src":"33385:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81073,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"33377:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":81075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33377:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":81076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33406:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"33377:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33377:136:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81091,"nodeType":"ExpressionStatement","src":"33377:136:165"},{"expression":{"id":81092,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81066,"src":"33531:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":81064,"id":81093,"nodeType":"Return","src":"33524:13:165"}]},"baseFunctions":[74947],"documentation":{"id":81050,"nodeType":"StructuredDocumentation","src":"31940:1151:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support,\n so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _abiInterface The ABI interface address for the program.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"0c18d277","implemented":true,"kind":"function","modifiers":[{"id":81061,"kind":"modifierInvocation","modifierName":{"id":81060,"name":"whenNotPaused","nameLocations":["33267:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"33267:13:165"},"nodeType":"ModifierInvocation","src":"33267:13:165"}],"name":"createProgramWithAbiInterface","nameLocation":"33105:29:165","parameters":{"id":81059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81052,"mutability":"mutable","name":"_codeId","nameLocation":"33152:7:165","nodeType":"VariableDeclaration","scope":81095,"src":"33144:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33144:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81054,"mutability":"mutable","name":"_salt","nameLocation":"33177:5:165","nodeType":"VariableDeclaration","scope":81095,"src":"33169:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33169:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81056,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"33200:20:165","nodeType":"VariableDeclaration","scope":81095,"src":"33192:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81055,"name":"address","nodeType":"ElementaryTypeName","src":"33192:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81058,"mutability":"mutable","name":"_abiInterface","nameLocation":"33238:13:165","nodeType":"VariableDeclaration","scope":81095,"src":"33230:21:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81057,"name":"address","nodeType":"ElementaryTypeName","src":"33230:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33134:123:165"},"returnParameters":{"id":81064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81095,"src":"33290:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81062,"name":"address","nodeType":"ElementaryTypeName","src":"33290:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33289:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81201,"nodeType":"FunctionDefinition","src":"35100:1080:165","nodes":[],"body":{"id":81200,"nodeType":"Block","src":"35451:729:165","nodes":[],"statements":[{"assignments":[81122,81125],"declarations":[{"constant":false,"id":81122,"mutability":"mutable","name":"mirror","nameLocation":"35470:6:165","nodeType":"VariableDeclaration","scope":81200,"src":"35462:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81121,"name":"address","nodeType":"ElementaryTypeName","src":"35462:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81125,"mutability":"mutable","name":"router","nameLocation":"35494:6:165","nodeType":"VariableDeclaration","scope":81200,"src":"35478:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81124,"nodeType":"UserDefinedTypeName","pathNode":{"id":81123,"name":"Storage","nameLocations":["35478:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"35478:7:165"},"referencedDeclaration":74490,"src":"35478:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81131,"initialValue":{"arguments":[{"id":81127,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81098,"src":"35519:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81128,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81100,"src":"35528:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":81129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35535:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81126,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81471,"src":"35504:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":81130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35504:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"35461:80:165"},{"assignments":[81134],"declarations":[{"constant":false,"id":81134,"mutability":"mutable","name":"_wrappedVara","nameLocation":"35565:12:165","nodeType":"VariableDeclaration","scope":81200,"src":"35552:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":81133,"nodeType":"UserDefinedTypeName","pathNode":{"id":81132,"name":"IWrappedVara","nameLocations":["35552:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"35552:12:165"},"referencedDeclaration":75001,"src":"35552:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":81140,"initialValue":{"arguments":[{"expression":{"expression":{"id":81136,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81125,"src":"35593:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35600:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"35593:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35614:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"35593:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81135,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"35580:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":81139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35580:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"35552:74:165"},{"clauses":[{"block":{"id":81155,"nodeType":"Block","src":"35738:2:165","statements":[]},"errorName":"","id":81156,"nodeType":"TryCatchClause","src":"35738:2:165"},{"block":{"id":81157,"nodeType":"Block","src":"35747:2:165","statements":[]},"errorName":"","id":81158,"nodeType":"TryCatchClause","src":"35741:8:165"}],"externalCall":{"arguments":[{"expression":{"id":81143,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"35661:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35665:6:165","memberName":"sender","nodeType":"MemberAccess","src":"35661:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81147,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"35681:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":81146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35673:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81145,"name":"address","nodeType":"ElementaryTypeName","src":"35673:7:165","typeDescriptions":{}}},"id":81148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35673:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81149,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81106,"src":"35688:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":81150,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81108,"src":"35715:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81151,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81110,"src":"35726:2:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":81152,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81112,"src":"35730:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81153,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81114,"src":"35734:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81141,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81134,"src":"35641:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35654:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"35641:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":81154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35641:96:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81159,"nodeType":"TryStatement","src":"35637:112:165"},{"assignments":[81161],"declarations":[{"constant":false,"id":81161,"mutability":"mutable","name":"success","nameLocation":"35763:7:165","nodeType":"VariableDeclaration","scope":81200,"src":"35758:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81160,"name":"bool","nodeType":"ElementaryTypeName","src":"35758:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":81172,"initialValue":{"arguments":[{"expression":{"id":81164,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"35799:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35803:6:165","memberName":"sender","nodeType":"MemberAccess","src":"35799:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81168,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"35819:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":81167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35811:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81166,"name":"address","nodeType":"ElementaryTypeName","src":"35811:7:165","typeDescriptions":{}}},"id":81169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35811:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81170,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81106,"src":"35826:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":81162,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81134,"src":"35773:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35786:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"35773:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":81171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35773:79:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"35758:94:165"},{"expression":{"arguments":[{"id":81174,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81161,"src":"35870:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81175,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"35879:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35879:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81173,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"35862:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35862:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81178,"nodeType":"ExpressionStatement","src":"35862:38:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81183,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81102,"src":"35968:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":81186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36000:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35992:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81184,"name":"address","nodeType":"ElementaryTypeName","src":"35992:7:165","typeDescriptions":{}}},"id":81187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35992:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"35968:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":81191,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81102,"src":"36018:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"35968:70:165","trueExpression":{"expression":{"id":81189,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36005:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36009:6:165","memberName":"sender","nodeType":"MemberAccess","src":"36005:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81193,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81104,"src":"36056:13:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":81194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"36087:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":81195,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81106,"src":"36110:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":81180,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81122,"src":"35919:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81179,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"35911:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":81181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35911:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":81182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35940:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"35911:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35911:238:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81197,"nodeType":"ExpressionStatement","src":"35911:238:165"},{"expression":{"id":81198,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81122,"src":"36167:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":81120,"id":81199,"nodeType":"Return","src":"36160:13:165"}]},"baseFunctions":[74971],"documentation":{"id":81096,"nodeType":"StructuredDocumentation","src":"33550:1545:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance\n in WVARA ERC20 token.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support,\n so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _abiInterface The ABI interface address for the program.\n @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"ee32004f","implemented":true,"kind":"function","modifiers":[{"id":81117,"kind":"modifierInvocation","modifierName":{"id":81116,"name":"whenNotPaused","nameLocations":["35419:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"35419:13:165"},"nodeType":"ModifierInvocation","src":"35419:13:165"}],"name":"createProgramWithAbiInterfaceAndExecutableBalance","nameLocation":"35109:49:165","parameters":{"id":81115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81098,"mutability":"mutable","name":"_codeId","nameLocation":"35176:7:165","nodeType":"VariableDeclaration","scope":81201,"src":"35168:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81097,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35168:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81100,"mutability":"mutable","name":"_salt","nameLocation":"35201:5:165","nodeType":"VariableDeclaration","scope":81201,"src":"35193:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81099,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35193:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81102,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"35224:20:165","nodeType":"VariableDeclaration","scope":81201,"src":"35216:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81101,"name":"address","nodeType":"ElementaryTypeName","src":"35216:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81104,"mutability":"mutable","name":"_abiInterface","nameLocation":"35262:13:165","nodeType":"VariableDeclaration","scope":81201,"src":"35254:21:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81103,"name":"address","nodeType":"ElementaryTypeName","src":"35254:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81106,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"35293:25:165","nodeType":"VariableDeclaration","scope":81201,"src":"35285:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":81105,"name":"uint128","nodeType":"ElementaryTypeName","src":"35285:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":81108,"mutability":"mutable","name":"_deadline","nameLocation":"35336:9:165","nodeType":"VariableDeclaration","scope":81201,"src":"35328:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81107,"name":"uint256","nodeType":"ElementaryTypeName","src":"35328:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81110,"mutability":"mutable","name":"_v","nameLocation":"35361:2:165","nodeType":"VariableDeclaration","scope":81201,"src":"35355:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":81109,"name":"uint8","nodeType":"ElementaryTypeName","src":"35355:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":81112,"mutability":"mutable","name":"_r","nameLocation":"35381:2:165","nodeType":"VariableDeclaration","scope":81201,"src":"35373:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35373:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81114,"mutability":"mutable","name":"_s","nameLocation":"35401:2:165","nodeType":"VariableDeclaration","scope":81201,"src":"35393:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81113,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35393:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"35158:251:165"},"returnParameters":{"id":81120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81201,"src":"35442:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81118,"name":"address","nodeType":"ElementaryTypeName","src":"35442:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35441:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81368,"nodeType":"FunctionDefinition","src":"36648:2151:165","nodes":[],"body":{"id":81367,"nodeType":"Block","src":"36824:1975:165","nodes":[],"statements":[{"assignments":[81218],"declarations":[{"constant":false,"id":81218,"mutability":"mutable","name":"router","nameLocation":"36850:6:165","nodeType":"VariableDeclaration","scope":81367,"src":"36834:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81217,"nodeType":"UserDefinedTypeName","pathNode":{"id":81216,"name":"Storage","nameLocations":["36834:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"36834:7:165"},"referencedDeclaration":74490,"src":"36834:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81221,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":81219,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"36859:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":81220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36859:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"36834:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":81230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81223,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"36887:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36894:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"36887:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"36907:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"36887:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36923:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36915:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":81226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"36915:7:165","typeDescriptions":{}}},"id":81229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36915:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"36887:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81231,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"36927:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36927:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81222,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"36879:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36879:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81234,"nodeType":"ExpressionStatement","src":"36879:82:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81235,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"37125:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37132:8:165","memberName":"reserved","nodeType":"MemberAccess","referencedDeclaration":74461,"src":"37125:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37144:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37125:20:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81262,"nodeType":"IfStatement","src":"37121:295:165","trueBody":{"id":81261,"nodeType":"Block","src":"37147:269:165","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":81242,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37193:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37200:9:165","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":82956,"src":"37193:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81244,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37211:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37218:6:165","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":82965,"src":"37211:13:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":81240,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"37169:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37174:18:165","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":83474,"src":"37169:23:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint8_$returns$_t_bool_$","typeString":"function (bytes32,uint8) view returns (bool)"}},"id":81246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37169:56:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81247,"name":"PredecessorBlockNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74600,"src":"37227:24:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37227:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81239,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37161:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37161:93:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81250,"nodeType":"ExpressionStatement","src":"37161:93:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81252,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"37338:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37344:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"37338:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":81254,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37356:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37363:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"37356:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"37338:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81257,"name":"BatchTimestampNotInPast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74602,"src":"37379:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37379:25:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81251,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37330:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37330:75:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81260,"nodeType":"ExpressionStatement","src":"37330:75:165"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":81269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81264,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"37529:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37536:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"37529:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37557:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83029,"src":"37529:32:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":81267,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37565:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37572:26:165","memberName":"previousCommittedBatchHash","nodeType":"MemberAccess","referencedDeclaration":82962,"src":"37565:33:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"37529:69:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81270,"name":"InvalidPreviousCommittedBatchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74604,"src":"37600:33:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37600:35:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81263,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37508:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37508:137:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81273,"nodeType":"ExpressionStatement","src":"37508:137:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":81280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81275,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"37664:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37671:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"37664:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81277,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37692:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83031,"src":"37664:37:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":81278,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37705:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37712:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"37705:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"37664:62:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81281,"name":"BatchTimestampTooEarly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74606,"src":"37728:22:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37728:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81274,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37656:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37656:97:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81284,"nodeType":"ExpressionStatement","src":"37656:97:165"},{"assignments":[81286],"declarations":[{"constant":false,"id":81286,"mutability":"mutable","name":"_chainCommitmentHash","nameLocation":"37772:20:165","nodeType":"VariableDeclaration","scope":81367,"src":"37764:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81285,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37764:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81291,"initialValue":{"arguments":[{"id":81288,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"37808:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81289,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37816:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81287,"name":"_commitChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81534,"src":"37795:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$82986_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37795:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"37764:59:165"},{"assignments":[81293],"declarations":[{"constant":false,"id":81293,"mutability":"mutable","name":"_codeCommitmentsHash","nameLocation":"37841:20:165","nodeType":"VariableDeclaration","scope":81367,"src":"37833:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81292,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37833:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81298,"initialValue":{"arguments":[{"id":81295,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"37877:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81296,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37885:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81294,"name":"_commitCodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81676,"src":"37864:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$82986_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37864:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"37833:59:165"},{"assignments":[81300],"declarations":[{"constant":false,"id":81300,"mutability":"mutable","name":"_rewardsCommitmentHash","nameLocation":"37910:22:165","nodeType":"VariableDeclaration","scope":81367,"src":"37902:30:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37902:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81305,"initialValue":{"arguments":[{"id":81302,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"37950:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81303,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"37958:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81301,"name":"_commitRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81833,"src":"37935:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$82986_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37935:30:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"37902:63:165"},{"assignments":[81307],"declarations":[{"constant":false,"id":81307,"mutability":"mutable","name":"_validatorsCommitmentHash","nameLocation":"37983:25:165","nodeType":"VariableDeclaration","scope":81367,"src":"37975:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37975:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81312,"initialValue":{"arguments":[{"id":81309,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"38029:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81310,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38037:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81308,"name":"_commitValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81979,"src":"38011:17:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$82986_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38011:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"37975:69:165"},{"assignments":[81314],"declarations":[{"constant":false,"id":81314,"mutability":"mutable","name":"_batchHash","nameLocation":"38063:10:165","nodeType":"VariableDeclaration","scope":81367,"src":"38055:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38055:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81330,"initialValue":{"arguments":[{"expression":{"id":81317,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38114:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38121:9:165","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":82956,"src":"38114:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81319,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38144:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38151:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"38144:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":81321,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38179:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38186:26:165","memberName":"previousCommittedBatchHash","nodeType":"MemberAccess","referencedDeclaration":82962,"src":"38179:33:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81323,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38226:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38233:6:165","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":82965,"src":"38226:13:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":81325,"name":"_chainCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81286,"src":"38253:20:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81326,"name":"_codeCommitmentsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81293,"src":"38287:20:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81327,"name":"_rewardsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81300,"src":"38321:22:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81328,"name":"_validatorsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81307,"src":"38357:25:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81315,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"38076:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38081:19:165","memberName":"batchCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":83318,"src":"38076:24:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,uint8,bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":81329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38076:316:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38055:337:165"},{"expression":{"id":81337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":81331,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"38403:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38410:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"38403:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38431:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83029,"src":"38403:32:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81336,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81314,"src":"38438:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"38403:45:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":81338,"nodeType":"ExpressionStatement","src":"38403:45:165"},{"expression":{"id":81346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":81339,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"38458:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38465:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"38458:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$83032_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38486:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83031,"src":"38458:37:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":81344,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38498:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38505:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"38498:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"38458:61:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":81347,"nodeType":"ExpressionStatement","src":"38458:61:165"},{"eventCall":{"arguments":[{"id":81349,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81314,"src":"38550:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":81348,"name":"BatchCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74495,"src":"38535:14:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":81350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38535:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81351,"nodeType":"EmitStatement","src":"38530:31:165"},{"expression":{"arguments":[{"arguments":[{"id":81355,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81218,"src":"38636:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81356,"name":"TRANSIENT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79484,"src":"38644:17:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81357,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81314,"src":"38663:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81358,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81208,"src":"38675:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},{"id":81359,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81211,"src":"38691:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},{"expression":{"id":81360,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81205,"src":"38704:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38711:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"38704:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81353,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"38593:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38598:20:165","memberName":"validateSignaturesAt","nodeType":"MemberAccess","referencedDeclaration":83760,"src":"38593:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_bytes32_$_t_bytes32_$_t_enum$_SignatureType_$83199_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes32,enum Gear.SignatureType,bytes calldata[] calldata,uint256) returns (bool)"}},"id":81362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38593:146:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81363,"name":"SignatureVerificationFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74634,"src":"38753:27:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38753:29:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81352,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"38572:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38572:220:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81366,"nodeType":"ExpressionStatement","src":"38572:220:165"}]},"baseFunctions":[74984],"documentation":{"id":81202,"nodeType":"StructuredDocumentation","src":"36186:457:165","text":" @dev Commits new batch of changes to `Router` state.\n `CodeGotValidated` event is emitted for each code in commitment.\n `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.\n @param _batch The batch commitment data.\n @param _signatureType The type of signature to validate.\n @param _signatures The signatures for the batch commitment."},"functionSelector":"b24fcac0","implemented":true,"kind":"function","modifiers":[{"id":81214,"kind":"modifierInvocation","modifierName":{"id":81213,"name":"nonReentrant","nameLocations":["36811:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":43886,"src":"36811:12:165"},"nodeType":"ModifierInvocation","src":"36811:12:165"}],"name":"commitBatch","nameLocation":"36657:11:165","parameters":{"id":81212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81205,"mutability":"mutable","name":"_batch","nameLocation":"36708:6:165","nodeType":"VariableDeclaration","scope":81368,"src":"36678:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81204,"nodeType":"UserDefinedTypeName","pathNode":{"id":81203,"name":"Gear.BatchCommitment","nameLocations":["36678:4:165","36683:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"36678:20:165"},"referencedDeclaration":82986,"src":"36678:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"},{"constant":false,"id":81208,"mutability":"mutable","name":"_signatureType","nameLocation":"36743:14:165","nodeType":"VariableDeclaration","scope":81368,"src":"36724:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"},"typeName":{"id":81207,"nodeType":"UserDefinedTypeName","pathNode":{"id":81206,"name":"Gear.SignatureType","nameLocations":["36724:4:165","36729:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":83199,"src":"36724:18:165"},"referencedDeclaration":83199,"src":"36724:18:165","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$83199","typeString":"enum Gear.SignatureType"}},"visibility":"internal"},{"constant":false,"id":81211,"mutability":"mutable","name":"_signatures","nameLocation":"36784:11:165","nodeType":"VariableDeclaration","scope":81368,"src":"36767:28:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":81209,"name":"bytes","nodeType":"ElementaryTypeName","src":"36767:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":81210,"nodeType":"ArrayTypeName","src":"36767:7:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"36668:133:165"},"returnParameters":{"id":81215,"nodeType":"ParameterList","parameters":[],"src":"36824:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81471,"nodeType":"FunctionDefinition","src":"38843:934:165","nodes":[],"body":{"id":81470,"nodeType":"Block","src":"38957:820:165","nodes":[],"statements":[{"assignments":[81384],"declarations":[{"constant":false,"id":81384,"mutability":"mutable","name":"router","nameLocation":"38983:6:165","nodeType":"VariableDeclaration","scope":81470,"src":"38967:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81383,"nodeType":"UserDefinedTypeName","pathNode":{"id":81382,"name":"Storage","nameLocations":["38967:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"38967:7:165"},"referencedDeclaration":74490,"src":"38967:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81387,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":81385,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"38992:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":81386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38992:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"38967:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":81396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81389,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81384,"src":"39019:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39026:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"39019:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39039:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"39019:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39055:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39047:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":81392,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39047:7:165","typeDescriptions":{}}},"id":81395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39047:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"39019:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81397,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"39059:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39059:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39011:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39011:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81400,"nodeType":"ExpressionStatement","src":"39011:82:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"},"id":81410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":81402,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81384,"src":"39112:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39119:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39112:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39132:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"39112:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81406,"indexExpression":{"id":81405,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81370,"src":"39138:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39112:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":81407,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"39150:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39155:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"39150:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":81409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39165:9:165","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":83025,"src":"39150:24:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"39112:62:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81411,"name":"CodeNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74596,"src":"39176:16:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39176:18:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81401,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39104:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39104:91:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81414,"nodeType":"ExpressionStatement","src":"39104:91:165"},{"assignments":[81416],"declarations":[{"constant":false,"id":81416,"mutability":"mutable","name":"salt","nameLocation":"39364:4:165","nodeType":"VariableDeclaration","scope":81470,"src":"39356:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81415,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39356:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81422,"initialValue":{"arguments":[{"id":81419,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81370,"src":"39406:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81420,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81372,"src":"39415:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81417,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"39371:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":81418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39378:27:165","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41482,"src":"39371:34:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":81421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39371:50:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"39356:65:165"},{"assignments":[81424],"declarations":[{"constant":false,"id":81424,"mutability":"mutable","name":"actorId","nameLocation":"39439:7:165","nodeType":"VariableDeclaration","scope":81470,"src":"39431:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81423,"name":"address","nodeType":"ElementaryTypeName","src":"39431:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":81443,"initialValue":{"condition":{"id":81425,"name":"_isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81374,"src":"39449:8:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":81438,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"39572:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":81437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39564:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81436,"name":"address","nodeType":"ElementaryTypeName","src":"39564:7:165","typeDescriptions":{}}},"id":81439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39564:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81440,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81416,"src":"39579:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81434,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82720,"src":"39538:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$82720_$","typeString":"type(library Clones)"}},"id":81435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39545:18:165","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":82489,"src":"39538:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":81441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39538:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"39449:135:165","trueExpression":{"arguments":[{"arguments":[{"id":81430,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"39511:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82324","typeString":"contract Router"}],"id":81429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39503:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81428,"name":"address","nodeType":"ElementaryTypeName","src":"39503:7:165","typeDescriptions":{}}},"id":81431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39503:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81432,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81416,"src":"39518:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81426,"name":"ClonesSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82804,"src":"39472:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ClonesSmall_$82804_$","typeString":"type(library ClonesSmall)"}},"id":81427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39484:18:165","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":82742,"src":"39472:30:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":81433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39472:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39431:153:165"},{"expression":{"id":81452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":81444,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81384,"src":"39595:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39602:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39595:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39615:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":83079,"src":"39595:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":81450,"indexExpression":{"id":81447,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81424,"src":"39624:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"39595:37:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81451,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81370,"src":"39635:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"39595:47:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":81453,"nodeType":"ExpressionStatement","src":"39595:47:165"},{"expression":{"id":81459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"39652:35:165","subExpression":{"expression":{"expression":{"id":81454,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81384,"src":"39652:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39659:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39652:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"39672:13:165","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":83082,"src":"39652:33:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81460,"nodeType":"ExpressionStatement","src":"39652:35:165"},{"eventCall":{"arguments":[{"id":81462,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81424,"src":"39718:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81463,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81370,"src":"39727:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":81461,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74531,"src":"39703:14:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":81464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39703:32:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81465,"nodeType":"EmitStatement","src":"39698:37:165"},{"expression":{"components":[{"id":81466,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81424,"src":"39754:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81467,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81384,"src":"39763:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"id":81468,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"39753:17:165","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"functionReturnParameters":81381,"id":81469,"nodeType":"Return","src":"39746:24:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"38852:14:165","parameters":{"id":81375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81370,"mutability":"mutable","name":"_codeId","nameLocation":"38875:7:165","nodeType":"VariableDeclaration","scope":81471,"src":"38867:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81369,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38867:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81372,"mutability":"mutable","name":"_salt","nameLocation":"38892:5:165","nodeType":"VariableDeclaration","scope":81471,"src":"38884:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38884:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81374,"mutability":"mutable","name":"_isSmall","nameLocation":"38904:8:165","nodeType":"VariableDeclaration","scope":81471,"src":"38899:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81373,"name":"bool","nodeType":"ElementaryTypeName","src":"38899:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38866:47:165"},"returnParameters":{"id":81381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81471,"src":"38931:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81376,"name":"address","nodeType":"ElementaryTypeName","src":"38931:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81471,"src":"38940:15:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81379,"nodeType":"UserDefinedTypeName","pathNode":{"id":81378,"name":"Storage","nameLocations":["38940:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"38940:7:165"},"referencedDeclaration":74490,"src":"38940:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"38930:26:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81534,"nodeType":"FunctionDefinition","src":"39783:683:165","nodes":[],"body":{"id":81533,"nodeType":"Block","src":"39893:573:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81483,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"39911:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39918:15:165","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":82970,"src":"39911:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$82940_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":81485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39934:6:165","memberName":"length","nodeType":"MemberAccess","src":"39911:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":81486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39944:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"39911:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81488,"name":"TooManyChainCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74608,"src":"39947:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39947:25:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81482,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39903:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39903:70:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81491,"nodeType":"ExpressionStatement","src":"39903:70:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81492,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"39988:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39995:15:165","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":82970,"src":"39988:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$82940_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":81494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40011:6:165","memberName":"length","nodeType":"MemberAccess","src":"39988:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40021:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"39988:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81502,"nodeType":"IfStatement","src":"39984:177:165","trueBody":{"id":81501,"nodeType":"Block","src":"40024:137:165","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":81498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40147:2:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":81497,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"40137:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":81499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40137:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81481,"id":81500,"nodeType":"Return","src":"40130:20:165"}]}},{"assignments":[81507],"declarations":[{"constant":false,"id":81507,"mutability":"mutable","name":"_commitment","nameLocation":"40201:11:165","nodeType":"VariableDeclaration","scope":81533,"src":"40171:41:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_calldata_ptr","typeString":"struct Gear.ChainCommitment"},"typeName":{"id":81506,"nodeType":"UserDefinedTypeName","pathNode":{"id":81505,"name":"Gear.ChainCommitment","nameLocations":["40171:4:165","40176:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":82940,"src":"40171:20:165"},"referencedDeclaration":82940,"src":"40171:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_storage_ptr","typeString":"struct Gear.ChainCommitment"}},"visibility":"internal"}],"id":81512,"initialValue":{"baseExpression":{"expression":{"id":81508,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"40215:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40222:15:165","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":82970,"src":"40215:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$82940_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":81511,"indexExpression":{"hexValue":"30","id":81510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40238:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40215:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"40171:69:165"},{"assignments":[81514],"declarations":[{"constant":false,"id":81514,"mutability":"mutable","name":"_transitionsHash","nameLocation":"40259:16:165","nodeType":"VariableDeclaration","scope":81533,"src":"40251:24:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40251:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81520,"initialValue":{"arguments":[{"id":81516,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81474,"src":"40297:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":81517,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81507,"src":"40305:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":81518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40317:11:165","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":82936,"src":"40305:23:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":81515,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82099,"src":"40278:18:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_array$_t_struct$_StateTransition_$83133_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":81519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40278:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"40251:78:165"},{"eventCall":{"arguments":[{"expression":{"id":81522,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81507,"src":"40364:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":81523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40376:4:165","memberName":"head","nodeType":"MemberAccess","referencedDeclaration":82939,"src":"40364:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":81521,"name":"AnnouncesCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74500,"src":"40345:18:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":81524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40345:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81525,"nodeType":"EmitStatement","src":"40340:41:165"},{"expression":{"arguments":[{"id":81528,"name":"_transitionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81514,"src":"40424:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81529,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81507,"src":"40442:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$82940_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":81530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40454:4:165","memberName":"head","nodeType":"MemberAccess","referencedDeclaration":82939,"src":"40442:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81526,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"40399:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40404:19:165","memberName":"chainCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":83216,"src":"40399:24:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":81531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40399:60:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81481,"id":81532,"nodeType":"Return","src":"40392:67:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitChain","nameLocation":"39792:12:165","parameters":{"id":81478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81474,"mutability":"mutable","name":"router","nameLocation":"39821:6:165","nodeType":"VariableDeclaration","scope":81534,"src":"39805:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81473,"nodeType":"UserDefinedTypeName","pathNode":{"id":81472,"name":"Storage","nameLocations":["39805:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"39805:7:165"},"referencedDeclaration":74490,"src":"39805:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81477,"mutability":"mutable","name":"_batch","nameLocation":"39859:6:165","nodeType":"VariableDeclaration","scope":81534,"src":"39829:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81476,"nodeType":"UserDefinedTypeName","pathNode":{"id":81475,"name":"Gear.BatchCommitment","nameLocations":["39829:4:165","39834:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"39829:20:165"},"referencedDeclaration":82986,"src":"39829:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"39804:62:165"},"returnParameters":{"id":81481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81534,"src":"39884:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39884:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"39883:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81676,"nodeType":"FunctionDefinition","src":"40472:1402:165","nodes":[],"body":{"id":81675,"nodeType":"Block","src":"40582:1292:165","nodes":[],"statements":[{"assignments":[81546],"declarations":[{"constant":false,"id":81546,"mutability":"mutable","name":"codeCommitmentsLen","nameLocation":"40600:18:165","nodeType":"VariableDeclaration","scope":81675,"src":"40592:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81545,"name":"uint256","nodeType":"ElementaryTypeName","src":"40592:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81550,"initialValue":{"expression":{"expression":{"id":81547,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81540,"src":"40621:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40628:15:165","memberName":"codeCommitments","nodeType":"MemberAccess","referencedDeclaration":82975,"src":"40621:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$82930_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":81549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40644:6:165","memberName":"length","nodeType":"MemberAccess","src":"40621:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40592:58:165"},{"assignments":[81552],"declarations":[{"constant":false,"id":81552,"mutability":"mutable","name":"codeCommitmentsHashSize","nameLocation":"40668:23:165","nodeType":"VariableDeclaration","scope":81675,"src":"40660:31:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81551,"name":"uint256","nodeType":"ElementaryTypeName","src":"40660:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81556,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81553,"name":"codeCommitmentsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81546,"src":"40694:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":81554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40715:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"40694:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40660:57:165"},{"assignments":[81558],"declarations":[{"constant":false,"id":81558,"mutability":"mutable","name":"codeCommitmentsPtr","nameLocation":"40735:18:165","nodeType":"VariableDeclaration","scope":81675,"src":"40727:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81557,"name":"uint256","nodeType":"ElementaryTypeName","src":"40727:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81563,"initialValue":{"arguments":[{"id":81561,"name":"codeCommitmentsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81552,"src":"40772:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":81559,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"40756:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":81560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40763:8:165","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"40756:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":81562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40756:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40727:69:165"},{"assignments":[81565],"declarations":[{"constant":false,"id":81565,"mutability":"mutable","name":"offset","nameLocation":"40814:6:165","nodeType":"VariableDeclaration","scope":81675,"src":"40806:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81564,"name":"uint256","nodeType":"ElementaryTypeName","src":"40806:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81567,"initialValue":{"hexValue":"30","id":81566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40823:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"40806:18:165"},{"body":{"id":81666,"nodeType":"Block","src":"40884:884:165","statements":[{"assignments":[81582],"declarations":[{"constant":false,"id":81582,"mutability":"mutable","name":"_commitment","nameLocation":"40927:11:165","nodeType":"VariableDeclaration","scope":81666,"src":"40898:40:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":81581,"nodeType":"UserDefinedTypeName","pathNode":{"id":81580,"name":"Gear.CodeCommitment","nameLocations":["40898:4:165","40903:14:165"],"nodeType":"IdentifierPath","referencedDeclaration":82930,"src":"40898:19:165"},"referencedDeclaration":82930,"src":"40898:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":81587,"initialValue":{"baseExpression":{"expression":{"id":81583,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81540,"src":"40941:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40948:15:165","memberName":"codeCommitments","nodeType":"MemberAccess","referencedDeclaration":82975,"src":"40941:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$82930_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":81586,"indexExpression":{"id":81585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81569,"src":"40964:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40941:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"40898:68:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"},"id":81598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":81589,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81537,"src":"41006:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41013:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41006:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41026:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"41006:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81594,"indexExpression":{"expression":{"id":81592,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41032:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41044:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":82926,"src":"41032:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41006:41:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":81595,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"41051:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41056:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"41051:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":81597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41066:19:165","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":83023,"src":"41051:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"41006:79:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81599,"name":"CodeValidationNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"41103:26:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41103:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81588,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"40981:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40981:164:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81602,"nodeType":"ExpressionStatement","src":"40981:164:165"},{"condition":{"expression":{"id":81603,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41164:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41176:5:165","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":82929,"src":"41164:17:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":81634,"nodeType":"Block","src":"41349:81:165","statements":[{"expression":{"id":81632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"41367:48:165","subExpression":{"baseExpression":{"expression":{"expression":{"id":81626,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81537,"src":"41374:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41381:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41374:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41394:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"41374:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81631,"indexExpression":{"expression":{"id":81629,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41400:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41412:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":82926,"src":"41400:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41374:41:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81633,"nodeType":"ExpressionStatement","src":"41367:48:165"}]},"id":81635,"nodeType":"IfStatement","src":"41160:270:165","trueBody":{"id":81625,"nodeType":"Block","src":"41183:160:165","statements":[{"expression":{"id":81616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":81605,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81537,"src":"41201:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41208:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41201:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41221:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":83074,"src":"41201:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$83026_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81612,"indexExpression":{"expression":{"id":81608,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41227:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41239:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":82926,"src":"41227:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41201:41:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":81613,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"41245:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41250:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":83026,"src":"41245:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$83026_$","typeString":"type(enum Gear.CodeState)"}},"id":81615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41260:9:165","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":83025,"src":"41245:24:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"src":"41201:68:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$83026","typeString":"enum Gear.CodeState"}},"id":81617,"nodeType":"ExpressionStatement","src":"41201:68:165"},{"expression":{"id":81623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41287:41:165","subExpression":{"expression":{"expression":{"id":81618,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81537,"src":"41287:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41294:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41287:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81622,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41307:19:165","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":83085,"src":"41287:39:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81624,"nodeType":"ExpressionStatement","src":"41287:41:165"}]}},{"eventCall":{"arguments":[{"expression":{"id":81637,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41466:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41478:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":82926,"src":"41466:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81639,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41482:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41494:5:165","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":82929,"src":"41482:17:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81636,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74507,"src":"41449:16:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":81641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41449:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81642,"nodeType":"EmitStatement","src":"41444:56:165"},{"assignments":[81644],"declarations":[{"constant":false,"id":81644,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"41523:18:165","nodeType":"VariableDeclaration","scope":81666,"src":"41515:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81643,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41515:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81652,"initialValue":{"arguments":[{"expression":{"id":81647,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41568:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41580:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":82926,"src":"41568:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81649,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81582,"src":"41584:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$82930_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41596:5:165","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":82929,"src":"41584:17:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":81645,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"41544:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41549:18:165","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":83233,"src":"41544:23:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes32,bool) pure returns (bytes32)"}},"id":81651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41544:58:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"41515:87:165"},{"expression":{"arguments":[{"id":81656,"name":"codeCommitmentsPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81558,"src":"41642:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81657,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81565,"src":"41662:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81658,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81644,"src":"41670:18:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81653,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41616:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":81655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41623:18:165","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"41616:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":81659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41616:73:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81660,"nodeType":"ExpressionStatement","src":"41616:73:165"},{"id":81665,"nodeType":"UncheckedBlock","src":"41703:55:165","statements":[{"expression":{"id":81663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81661,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81565,"src":"41731:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":81662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41741:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"41731:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81664,"nodeType":"ExpressionStatement","src":"41731:12:165"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81572,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81569,"src":"40855:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":81573,"name":"codeCommitmentsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81546,"src":"40859:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"40855:22:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81667,"initializationExpression":{"assignments":[81569],"declarations":[{"constant":false,"id":81569,"mutability":"mutable","name":"i","nameLocation":"40848:1:165","nodeType":"VariableDeclaration","scope":81667,"src":"40840:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81568,"name":"uint256","nodeType":"ElementaryTypeName","src":"40840:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81571,"initialValue":{"hexValue":"30","id":81570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40852:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"40840:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":81576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"40879:3:165","subExpression":{"id":81575,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81569,"src":"40879:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81577,"nodeType":"ExpressionStatement","src":"40879:3:165"},"nodeType":"ForStatement","src":"40835:933:165"},{"expression":{"arguments":[{"id":81670,"name":"codeCommitmentsPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81558,"src":"41820:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":81671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41840:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":81672,"name":"codeCommitmentsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81552,"src":"41843:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":81668,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"41785:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":81669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41792:27:165","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"41785:34:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":81673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41785:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81544,"id":81674,"nodeType":"Return","src":"41778:89:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitCodes","nameLocation":"40481:12:165","parameters":{"id":81541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81537,"mutability":"mutable","name":"router","nameLocation":"40510:6:165","nodeType":"VariableDeclaration","scope":81676,"src":"40494:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81536,"nodeType":"UserDefinedTypeName","pathNode":{"id":81535,"name":"Storage","nameLocations":["40494:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"40494:7:165"},"referencedDeclaration":74490,"src":"40494:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81540,"mutability":"mutable","name":"_batch","nameLocation":"40548:6:165","nodeType":"VariableDeclaration","scope":81676,"src":"40518:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81539,"nodeType":"UserDefinedTypeName","pathNode":{"id":81538,"name":"Gear.BatchCommitment","nameLocations":["40518:4:165","40523:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"40518:20:165"},"referencedDeclaration":82986,"src":"40518:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"40493:62:165"},"returnParameters":{"id":81544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81676,"src":"40573:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81542,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40573:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"40572:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81833,"nodeType":"FunctionDefinition","src":"41916:1705:165","nodes":[],"body":{"id":81832,"nodeType":"Block","src":"42028:1593:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81688,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81682,"src":"42046:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42053:17:165","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":82980,"src":"42046:24:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$82996_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":81690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42071:6:165","memberName":"length","nodeType":"MemberAccess","src":"42046:31:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":81691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42081:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"42046:36:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81693,"name":"TooManyRewardsCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"42084:25:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42084:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81687,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42038:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42038:74:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81696,"nodeType":"ExpressionStatement","src":"42038:74:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81697,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81682,"src":"42127:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42134:17:165","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":82980,"src":"42127:24:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$82996_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":81699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42152:6:165","memberName":"length","nodeType":"MemberAccess","src":"42127:31:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42162:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42127:36:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81707,"nodeType":"IfStatement","src":"42123:179:165","trueBody":{"id":81706,"nodeType":"Block","src":"42165:137:165","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":81703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"42288:2:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":81702,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"42278:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":81704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42278:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81686,"id":81705,"nodeType":"Return","src":"42271:20:165"}]}},{"assignments":[81712],"declarations":[{"constant":false,"id":81712,"mutability":"mutable","name":"_commitment","nameLocation":"42344:11:165","nodeType":"VariableDeclaration","scope":81832,"src":"42312:43:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment"},"typeName":{"id":81711,"nodeType":"UserDefinedTypeName","pathNode":{"id":81710,"name":"Gear.RewardsCommitment","nameLocations":["42312:4:165","42317:17:165"],"nodeType":"IdentifierPath","referencedDeclaration":82996,"src":"42312:22:165"},"referencedDeclaration":82996,"src":"42312:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_storage_ptr","typeString":"struct Gear.RewardsCommitment"}},"visibility":"internal"}],"id":81717,"initialValue":{"baseExpression":{"expression":{"id":81713,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81682,"src":"42358:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42365:17:165","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":82980,"src":"42358:24:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$82996_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":81716,"indexExpression":{"hexValue":"30","id":81715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42383:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42358:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"42312:73:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":81723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81719,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"42404:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42416:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":82995,"src":"42404:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":81721,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81682,"src":"42428:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42435:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"42428:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"42404:45:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81724,"name":"RewardsCommitmentTimestampNotInPast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74616,"src":"42451:35:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42451:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81718,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42396:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42396:93:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81727,"nodeType":"ExpressionStatement","src":"42396:93:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":81734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81729,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"42507:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42519:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":82995,"src":"42507:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"expression":{"id":81731,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81679,"src":"42532:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42539:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"42532:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42552:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"42532:29:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"42507:54:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81735,"name":"RewardsCommitmentPredatesGenesis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74618,"src":"42563:32:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42563:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81728,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42499:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42499:99:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81738,"nodeType":"ExpressionStatement","src":"42499:99:165"},{"assignments":[81740],"declarations":[{"constant":false,"id":81740,"mutability":"mutable","name":"commitmentEraIndex","nameLocation":"42617:18:165","nodeType":"VariableDeclaration","scope":81832,"src":"42609:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81739,"name":"uint256","nodeType":"ElementaryTypeName","src":"42609:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81747,"initialValue":{"arguments":[{"id":81743,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81679,"src":"42654:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":81744,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"42662:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42674:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":82995,"src":"42662:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81741,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"42638:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42643:10:165","memberName":"eraIndexAt","nodeType":"MemberAccess","referencedDeclaration":83968,"src":"42638:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":81746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42638:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"42609:75:165"},{"assignments":[81749],"declarations":[{"constant":false,"id":81749,"mutability":"mutable","name":"batchEraIndex","nameLocation":"42702:13:165","nodeType":"VariableDeclaration","scope":81832,"src":"42694:21:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81748,"name":"uint256","nodeType":"ElementaryTypeName","src":"42694:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81756,"initialValue":{"arguments":[{"id":81752,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81679,"src":"42734:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":81753,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81682,"src":"42742:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42749:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":82959,"src":"42742:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81750,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"42718:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42723:10:165","memberName":"eraIndexAt","nodeType":"MemberAccess","referencedDeclaration":83968,"src":"42718:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":81755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42718:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"42694:70:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81758,"name":"commitmentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"42783:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":81759,"name":"batchEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81749,"src":"42804:13:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"42783:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81761,"name":"RewardsCommitmentEraNotPrevious","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74620,"src":"42819:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42819:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81757,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42775:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42775:78:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81764,"nodeType":"ExpressionStatement","src":"42775:78:165"},{"assignments":[81766],"declarations":[{"constant":false,"id":81766,"mutability":"mutable","name":"_middleware","nameLocation":"42872:11:165","nodeType":"VariableDeclaration","scope":81832,"src":"42864:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81765,"name":"address","nodeType":"ElementaryTypeName","src":"42864:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":81770,"initialValue":{"expression":{"expression":{"id":81767,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81679,"src":"42886:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42893:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"42886:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81769,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42907:10:165","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":82921,"src":"42886:31:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"42864:53:165"},{"assignments":[81772],"declarations":[{"constant":false,"id":81772,"mutability":"mutable","name":"success","nameLocation":"42932:7:165","nodeType":"VariableDeclaration","scope":81832,"src":"42927:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81771,"name":"bool","nodeType":"ElementaryTypeName","src":"42927:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":81788,"initialValue":{"arguments":[{"id":81779,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81766,"src":"43010:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81780,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43023:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43035:9:165","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":82990,"src":"43023:21:165","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83002_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":81782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43045:6:165","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":82999,"src":"43023:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":81783,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43054:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43066:7:165","memberName":"stakers","nodeType":"MemberAccess","referencedDeclaration":82993,"src":"43054:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"}},"id":81785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43074:11:165","memberName":"totalAmount","nodeType":"MemberAccess","referencedDeclaration":83009,"src":"43054:31:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43023:62:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"expression":{"id":81774,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81679,"src":"42955:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42962:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"42955:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81776,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42976:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"42955:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81773,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"42942:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":81777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42942:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43002:7:165","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":46823,"src":"42942:67:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":81787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42942:144:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"42927:159:165"},{"expression":{"arguments":[{"id":81790,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81772,"src":"43104:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81791,"name":"ApproveERC20Failed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74622,"src":"43113:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43113:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81789,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"43096:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43096:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81794,"nodeType":"ExpressionStatement","src":"43096:38:165"},{"assignments":[81796],"declarations":[{"constant":false,"id":81796,"mutability":"mutable","name":"_operatorRewardsHash","nameLocation":"43153:20:165","nodeType":"VariableDeclaration","scope":81832,"src":"43145:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43145:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81811,"initialValue":{"arguments":[{"expression":{"expression":{"id":81801,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81679,"src":"43257:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43264:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43257:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$82922_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43278:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":82918,"src":"43257:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":81804,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43291:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43303:9:165","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":82990,"src":"43291:21:165","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83002_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":81806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43313:6:165","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":82999,"src":"43291:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":81807,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43321:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43333:9:165","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":82990,"src":"43321:21:165","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$83002_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":81809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43343:4:165","memberName":"root","nodeType":"MemberAccess","referencedDeclaration":83001,"src":"43321:26:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":81798,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81766,"src":"43188:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81797,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"43176:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$74131_$","typeString":"type(contract IMiddleware)"}},"id":81799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43176:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$74131","typeString":"contract IMiddleware"}},"id":81800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43214:25:165","memberName":"distributeOperatorRewards","nodeType":"MemberAccess","referencedDeclaration":74119,"src":"43176:63:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) external returns (bytes32)"}},"id":81810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43176:185:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43145:216:165"},{"assignments":[81813],"declarations":[{"constant":false,"id":81813,"mutability":"mutable","name":"_stakerRewardsHash","nameLocation":"43380:18:165","nodeType":"VariableDeclaration","scope":81832,"src":"43372:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81812,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43372:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81823,"initialValue":{"arguments":[{"expression":{"id":81818,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43462:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43474:7:165","memberName":"stakers","nodeType":"MemberAccess","referencedDeclaration":82993,"src":"43462:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"}},{"expression":{"id":81820,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43483:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43495:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":82995,"src":"43483:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$83012_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"arguments":[{"id":81815,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81766,"src":"43425:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81814,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"43413:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$74131_$","typeString":"type(contract IMiddleware)"}},"id":81816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43413:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$74131","typeString":"contract IMiddleware"}},"id":81817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43438:23:165","memberName":"distributeStakerRewards","nodeType":"MemberAccess","referencedDeclaration":74130,"src":"43413:48:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StakerRewardsCommitment_$83012_memory_ptr_$_t_uint48_$returns$_t_bytes32_$","typeString":"function (struct Gear.StakerRewardsCommitment memory,uint48) external returns (bytes32)"}},"id":81822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43413:92:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43372:133:165"},{"expression":{"arguments":[{"id":81826,"name":"_operatorRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81796,"src":"43550:20:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81827,"name":"_stakerRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81813,"src":"43572:18:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81828,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81712,"src":"43592:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$82996_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43604:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":82995,"src":"43592:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81824,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"43523:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43528:21:165","memberName":"rewardsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":83255,"src":"43523:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint48_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,uint48) pure returns (bytes32)"}},"id":81830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43523:91:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81686,"id":81831,"nodeType":"Return","src":"43516:98:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitRewards","nameLocation":"41925:14:165","parameters":{"id":81683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81679,"mutability":"mutable","name":"router","nameLocation":"41956:6:165","nodeType":"VariableDeclaration","scope":81833,"src":"41940:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81678,"nodeType":"UserDefinedTypeName","pathNode":{"id":81677,"name":"Storage","nameLocations":["41940:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"41940:7:165"},"referencedDeclaration":74490,"src":"41940:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81682,"mutability":"mutable","name":"_batch","nameLocation":"41994:6:165","nodeType":"VariableDeclaration","scope":81833,"src":"41964:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81681,"nodeType":"UserDefinedTypeName","pathNode":{"id":81680,"name":"Gear.BatchCommitment","nameLocations":["41964:4:165","41969:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"41964:20:165"},"referencedDeclaration":82986,"src":"41964:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"41939:62:165"},"returnParameters":{"id":81686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81833,"src":"42019:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"42019:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"42018:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81979,"nodeType":"FunctionDefinition","src":"43688:1657:165","nodes":[],"body":{"id":81978,"nodeType":"Block","src":"43803:1542:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81846,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81840,"src":"43821:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43828:20:165","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":82985,"src":"43821:27:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$82952_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":81848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43849:6:165","memberName":"length","nodeType":"MemberAccess","src":"43821:34:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":81849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43859:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"43821:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81851,"name":"TooManyValidatorsCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74624,"src":"43862:28:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43862:30:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81845,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"43813:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43813:80:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81854,"nodeType":"ExpressionStatement","src":"43813:80:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81855,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81840,"src":"43908:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43915:20:165","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":82985,"src":"43908:27:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$82952_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":81857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43936:6:165","memberName":"length","nodeType":"MemberAccess","src":"43908:34:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43946:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"43908:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81865,"nodeType":"IfStatement","src":"43904:182:165","trueBody":{"id":81864,"nodeType":"Block","src":"43949:137:165","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":81861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"44072:2:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":81860,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"44062:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":81862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44062:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81844,"id":81863,"nodeType":"Return","src":"44055:20:165"}]}},{"assignments":[81870],"declarations":[{"constant":false,"id":81870,"mutability":"mutable","name":"_commitment","nameLocation":"44131:11:165","nodeType":"VariableDeclaration","scope":81978,"src":"44096:46:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":81869,"nodeType":"UserDefinedTypeName","pathNode":{"id":81868,"name":"Gear.ValidatorsCommitment","nameLocations":["44096:4:165","44101:20:165"],"nodeType":"IdentifierPath","referencedDeclaration":82952,"src":"44096:25:165"},"referencedDeclaration":82952,"src":"44096:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"}],"id":81875,"initialValue":{"baseExpression":{"expression":{"id":81871,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81840,"src":"44145:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44152:20:165","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":82985,"src":"44145:27:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$82952_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":81874,"indexExpression":{"hexValue":"30","id":81873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44173:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"44145:30:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"44096:79:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81877,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"44194:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44206:10:165","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":82949,"src":"44194:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":81879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44217:6:165","memberName":"length","nodeType":"MemberAccess","src":"44194:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":81880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44226:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44194:33:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81882,"name":"EmptyValidatorsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74626,"src":"44229:19:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44229:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44186:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44186:65:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81885,"nodeType":"ExpressionStatement","src":"44186:65:165"},{"assignments":[81887],"declarations":[{"constant":false,"id":81887,"mutability":"mutable","name":"currentEraIndex","nameLocation":"44324:15:165","nodeType":"VariableDeclaration","scope":81978,"src":"44316:23:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81886,"name":"uint256","nodeType":"ElementaryTypeName","src":"44316:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81899,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81888,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44343:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44349:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"44343:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":81890,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81837,"src":"44361:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44368:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"44361:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44381:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"44361:29:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"44343:47:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":81894,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"44342:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":81895,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81837,"src":"44394:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44401:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44394:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":81897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44411:3:165","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83136,"src":"44394:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44342:72:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44316:98:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81901,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"44433:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44445:8:165","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":82951,"src":"44433:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81903,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81887,"src":"44457:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":81904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44475:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44457:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44433:43:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81907,"name":"CommitmentEraNotNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74628,"src":"44478:20:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44478:22:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81900,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44425:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44425:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81910,"nodeType":"ExpressionStatement","src":"44425:76:165"},{"assignments":[81912],"declarations":[{"constant":false,"id":81912,"mutability":"mutable","name":"nextEraStart","nameLocation":"44520:12:165","nodeType":"VariableDeclaration","scope":81978,"src":"44512:20:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81911,"name":"uint256","nodeType":"ElementaryTypeName","src":"44512:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81923,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81913,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81837,"src":"44535:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44542:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"44535:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44555:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":83045,"src":"44535:29:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81916,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81837,"src":"44567:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44574:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44567:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":81918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44584:3:165","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":83136,"src":"44567:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":81919,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"44590:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44602:8:165","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":82951,"src":"44590:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44567:43:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44535:75:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44512:98:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81925,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44628:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44634:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"44628:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81927,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81912,"src":"44647:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":81928,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81837,"src":"44662:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44669:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44662:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$83141_storage","typeString":"struct Gear.Timelines storage ref"}},"id":81930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44679:8:165","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":83138,"src":"44662:25:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44647:40:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44628:59:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81933,"name":"ElectionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74630,"src":"44689:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44689:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81924,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44620:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44620:90:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81936,"nodeType":"ExpressionStatement","src":"44620:90:165"},{"assignments":[81941],"declarations":[{"constant":false,"id":81941,"mutability":"mutable","name":"_validators","nameLocation":"44792:11:165","nodeType":"VariableDeclaration","scope":81978,"src":"44768:35:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":81940,"nodeType":"UserDefinedTypeName","pathNode":{"id":81939,"name":"Gear.Validators","nameLocations":["44768:4:165","44773:10:165"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"44768:15:165"},"referencedDeclaration":82899,"src":"44768:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":81946,"initialValue":{"arguments":[{"id":81944,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81837,"src":"44833:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":81942,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"44806:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44811:21:165","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":83804,"src":"44806:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$82899_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":81945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44806:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"44768:72:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81948,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81941,"src":"44858:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":81949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44870:16:165","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":82898,"src":"44858:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":81950,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44889:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44895:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"44889:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44858:46:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81953,"name":"ValidatorsAlreadyScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74632,"src":"44906:26:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44906:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81947,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44850:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44850:85:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81956,"nodeType":"ExpressionStatement","src":"44850:85:165"},{"expression":{"arguments":[{"id":81958,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81941,"src":"45028:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":81959,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"45053:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45065:19:165","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82944,"src":"45053:31:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"}},{"expression":{"id":81961,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"45098:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45110:33:165","memberName":"verifiableSecretSharingCommitment","nodeType":"MemberAccess","referencedDeclaration":82946,"src":"45098:45:165","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":81963,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"45157:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45169:10:165","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":82949,"src":"45157:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":81965,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81912,"src":"45193:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"},{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81957,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82211,"src":"44998:16:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$82899_storage_ptr_$_t_struct$_AggregatedPublicKey_$82878_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,struct Gear.AggregatedPublicKey memory,bytes memory,address[] memory,uint256)"}},"id":81966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44998:217:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81967,"nodeType":"ExpressionStatement","src":"44998:217:165"},{"eventCall":{"arguments":[{"expression":{"id":81969,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"45257:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45269:8:165","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":82951,"src":"45257:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":81968,"name":"ValidatorsCommittedForEra","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74517,"src":"45231:25:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":81971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45231:47:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81972,"nodeType":"EmitStatement","src":"45226:52:165"},{"expression":{"arguments":[{"id":81975,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81870,"src":"45326:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$82952_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":81973,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84058,"src":"45296:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$84058_$","typeString":"type(library Gear)"}},"id":81974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45301:24:165","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":83281,"src":"45296:29:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$82952_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":81976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45296:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81844,"id":81977,"nodeType":"Return","src":"45289:49:165"}]},"documentation":{"id":81834,"nodeType":"StructuredDocumentation","src":"43627:56:165","text":" @dev Set validators for the next era."},"implemented":true,"kind":"function","modifiers":[],"name":"_commitValidators","nameLocation":"43697:17:165","parameters":{"id":81841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81837,"mutability":"mutable","name":"router","nameLocation":"43731:6:165","nodeType":"VariableDeclaration","scope":81979,"src":"43715:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81836,"nodeType":"UserDefinedTypeName","pathNode":{"id":81835,"name":"Storage","nameLocations":["43715:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"43715:7:165"},"referencedDeclaration":74490,"src":"43715:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81840,"mutability":"mutable","name":"_batch","nameLocation":"43769:6:165","nodeType":"VariableDeclaration","scope":81979,"src":"43739:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81839,"nodeType":"UserDefinedTypeName","pathNode":{"id":81838,"name":"Gear.BatchCommitment","nameLocations":["43739:4:165","43744:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":82986,"src":"43739:20:165"},"referencedDeclaration":82986,"src":"43739:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$82986_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"43714:62:165"},"returnParameters":{"id":81844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81979,"src":"43794:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43794:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"43793:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82099,"nodeType":"FunctionDefinition","src":"45351:1168:165","nodes":[],"body":{"id":82098,"nodeType":"Block","src":"45495:1024:165","nodes":[],"statements":[{"assignments":[81992],"declarations":[{"constant":false,"id":81992,"mutability":"mutable","name":"transitionsLen","nameLocation":"45513:14:165","nodeType":"VariableDeclaration","scope":82098,"src":"45505:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81991,"name":"uint256","nodeType":"ElementaryTypeName","src":"45505:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81995,"initialValue":{"expression":{"id":81993,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81986,"src":"45530:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":81994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45543:6:165","memberName":"length","nodeType":"MemberAccess","src":"45530:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45505:44:165"},{"assignments":[81997],"declarations":[{"constant":false,"id":81997,"mutability":"mutable","name":"transitionsHashSize","nameLocation":"45567:19:165","nodeType":"VariableDeclaration","scope":82098,"src":"45559:27:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81996,"name":"uint256","nodeType":"ElementaryTypeName","src":"45559:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82001,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81998,"name":"transitionsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81992,"src":"45589:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":81999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45606:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"45589:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45559:49:165"},{"assignments":[82003],"declarations":[{"constant":false,"id":82003,"mutability":"mutable","name":"transitionsHashesMemPtr","nameLocation":"45626:23:165","nodeType":"VariableDeclaration","scope":82098,"src":"45618:31:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82002,"name":"uint256","nodeType":"ElementaryTypeName","src":"45618:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82008,"initialValue":{"arguments":[{"id":82006,"name":"transitionsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81997,"src":"45668:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82004,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"45652:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":82005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45659:8:165","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"45652:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":82007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45652:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45618:70:165"},{"assignments":[82010],"declarations":[{"constant":false,"id":82010,"mutability":"mutable","name":"offset","nameLocation":"45706:6:165","nodeType":"VariableDeclaration","scope":82098,"src":"45698:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82009,"name":"uint256","nodeType":"ElementaryTypeName","src":"45698:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82012,"initialValue":{"hexValue":"30","id":82011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45715:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"45698:18:165"},{"body":{"id":82089,"nodeType":"Block","src":"45772:640:165","statements":[{"assignments":[82027],"declarations":[{"constant":false,"id":82027,"mutability":"mutable","name":"transition","nameLocation":"45816:10:165","nodeType":"VariableDeclaration","scope":82089,"src":"45786:40:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":82026,"nodeType":"UserDefinedTypeName","pathNode":{"id":82025,"name":"Gear.StateTransition","nameLocations":["45786:4:165","45791:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":83133,"src":"45786:20:165"},"referencedDeclaration":83133,"src":"45786:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":82031,"initialValue":{"baseExpression":{"id":82028,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81986,"src":"45829:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":82030,"indexExpression":{"id":82029,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82014,"src":"45842:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"45829:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"45786:58:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":82040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":82033,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81982,"src":"45867:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":82034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45874:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"45867:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":82035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45887:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":83079,"src":"45867:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":82038,"indexExpression":{"expression":{"id":82036,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82027,"src":"45896:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45907:7:165","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":83107,"src":"45896:18:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"45867:48:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45919:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45867:53:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82041,"name":"UnknownProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"45922:14:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45922:16:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82032,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"45859:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45859:80:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82044,"nodeType":"ExpressionStatement","src":"45859:80:165"},{"assignments":[82046],"declarations":[{"constant":false,"id":82046,"mutability":"mutable","name":"value","nameLocation":"45962:5:165","nodeType":"VariableDeclaration","scope":82089,"src":"45954:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82045,"name":"uint128","nodeType":"ElementaryTypeName","src":"45954:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":82048,"initialValue":{"hexValue":"30","id":82047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45970:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"45954:17:165"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":82056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":82052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82049,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82027,"src":"45990:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46001:14:165","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":83119,"src":"45990:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46019:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"45990:30:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":82055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"46024:38:165","subExpression":{"expression":{"id":82053,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82027,"src":"46025:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46036:26:165","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":83122,"src":"46025:37:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"45990:72:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82063,"nodeType":"IfStatement","src":"45986:144:165","trueBody":{"id":82062,"nodeType":"Block","src":"46064:66:165","statements":[{"expression":{"id":82060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82057,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82046,"src":"46082:5:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82058,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82027,"src":"46090:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46101:14:165","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":83119,"src":"46090:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"46082:33:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":82061,"nodeType":"ExpressionStatement","src":"46082:33:165"}]}},{"assignments":[82065],"declarations":[{"constant":false,"id":82065,"mutability":"mutable","name":"transitionHash","nameLocation":"46152:14:165","nodeType":"VariableDeclaration","scope":82089,"src":"46144:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82064,"name":"bytes32","nodeType":"ElementaryTypeName","src":"46144:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":82075,"initialValue":{"arguments":[{"id":82073,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82027,"src":"46234:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":82067,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82027,"src":"46177:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46188:7:165","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":83107,"src":"46177:18:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82066,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"46169:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":82069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46169:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":82070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46197:22:165","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":74394,"src":"46169:50:165","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_StateTransition_$83133_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) payable external returns (bytes32)"}},"id":82072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":82071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82046,"src":"46227:5:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"46169:64:165","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_StateTransition_$83133_memory_ptr_$returns$_t_bytes32_$value","typeString":"function (struct Gear.StateTransition memory) payable external returns (bytes32)"}},"id":82074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46169:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"46144:101:165"},{"expression":{"arguments":[{"id":82079,"name":"transitionsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82003,"src":"46285:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82080,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82010,"src":"46310:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82081,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82065,"src":"46318:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":82076,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"46259:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":82078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46266:18:165","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"46259:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":82082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46259:74:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82083,"nodeType":"ExpressionStatement","src":"46259:74:165"},{"id":82088,"nodeType":"UncheckedBlock","src":"46347:55:165","statements":[{"expression":{"id":82086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82084,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82010,"src":"46375:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":82085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46385:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"46375:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82087,"nodeType":"ExpressionStatement","src":"46375:12:165"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82017,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82014,"src":"45747:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":82018,"name":"transitionsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81992,"src":"45751:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45747:18:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82090,"initializationExpression":{"assignments":[82014],"declarations":[{"constant":false,"id":82014,"mutability":"mutable","name":"i","nameLocation":"45740:1:165","nodeType":"VariableDeclaration","scope":82090,"src":"45732:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82013,"name":"uint256","nodeType":"ElementaryTypeName","src":"45732:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82016,"initialValue":{"hexValue":"30","id":82015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45744:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"45732:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":82021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"45767:3:165","subExpression":{"id":82020,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82014,"src":"45767:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82022,"nodeType":"ExpressionStatement","src":"45767:3:165"},"nodeType":"ForStatement","src":"45727:685:165"},{"expression":{"arguments":[{"id":82093,"name":"transitionsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82003,"src":"46464:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":82094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46489:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":82095,"name":"transitionsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81997,"src":"46492:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82091,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"46429:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":82092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46436:27:165","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"46429:34:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":82096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46429:83:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81990,"id":82097,"nodeType":"Return","src":"46422:90:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"45360:18:165","parameters":{"id":81987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81982,"mutability":"mutable","name":"router","nameLocation":"45395:6:165","nodeType":"VariableDeclaration","scope":82099,"src":"45379:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81981,"nodeType":"UserDefinedTypeName","pathNode":{"id":81980,"name":"Storage","nameLocations":["45379:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"45379:7:165"},"referencedDeclaration":74490,"src":"45379:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81986,"mutability":"mutable","name":"_transitions","nameLocation":"45435:12:165","nodeType":"VariableDeclaration","scope":82099,"src":"45403:44:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":81984,"nodeType":"UserDefinedTypeName","pathNode":{"id":81983,"name":"Gear.StateTransition","nameLocations":["45403:4:165","45408:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":83133,"src":"45403:20:165"},"referencedDeclaration":83133,"src":"45403:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$83133_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":81985,"nodeType":"ArrayTypeName","src":"45403:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$83133_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"45378:70:165"},"returnParameters":{"id":81990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82099,"src":"45482:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81988,"name":"bytes32","nodeType":"ElementaryTypeName","src":"45482:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"45481:9:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82211,"nodeType":"FunctionDefinition","src":"46525:1421:165","nodes":[],"body":{"id":82210,"nodeType":"Block","src":"46808:1138:165","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":82118,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82105,"src":"47198:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":82119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47222:1:165","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":82875,"src":"47198:25:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82120,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82105,"src":"47225:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":82121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47249:1:165","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":82877,"src":"47225:25:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82116,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"47175:5:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FROST_$40965_$","typeString":"type(library FROST)"}},"id":82117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47181:16:165","memberName":"isValidPublicKey","nodeType":"MemberAccess","referencedDeclaration":40634,"src":"47175:22:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}},"id":82122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47175:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82123,"name":"InvalidFROSTAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74547,"src":"47265:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47265:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82115,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"47154:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47154:154:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82126,"nodeType":"ExpressionStatement","src":"47154:154:165"},{"expression":{"id":82131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82127,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47318:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47330:19:165","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":82883,"src":"47318:31:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82130,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82105,"src":"47352:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"src":"47318:57:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":82132,"nodeType":"ExpressionStatement","src":"47318:57:165"},{"expression":{"id":82140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82133,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47385:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47397:40:165","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":82886,"src":"47385:52:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":82138,"name":"_verifiableSecretSharingCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82107,"src":"47454:34:165","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":82136,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84514,"src":"47440:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SSTORE2_$84514_$","typeString":"type(library SSTORE2)"}},"id":82137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47448:5:165","memberName":"write","nodeType":"MemberAccess","referencedDeclaration":84370,"src":"47440:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":82139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47440:49:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47385:104:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82141,"nodeType":"ExpressionStatement","src":"47385:104:165"},{"body":{"id":82169,"nodeType":"Block","src":"47553:114:165","statements":[{"assignments":[82155],"declarations":[{"constant":false,"id":82155,"mutability":"mutable","name":"_validator","nameLocation":"47575:10:165","nodeType":"VariableDeclaration","scope":82169,"src":"47567:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82154,"name":"address","nodeType":"ElementaryTypeName","src":"47567:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":82160,"initialValue":{"baseExpression":{"expression":{"id":82156,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47588:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47600:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"47588:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":82159,"indexExpression":{"id":82158,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82143,"src":"47605:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47588:19:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47567:40:165"},{"expression":{"id":82167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":82161,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47621:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47633:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":82891,"src":"47621:15:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":82165,"indexExpression":{"id":82163,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82155,"src":"47637:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"47621:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":82166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"47651:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"47621:35:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82168,"nodeType":"ExpressionStatement","src":"47621:35:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82146,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82143,"src":"47519:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":82147,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47523:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47535:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"47523:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":82149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47540:6:165","memberName":"length","nodeType":"MemberAccess","src":"47523:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47519:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82170,"initializationExpression":{"assignments":[82143],"declarations":[{"constant":false,"id":82143,"mutability":"mutable","name":"i","nameLocation":"47512:1:165","nodeType":"VariableDeclaration","scope":82170,"src":"47504:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82142,"name":"uint256","nodeType":"ElementaryTypeName","src":"47504:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82145,"initialValue":{"hexValue":"30","id":82144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47516:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"47504:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":82152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"47548:3:165","subExpression":{"id":82151,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82143,"src":"47548:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82153,"nodeType":"ExpressionStatement","src":"47548:3:165"},"nodeType":"ForStatement","src":"47499:168:165"},{"body":{"id":82196,"nodeType":"Block","src":"47728:111:165","statements":[{"assignments":[82183],"declarations":[{"constant":false,"id":82183,"mutability":"mutable","name":"_validator","nameLocation":"47750:10:165","nodeType":"VariableDeclaration","scope":82196,"src":"47742:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82182,"name":"address","nodeType":"ElementaryTypeName","src":"47742:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":82187,"initialValue":{"baseExpression":{"id":82184,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82110,"src":"47763:14:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":82186,"indexExpression":{"id":82185,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82172,"src":"47778:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47763:17:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47742:38:165"},{"expression":{"id":82194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":82188,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47794:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47806:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":82891,"src":"47794:15:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":82192,"indexExpression":{"id":82190,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82183,"src":"47810:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"47794:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":82193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"47824:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"47794:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82195,"nodeType":"ExpressionStatement","src":"47794:34:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82175,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82172,"src":"47696:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":82176,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82110,"src":"47700:14:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":82177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47715:6:165","memberName":"length","nodeType":"MemberAccess","src":"47700:21:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47696:25:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82197,"initializationExpression":{"assignments":[82172],"declarations":[{"constant":false,"id":82172,"mutability":"mutable","name":"i","nameLocation":"47689:1:165","nodeType":"VariableDeclaration","scope":82197,"src":"47681:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82171,"name":"uint256","nodeType":"ElementaryTypeName","src":"47681:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82174,"initialValue":{"hexValue":"30","id":82173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47693:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"47681:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":82180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"47723:3:165","subExpression":{"id":82179,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82172,"src":"47723:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82181,"nodeType":"ExpressionStatement","src":"47723:3:165"},"nodeType":"ForStatement","src":"47676:163:165"},{"expression":{"id":82202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82198,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47848:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82200,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47860:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":82895,"src":"47848:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82201,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82110,"src":"47867:14:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"47848:33:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":82203,"nodeType":"ExpressionStatement","src":"47848:33:165"},{"expression":{"id":82208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82204,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82102,"src":"47891:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47903:16:165","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":82898,"src":"47891:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82207,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82112,"src":"47922:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47891:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82209,"nodeType":"ExpressionStatement","src":"47891:48:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"46534:16:165","parameters":{"id":82113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82102,"mutability":"mutable","name":"_validators","nameLocation":"46584:11:165","nodeType":"VariableDeclaration","scope":82211,"src":"46560:35:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":82101,"nodeType":"UserDefinedTypeName","pathNode":{"id":82100,"name":"Gear.Validators","nameLocations":["46560:4:165","46565:10:165"],"nodeType":"IdentifierPath","referencedDeclaration":82899,"src":"46560:15:165"},"referencedDeclaration":82899,"src":"46560:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$82899_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":82105,"mutability":"mutable","name":"_newAggregatedPublicKey","nameLocation":"46637:23:165","nodeType":"VariableDeclaration","scope":82211,"src":"46605:55:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_memory_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":82104,"nodeType":"UserDefinedTypeName","pathNode":{"id":82103,"name":"Gear.AggregatedPublicKey","nameLocations":["46605:4:165","46610:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":82878,"src":"46605:24:165"},"referencedDeclaration":82878,"src":"46605:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$82878_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":82107,"mutability":"mutable","name":"_verifiableSecretSharingCommitment","nameLocation":"46683:34:165","nodeType":"VariableDeclaration","scope":82211,"src":"46670:47:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":82106,"name":"bytes","nodeType":"ElementaryTypeName","src":"46670:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":82110,"mutability":"mutable","name":"_newValidators","nameLocation":"46744:14:165","nodeType":"VariableDeclaration","scope":82211,"src":"46727:31:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":82108,"name":"address","nodeType":"ElementaryTypeName","src":"46727:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82109,"nodeType":"ArrayTypeName","src":"46727:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":82112,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"46776:17:165","nodeType":"VariableDeclaration","scope":82211,"src":"46768:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82111,"name":"uint256","nodeType":"ElementaryTypeName","src":"46768:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46550:249:165"},"returnParameters":{"id":82114,"nodeType":"ParameterList","parameters":[],"src":"46808:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82224,"nodeType":"FunctionDefinition","src":"47952:192:165","nodes":[],"body":{"id":82223,"nodeType":"Block","src":"48017:127:165","nodes":[],"statements":[{"assignments":[82218],"declarations":[{"constant":false,"id":82218,"mutability":"mutable","name":"slot","nameLocation":"48035:4:165","nodeType":"VariableDeclaration","scope":82223,"src":"48027:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48027:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":82221,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":82219,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82236,"src":"48042:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":82220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48042:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"48027:32:165"},{"AST":{"nativeSrc":"48095:43:165","nodeType":"YulBlock","src":"48095:43:165","statements":[{"nativeSrc":"48109:19:165","nodeType":"YulAssignment","src":"48109:19:165","value":{"name":"slot","nativeSrc":"48124:4:165","nodeType":"YulIdentifier","src":"48124:4:165"},"variableNames":[{"name":"router.slot","nativeSrc":"48109:11:165","nodeType":"YulIdentifier","src":"48109:11:165"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":82215,"isOffset":false,"isSlot":true,"src":"48109:11:165","suffix":"slot","valueSize":1},{"declaration":82218,"isOffset":false,"isSlot":false,"src":"48124:4:165","valueSize":1}],"flags":["memory-safe"],"id":82222,"nodeType":"InlineAssembly","src":"48070:68:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"47961:7:165","parameters":{"id":82212,"nodeType":"ParameterList","parameters":[],"src":"47968:2:165"},"returnParameters":{"id":82216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82215,"mutability":"mutable","name":"router","nameLocation":"48009:6:165","nodeType":"VariableDeclaration","scope":82224,"src":"47993:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":82214,"nodeType":"UserDefinedTypeName","pathNode":{"id":82213,"name":"Storage","nameLocations":["47993:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"47993:7:165"},"referencedDeclaration":74490,"src":"47993:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"47992:24:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":82236,"nodeType":"FunctionDefinition","src":"48150:128:165","nodes":[],"body":{"id":82235,"nodeType":"Block","src":"48208:70:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":82231,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79481,"src":"48252:12:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":82229,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"48225:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":82230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48237:14:165","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"48225:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":82232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48225:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":82233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48266:5:165","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"48225:46:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":82228,"id":82234,"nodeType":"Return","src":"48218:53:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"48159:15:165","parameters":{"id":82225,"nodeType":"ParameterList","parameters":[],"src":"48174:2:165"},"returnParameters":{"id":82228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82236,"src":"48199:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48199:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"48198:9:165"},"scope":82324,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":82264,"nodeType":"FunctionDefinition","src":"48284:240:165","nodes":[],"body":{"id":82263,"nodeType":"Block","src":"48352:172:165","nodes":[],"statements":[{"assignments":[82244],"declarations":[{"constant":false,"id":82244,"mutability":"mutable","name":"slot","nameLocation":"48370:4:165","nodeType":"VariableDeclaration","scope":82263,"src":"48362:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48362:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":82249,"initialValue":{"arguments":[{"id":82247,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82238,"src":"48404:9:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":82245,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"48377:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":82246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48392:11:165","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"48377:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":82248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48377:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"48362:52:165"},{"expression":{"id":82257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":82253,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79481,"src":"48451:12:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":82250,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"48424:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":82252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48436:14:165","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"48424:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":82254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48424:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":82255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48465:5:165","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"48424:46:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82256,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82244,"src":"48473:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"48424:53:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":82258,"nodeType":"ExpressionStatement","src":"48424:53:165"},{"eventCall":{"arguments":[{"id":82260,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82244,"src":"48512:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":82259,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74536,"src":"48493:18:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":82261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48493:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82262,"nodeType":"EmitStatement","src":"48488:29:165"}]},"implemented":true,"kind":"function","modifiers":[{"id":82241,"kind":"modifierInvocation","modifierName":{"id":82240,"name":"onlyOwner","nameLocations":["48342:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"48342:9:165"},"nodeType":"ModifierInvocation","src":"48342:9:165"}],"name":"_setStorageSlot","nameLocation":"48293:15:165","parameters":{"id":82239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82238,"mutability":"mutable","name":"namespace","nameLocation":"48323:9:165","nodeType":"VariableDeclaration","scope":82264,"src":"48309:23:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":82237,"name":"string","nodeType":"ElementaryTypeName","src":"48309:6:165","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"48308:25:165"},"returnParameters":{"id":82242,"nodeType":"ParameterList","parameters":[],"src":"48352:0:165"},"scope":82324,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82323,"nodeType":"FunctionDefinition","src":"48672:396:165","nodes":[],"body":{"id":82322,"nodeType":"Block","src":"48713:355:165","nodes":[],"statements":[{"assignments":[82272],"declarations":[{"constant":false,"id":82272,"mutability":"mutable","name":"router","nameLocation":"48739:6:165","nodeType":"VariableDeclaration","scope":82322,"src":"48723:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":82271,"nodeType":"UserDefinedTypeName","pathNode":{"id":82270,"name":"Storage","nameLocations":["48723:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"48723:7:165"},"referencedDeclaration":74490,"src":"48723:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":82275,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":82273,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82224,"src":"48748:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":82274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48748:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"48723:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":82284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":82277,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82272,"src":"48775:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":82278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48782:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"48775:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$83046_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":82279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48795:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":83041,"src":"48775:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":82282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"48811:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":82281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"48803:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":82280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48803:7:165","typeDescriptions":{}}},"id":82283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48803:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"48775:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82285,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"48815:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48815:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82276,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"48767:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48767:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82288,"nodeType":"ExpressionStatement","src":"48767:82:165"},{"assignments":[82290],"declarations":[{"constant":false,"id":82290,"mutability":"mutable","name":"value","nameLocation":"48868:5:165","nodeType":"VariableDeclaration","scope":82322,"src":"48860:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82289,"name":"uint128","nodeType":"ElementaryTypeName","src":"48860:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":82296,"initialValue":{"arguments":[{"expression":{"id":82293,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"48884:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48888:5:165","memberName":"value","nodeType":"MemberAccess","src":"48884:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"48876:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":82291,"name":"uint128","nodeType":"ElementaryTypeName","src":"48876:7:165","typeDescriptions":{}}},"id":82295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48876:18:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"48860:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":82300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82290,"src":"48912:5:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":82299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"48920:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"48912:9:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82301,"name":"ZeroValueTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74636,"src":"48923:17:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48923:19:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82297,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"48904:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48904:39:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82304,"nodeType":"ExpressionStatement","src":"48904:39:165"},{"assignments":[82306],"declarations":[{"constant":false,"id":82306,"mutability":"mutable","name":"actorId","nameLocation":"48962:7:165","nodeType":"VariableDeclaration","scope":82322,"src":"48954:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82305,"name":"address","nodeType":"ElementaryTypeName","src":"48954:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":82309,"initialValue":{"expression":{"id":82307,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"48972:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48976:6:165","memberName":"sender","nodeType":"MemberAccess","src":"48972:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"48954:28:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":82317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":82311,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82272,"src":"49000:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":82312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49007:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"49000:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$83095_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":82313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49020:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":83079,"src":"49000:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":82315,"indexExpression":{"id":82314,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82306,"src":"49029:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"49000:37:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49041:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"49000:42:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82318,"name":"UnknownProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"49044:14:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49044:16:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82310,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"48992:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48992:69:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82321,"nodeType":"ExpressionStatement","src":"48992:69:165"}]},"documentation":{"id":82265,"nodeType":"StructuredDocumentation","src":"48530:137:165","text":" @dev Receives Ether from the `Mirror` instances when they\n perform state transitions with `valueToReceive`."},"implemented":true,"kind":"receive","modifiers":[{"id":82268,"kind":"modifierInvocation","modifierName":{"id":82267,"name":"whenNotPaused","nameLocations":["48699:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"48699:13:165"},"nodeType":"ModifierInvocation","src":"48699:13:165"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":82266,"nodeType":"ParameterList","parameters":[],"src":"48679:2:165"},"returnParameters":{"id":82269,"nodeType":"ParameterList","parameters":[],"src":"48713:0:165"},"scope":82324,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":79465,"name":"IRouter","nameLocations":["1576:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"1576:7:165"},"id":79466,"nodeType":"InheritanceSpecifier","src":"1576:7:165"},{"baseName":{"id":79467,"name":"OwnableUpgradeable","nameLocations":["1589:18:165"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"1589:18:165"},"id":79468,"nodeType":"InheritanceSpecifier","src":"1589:18:165"},{"baseName":{"id":79469,"name":"PausableUpgradeable","nameLocations":["1613:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":43858,"src":"1613:19:165"},"id":79470,"nodeType":"InheritanceSpecifier","src":"1613:19:165"},{"baseName":{"id":79471,"name":"EIP712Upgradeable","nameLocations":["1638:17:165"],"nodeType":"IdentifierPath","referencedDeclaration":44416,"src":"1638:17:165"},"id":79472,"nodeType":"InheritanceSpecifier","src":"1638:17:165"},{"baseName":{"id":79473,"name":"NoncesUpgradeable","nameLocations":["1661:17:165"],"nodeType":"IdentifierPath","referencedDeclaration":43698,"src":"1661:17:165"},"id":79474,"nodeType":"InheritanceSpecifier","src":"1661:17:165"},{"baseName":{"id":79475,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["1684:35:165"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"1684:35:165"},"id":79476,"nodeType":"InheritanceSpecifier","src":"1684:35:165"},{"baseName":{"id":79477,"name":"UUPSUpgradeable","nameLocations":["1725:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"1725:15:165"},"id":79478,"nodeType":"InheritanceSpecifier","src":"1725:15:165"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[82324,46243,44833,43943,43698,44416,44823,43858,42322,43484,42590,74985],"name":"Router","nameLocation":"1562:6:165","scope":82325,"usedErrors":[42158,42163,42339,42342,43601,43737,43740,43875,45427,45440,46100,46105,47372,48774,50701,50706,50711,53880,74539,74542,74545,74547,74550,74553,74556,74559,74562,74565,74572,74581,74586,74593,74596,74598,74600,74602,74604,74606,74608,74610,74612,74614,74616,74618,74620,74622,74624,74626,74628,74630,74632,74634,74636,82854,82857,82860,82863,82866,82869,82872],"usedEvents":[42169,42347,43729,43734,44781,44803,74495,74500,74507,74512,74517,74524,74531,74536]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":165} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"COMMIT_BATCH_AFTER_COMMIT_CODES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBatch","inputs":[{"name":"_batch","type":"tuple","internalType":"struct Gear.BatchCommitment","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockTimestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBatchHash","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint8","internalType":"uint8"},{"name":"chainCommitment","type":"tuple[]","internalType":"struct Gear.ChainCommitment[]","components":[{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"exited","type":"bool","internalType":"bool"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueToReceiveNegativeSign","type":"bool","internalType":"bool"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]},{"name":"call","type":"bool","internalType":"bool"}]}]},{"name":"head","type":"bytes32","internalType":"bytes32"}]},{"name":"codeCommitments","type":"tuple[]","internalType":"struct Gear.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"rewardsCommitment","type":"tuple[]","internalType":"struct Gear.RewardsCommitment[]","components":[{"name":"operators","type":"tuple","internalType":"struct Gear.OperatorRewardsCommitment","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"}]},{"name":"stakers","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"validatorsCommitment","type":"tuple[]","internalType":"struct Gear.ValidatorsCommitment[]","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitment","type":"bytes","internalType":"bytes"},{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"eraIndex","type":"uint256","internalType":"uint256"}]}]},{"name":"_signatureType","type":"uint8","internalType":"enum Gear.SignatureType"},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithAbiInterface","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithAbiInterfaceAndExecutableBalance","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithExecutableBalance","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"genesisTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_middleware","type":"address","internalType":"address"},{"name":"_eraDuration","type":"uint256","internalType":"uint256"},{"name":"_electionDuration","type":"uint256","internalType":"uint256"},{"name":"_validationDelay","type":"uint256","internalType":"uint256"},{"name":"_aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_verifiableSecretSharingCommitment","type":"bytes","internalType":"bytes"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBatchHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBatchTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"middleware","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidationBaseFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestCodeValidationExtraFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestCodeValidationOnBehalf","inputs":[{"name":"_requester","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_blobHashes","type":"bytes32[]","internalType":"bytes32[]"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v1","type":"uint8","internalType":"uint8"},{"name":"_r1","type":"bytes32","internalType":"bytes32"},{"name":"_s1","type":"bytes32","internalType":"bytes32"},{"name":"_v2","type":"uint8","internalType":"uint8"},{"name":"_r2","type":"bytes32","internalType":"bytes32"},{"name":"_s2","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCodeValidationBaseFee","inputs":[{"name":"newBaseFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCodeValidationExtraFee","inputs":[{"name":"newExtraFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdFraction","inputs":[],"outputs":[{"name":"thresholdNumerator","type":"uint128","internalType":"uint128"},{"name":"thresholdDenominator","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"storageView","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IRouter.StorageView","components":[{"name":"genesisBlock","type":"tuple","internalType":"struct Gear.GenesisBlockInfo","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"number","type":"uint32","internalType":"uint32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"latestCommittedBatch","type":"tuple","internalType":"struct Gear.CommittedBatchInfo","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"implAddresses","type":"tuple","internalType":"struct Gear.AddressBook","components":[{"name":"mirror","type":"address","internalType":"address"},{"name":"wrappedVara","type":"address","internalType":"address"},{"name":"middleware","type":"address","internalType":"address"}]},{"name":"validationSettings","type":"tuple","internalType":"struct Gear.ValidationSettingsView","components":[{"name":"thresholdNumerator","type":"uint128","internalType":"uint128"},{"name":"thresholdDenominator","type":"uint128","internalType":"uint128"},{"name":"validators0","type":"tuple","internalType":"struct Gear.ValidatorsView","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitmentPointer","type":"address","internalType":"address"},{"name":"list","type":"address[]","internalType":"address[]"},{"name":"useFromTimestamp","type":"uint256","internalType":"uint256"}]},{"name":"validators1","type":"tuple","internalType":"struct Gear.ValidatorsView","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitmentPointer","type":"address","internalType":"address"},{"name":"list","type":"address[]","internalType":"address[]"},{"name":"useFromTimestamp","type":"uint256","internalType":"uint256"}]}]},{"name":"computeSettings","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]},{"name":"timelines","type":"tuple","internalType":"struct Gear.Timelines","components":[{"name":"era","type":"uint256","internalType":"uint256"},{"name":"election","type":"uint256","internalType":"uint256"},{"name":"validationDelay","type":"uint256","internalType":"uint256"}]},{"name":"programsCount","type":"uint256","internalType":"uint256"},{"name":"validatedCodesCount","type":"uint256","internalType":"uint256"},{"name":"maxValidators","type":"uint16","internalType":"uint16"},{"name":"requestCodeValidationBaseFee","type":"uint256","internalType":"uint256"},{"name":"requestCodeValidationExtraFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"timelines","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.Timelines","components":[{"name":"era","type":"uint256","internalType":"uint256"},{"name":"election","type":"uint256","internalType":"uint256"},{"name":"validationDelay","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsAggregatedPublicKey","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsVerifiableSecretSharingCommitment","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"AnnouncesCommitted","inputs":[{"name":"head","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BatchCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"DebugEvent","inputs":[{"name":"topic0","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":true},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[{"name":"slot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ValidatorsCommittedForEra","inputs":[{"name":"eraIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ApproveERC20Failed","inputs":[]},{"type":"error","name":"BatchTimestampNotInPast","inputs":[]},{"type":"error","name":"BatchTimestampTooEarly","inputs":[]},{"type":"error","name":"BlobNotFound","inputs":[]},{"type":"error","name":"CodeAlreadyOnValidationOrValidated","inputs":[]},{"type":"error","name":"CodeNotValidated","inputs":[]},{"type":"error","name":"CodeValidationNotRequested","inputs":[]},{"type":"error","name":"CommitmentEraNotNext","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ElectionNotStarted","inputs":[]},{"type":"error","name":"EmptyValidatorsList","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"EraDurationTooShort","inputs":[]},{"type":"error","name":"ErasTimestampMustNotBeEqual","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisHashAlreadySet","inputs":[]},{"type":"error","name":"GenesisHashNotFound","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidBlobHash","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"providedBlobHash","type":"bytes32","internalType":"bytes32"},{"name":"expectedBlobHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidBlobHashesLength","inputs":[{"name":"providedLength","type":"uint256","internalType":"uint256"},{"name":"expectedLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidElectionDuration","inputs":[]},{"type":"error","name":"InvalidFROSTAggregatedPublicKey","inputs":[]},{"type":"error","name":"InvalidFrostSignatureCount","inputs":[]},{"type":"error","name":"InvalidFrostSignatureLength","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidPreviousCommittedBatchHash","inputs":[]},{"type":"error","name":"InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"PredecessorBlockNotFound","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RewardsCommitmentEraNotPrevious","inputs":[]},{"type":"error","name":"RewardsCommitmentPredatesGenesis","inputs":[]},{"type":"error","name":"RewardsCommitmentTimestampNotInPast","inputs":[]},{"type":"error","name":"RouterGenesisHashNotInitialized","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SignatureVerificationFailed","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"TimestampOlderThanPreviousEra","inputs":[]},{"type":"error","name":"TooManyChainCommitments","inputs":[]},{"type":"error","name":"TooManyRewardsCommitments","inputs":[]},{"type":"error","name":"TooManyValidatorsCommitments","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownProgram","inputs":[]},{"type":"error","name":"ValidationBeforeGenesis","inputs":[]},{"type":"error","name":"ValidationDelayTooBig","inputs":[]},{"type":"error","name":"ValidatorsAlreadyScheduled","inputs":[]},{"type":"error","name":"ValidatorsNotFoundForTimestamp","inputs":[]},{"type":"error","name":"ZeroValueTransfer","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f516020615a2c5f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161596590816100c78239608051818181612b260152612bb90152f35b6001600160401b0319166001600160401b039081175f516020615a2c5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610091575b50361561001a575f80fd5b610022613a5a565b5f5160206158e55f395f51905f5254600181015415610082576001600160801b0334161561007357335f908152601a9190910160205260409020541561006457005b63821a62f560e01b5f5260045ffd5b63a1a7c6eb60e01b5f5260045ffd5b63580683f360e01b5f5260045ffd5b5f905f3560e01c9081627a32e714613300575080630b9737ce146132cd5780630c18d277146132025780630d91bf2a1461303457806311bec80d14613001578063188509e914612fd357806328e24b3d14612fa55780633644e51514612f8a5780633683c4d214612ecd5780633bd109fa14612e7e5780633d43b41814612e2a5780633f4ba83a14612daa5780634429e24b14612d8e5780634f1ef28614612b7a57806352d1902d14612b1357806353f7fd48146122f05780635c975abb146122c15780636c2eb35014611d52578063715018a614611ce957806371a8cf2d14611cbb5780637ecebe0014611c6357806382bdeaad14611b4b5780638456cb5914611ad857806384b0196e146119b057806384d22a4f1461195257806388f50cf0146119195780638b1edf1e146118ba5780638c4ace6a1461175a5780638da5cb5b146117255780638f381dbe146116df5780639067088e1461169657806396a2ddfa146116685780639eb939a814611611578063a5d53a4414611591578063ad2b3d9a14611575578063ad3cb1cc1461152c578063b24fcac014611096578063baaf020114610f99578063c13911e814610f55578063c2eb812f14610bce578063ca1e781914610b7e578063cacf66ab14610b46578063d456fd5114610b10578063e3a6684f14610ad1578063e6fabc0914610a98578063ed612f8c14610a60578063edc8722514610a0b578063ee32004f14610825578063f0fd702a146103cd578063f1ef31ec1461039f578063f2fde38b14610372578063f4f20ac0146103395763facd743b0361000f5734610336576020366003190112610336576102f8613356565b60036103135f5160206158e55f395f51905f525442906152ed565b019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346103365780600319360112610336575f5160206158e55f395f51905f5254600701546040516001600160a01b039091168152602090f35b50346103365760203660031901126103365761039c61038f613356565b610397613a27565b6139b6565b80f35b50346103365780600319360112610336576020601f5f5160206158e55f395f51905f52540154604051908152f35b503461033657610140366003190112610336576103e8613356565b602435906044356001600160401b0381116108215761040b9036906004016134a5565b90916064359060843560ff8116810361081d5760e4359060ff8216820361081957610434613a5a565b87491561080a575f5160206158e55f395f51905f5254946001860154156107fb576019860196888a528760205260ff60408b20541660038110156107e7576107d857895b80496107ca578083036107b35750895b82811061076c57508542116107585760405160208101906001600160fb1b038411610754576104d360208261059e956105a79760051b8091873781010301601f198101835282613415565b5190209260018060a01b03861693848c527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408c208054906001820190556040519060208201927f375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b809784528760408401528d6060840152608083015260a08201528860c082015260c0815261056c60e082613415565b51902061057761528c565b906040519161190160f01b83526002830152602282015260c43591604260a43592206155be565b90929192615640565b6001600160a01b031681810361073f57505086906105dc60018060a01b0360068701541695601f601e820154910154906139a9565b93853b1561073b5760405163d505accf60e01b81526001600160a01b038516600482015230602482015260448101869052606481019190915260ff9190911660848201526101043560a48201526101243560c4820152818160e48183895af161071e575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482019290925291602091839190829081606481015b03925af19081156107135784916106e4575b50156106d55781835260209081526040808420805460ff19166001179055519182527f5c261a095dd5720475295dc06379921c003c22164ee6cae5cf83e76ce0a1b98591a180f35b631e4e7d0960e21b8352600483fd5b610706915060203d60201161070c575b6106fe8183613415565b8101906135e7565b5f61068d565b503d6106f4565b6040513d86823e3d90fd5b8161072b91949394613415565b6107375790855f610640565b8580fd5b8280fd5b637ba5ffb560e01b8952600452602452604487fd5b8b80fd5b632f4aa44f60e21b8a52600486905260248afd5b80498061077a838686613790565b3514610787838686613790565b359015610798575050600101610488565b606493508c926306f2f0e760e21b8452600452602452604452fd5b635cfa404d60e11b8b52600483905260245260448afd5b6107d39061399b565b610478565b6304c51a3360e31b8a5260048afd5b634e487b7160e01b8b52602160045260248bfd5b63580683f360e01b8952600489fd5b637bb2fa2f60e11b8852600488fd5b8780fd5b8680fd5b8380fd5b5034610336576101203660031901126103365761084061332a565b610848613340565b6084356001600160801b038116908181036109b3578460c43560ff811681036109a457610873613a5a565b610881602435600435613a81565b6006015490936001600160a01b0390911691823b15610821576108c98480926040518093819263d505accf60e01b8352610104359060e4359060a4358a30336004890161359d565b038183885af16109f6575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156109eb5786916109cc575b50156109bd576001600160a01b03908116939081166109b7575033915b833b156109b357604051635fd142bb60e11b81526001600160a01b03938416600482015292166024830152604482018490526064820152828160848183865af180156109a85761098f575b602082604051908152f35b61099a838092613415565b6109a45781610984565b5080fd5b6040513d85823e3d90fd5b8480fd5b91610939565b631e4e7d0960e21b8552600485fd5b6109e5915060203d60201161070c576106fe8183613415565b5f61091c565b6040513d88823e3d90fd5b81610a0091613415565b61073b57825f6108d4565b50346103365780600319360112610336576020610a585f5160206158e55f395f51905f525460086004610a3e42846152ed565b0154910154906001600160801b038260801c921690615261565b604051908152f35b503461033657806003193601126103365760206004610a8e5f5160206158e55f395f51905f525442906152ed565b0154604051908152f35b50346103365780600319360112610336575f5160206158e55f395f51905f5254600501546040516001600160a01b039091168152602090f35b5034610336578060031936011261033657604060085f5160206158e55f395f51905f525401548151906001600160801b038116825260801c6020820152f35b5034610336578060031936011261033657602065ffffffffffff60045f5160206158e55f395f51905f5254015416604051908152f35b5034610336578060031936011261033657602065ffffffffffff60025f5160206158e55f395f51905f52540154821c16604051908152f35b5034610336578060031936011261033657610bca610bb66004610bb05f5160206158e55f395f51905f525442906152ed565b01613948565b60405191829160208352602083019061351a565b0390f35b5034610336578060031936011261033657604051610beb816133de565b610bf3613876565b8152604051610c01816133c3565b5f8152602081015f90526020820152610c18613876565b6040820152610c25613915565b6060820152604051610c36816133c3565b5f80825260208201526080820152610c4c613876565b60a08201528160c08201528160e0820152816101008201528161012082015261014001525f5160206158e55f395f51905f5254610c87613915565b50610c9460098201615569565b90610ca1600f8201615569565b60088201549260405193610cb4856133fa565b6001600160801b038116855260801c602085015260408401526060830152601b81015490601c810154601d82015461ffff16601e83015490601f8401549260405195610cff876133de565b604051610d0b81613394565b60018701548152600287015463ffffffff8116602083015260201c65ffffffffffff166040820152875260405197610d42896133c3565b60038701548952600487015465ffffffffffff1660208a01526020880198895260405190610d6f82613394565b60058801546001600160a01b039081168352600689015481166020840152600789015416604080840191909152890191825260608901908152610db4601589016137c8565b9760808a01988952601601610dc890613894565b9160a08a0192835260c08a0193845260e08a019485526101008a019586526101208a019687526101408a019788526040519a8b9a60208c5251805160208d0152602081015163ffffffff1660408d01526040015165ffffffffffff1660608c015251805160808c01526020015165ffffffffffff1660a08b015251600160a01b6001900381511660c08b0152600160a01b6001900360208201511660e08b0152600160a01b600190039060400151166101008a0152516101208901610260905280516001600160801b03166102808a015260208101516001600160801b03166102a08a015260408101516102c08a01608090526103008a01610ec991613556565b90606001519061027f198a8203016102e08b0152610ee691613556565b965180516001600160401b03166101408a0152602001516001600160801b031661016089015251805161018089015260208101516101a0890152604001516101c0880152516101e0870152516102008601525161ffff1661022085015251610240840152516102608301520390f35b50346103365760203660031901126103365760ff604060209260195f5160206158e55f395f51905f52540160043582528452205416610f9760405180926134d5565bf35b5034610336576020366003190112610336576004356001600160401b0381116109a457610fca9036906004016134a5565b905f5160206158e55f395f51905f525490610fe483613725565b91610ff26040519384613415565b838352610ffe84613725565b602084019490601f1901368637601a869201915b81811061105d57868587604051928392602084019060208552518091526040840192915b818110611044575050500390f35b8251845285945060209384019390920191600101611036565b8061107361106e6001938588613790565b6137f6565b828060a01b03165f528360205260405f205461108f82886137b4565b5201611012565b5034610336576060366003190112610336576001600160401b036004351161033657610100600435360360031901126103365760026024351015610336576044356001600160401b0381116109a4576110f39036906004016134a5565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61151d5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206158e55f395f51905f52549060018201541561150e578154156114b2575b600382015460446004350135036114a35765ffffffffffff60048301541665ffffffffffff6111926024600435016138ca565b1610611495576111a760043560040183614492565b926111bc60a460043501600435600401614947565b808096925060051b0460201485151715611481576111dc8560051b615355565b8695865b81881061134c5750611312965060051b9020906112026004356004018661499e565b61121160043560040187614d75565b906112206024600435016138ca565b9361122f6064600435016138bc565b9360405194602086019660043560040135885265ffffffffffff60d01b9060d01b16604087015260446004350135604687015260ff60f81b9060f81b1660668601526067850152608784015260a783015260c782015260c7815261129460e782613415565b5190209283600382015565ffffffffffff6112b36024600435016138ca565b1665ffffffffffff196004830154161760048201557f7ebe42360bcb182fe0a88148b081e4557c89d09aa6af8307635ac2f83e2aaa656020604051868152a165ffffffffffff6113076024600435016138ca565b169360243591614ff8565b1561133d57807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b63729d0f6b60e01b8152600490fd5b61136060a460043501600435600401614947565b89101561146d578860061b8101358a526019880160205260ff60408b20541660038110156107e75760010361145e576001916020916114238b8b8e868360061b860101926113ad8461497c565b1561143f5760061b85013590525060198c01855260408e20805460ff19166002179055601c8c0180546113df9061399b565b90555b8c7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c98661140e8461497c565b1515926040519060061b8701358152a261497c565b908b60061b01358c52825360218b2081860152019701966111e0565b60409260199160061b87013583520187522060ff1981541690556113e2565b636e83084760e11b8a5260048afd5b634e487b7160e01b8a52603260045260248afd5b634e487b7160e01b86526011600452602486fd5b620725b160ea1b8452600484fd5b63164b6fc360e01b8452600484fd5b6114cf6114c36064600435016138bc565b600435600401356143fd565b156114ff5765ffffffffffff6114e96024600435016138ca565b16421161115f57631ad8809560e31b8452600484fd5b637b8cb35960e01b8452600484fd5b63580683f360e01b8452600484fd5b633ee5aeb560e01b8352600483fd5b503461033657806003193601126103365750610bca60405161154f604082613415565b60058152640352e302e360dc1b60208201526040519182916020835260208301906134f6565b5034610336578060031936011261033657602060405160018152f35b50346103365780600319360112610336575f5160206158e55f395f51905f52546001600160a01b03906002906115c89042906152ed565b0154166040519182915f19813b0164ffffffffff16916021830191601f8501903c80825201906040820191826040526020835261160c603f199260608301906134f6565b030190f35b503461033657806003193601126103365761162a613876565b50606061164760165f5160206158e55f395f51905f525401613894565b610f9760405180926040809180518452602081015160208501520151910152565b50346103365780600319360112610336576020601b5f5160206158e55f395f51905f52540154604051908152f35b5034610336576020366003190112610336576116b0613356565b601a5f5160206158e55f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b503461033657602036600319011261033657600435906001600160401b03821161033657602061171b61171536600486016134a5565b9061380a565b6040519015158152f35b50346103365780600319360112610336575f5160206158655f395f51905f52546040516001600160a01b039091168152602090f35b50346103365760a03660031901126103365760043560443560ff8116810361073b57611784613a5a565b8249156118ab575f5160206158e55f395f51905f525460018101541561150e5760198101918385528260205260ff604086205416600381101561189757611888576006820154601e9092015485926001600160a01b031691823b156108215760405163d505accf60e01b815233600482015230602480830191909152604482018490523560648083019190915260ff92909216608480830191909152913560a4820152903560c48201528390818160e48183885af1611873575b50506040516323b872dd60e01b815233600482015230602482015260448101919091529160209183918290816064810161067b565b8161187d91613415565b61073b57825f61183e565b6304c51a3360e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b637bb2fa2f60e11b8352600483fd5b50346103365780600319360112610336575f5160206158e55f395f51905f52546001810190815461190a576002015463ffffffff16409081156118fb575580f35b63f7bac7b560e01b8352600483fd5b6309476b0360e41b8352600483fd5b50346103365780600319360112610336575f5160206158e55f395f51905f5254600601546040516001600160a01b039091168152602090f35b503461033657806003193601126103365761196b6135ff565b50604061198860155f5160206158e55f395f51905f5254016137c8565b610f97825180926001600160801b03602080926001600160401b038151168552015116910152565b50346103365780600319360112610336575f5160206158a55f395f51905f52541580611ac2575b15611a8557611a29906119e8614283565b906119f1614350565b906020611a3760405193611a058386613415565b8385525f368137604051968796600f60f81b885260e08589015260e08801906134f6565b9086820360408801526134f6565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611a6e57505050500390f35b835185528695509381019392810192600101611a5f565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206159455f395f51905f5254156119d7565b5034610336578060031936011261033657611af1613a27565b611af9613a5a565b600160ff195f5160206159055f395f51905f525416175f5160206159055f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610336576020366003190112610336576004356001600160401b0381116109a457611b7c9036906004016134a5565b905f5160206158e55f395f51905f525490611b9683613725565b91611ba46040519384613415565b838352611bb084613725565b602084019490601f19013686376019869201915b818110611c1957868587604051928392602084019060208552518091526040840192915b818110611bf6575050500390f35b9193509160208082611c0b60019488516134d5565b019401910191849392611be8565b611c24818386613790565b3587528260205260ff604088205416611c3d82876137b4565b6003821015611c4f5752600101611bc4565b634e487b7160e01b89526021600452602489fd5b5034610336576020366003190112610336576020906040906001600160a01b03611c8b613356565b1681527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0083522054604051908152f35b5034610336578060031936011261033657602060035f5160206158e55f395f51905f52540154604051908152f35b5034610336578060031936011261033657611d02613a27565b5f5160206158655f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610336578060031936011261033657611d6b613a27565b5f5160206159255f395f51905f525460ff8160401c169081156122ac575b5061229d575f5160206159255f395f51905f52805468ffffffffffffffffff1916680100000000000000051790555f5160206158655f395f51905f5254611de3906001600160a01b0316611ddb615309565b610397615309565b611deb613635565b90611df4613662565b90611dfd615309565b611e05615309565b82516001600160401b0381116121a057611e2c5f5160206158455f395f51905f525461424b565b601f8111612239575b506020601f82116001146121bf578293948293926121b4575b50508160011b915f199060031b1c1916175f5160206158455f395f51905f52555b81516001600160401b0381116121a057611e965f5160206158855f395f51905f525461424b565b601f8111612133575b50602092601f82116001146120ba579282938293926120af575b50508160011b915f199060031b1c1916175f5160206158855f395f51905f52555b805f5160206158a55f395f51905f5255805f5160206159455f395f51905f52555f5160206158e55f395f51905f5254611f11613fef565b80516001830155600282019063ffffffff60208201511669ffffffffffff000000006040845493015160201b169169ffffffffffffffffffff191617179055816020604051611f5f816133c3565b82815201528160038201556004810165ffffffffffff19815416905561ffff6004611f8a42846152ed565b01541661ffff601d8301911661ffff198254161790556004602060018060a01b036006840154166040519283809263313ce56760e01b82525afa80156109a857611fdb918491612080575b506136d9565b90816103e8026103e88104830361206c57601e820155816101f402916101f483040361205857601f015560ff60401b195f5160206159255f395f51905f5254165f5160206159255f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160058152a180f35b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526011600452602484fd5b6120a2915060203d6020116120a8575b61209a8183613415565b8101906136c0565b5f611fd5565b503d612090565b015190505f80611eb9565b601f198216935f5160206158855f395f51905f52845280842091845b86811061211b5750836001959610612103575b505050811b015f5160206158855f395f51905f5255611eda565b01515f1960f88460031b161c191690555f80806120e9565b919260206001819286850151815501940192016120d6565b81811115611e9f575f5160206158855f395f51905f528352612192907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f840160051c9060208510612198575b601f82910160051c03910161406c565b5f611e9f565b859150612182565b634e487b7160e01b82526041600452602482fd5b015190505f80611e4e565b5f5160206158455f395f51905f52835280832090601f198316845b81811061222157509583600195969710612209575b505050811b015f5160206158455f395f51905f5255611e6f565b01515f1960f88460031b161c191690555f80806121ef565b9192602060018192868b0151815501940192016121da565b81811115611e35575f5160206158455f395f51905f528352612297907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f840160051c906020851061219857601f82910160051c03910161406c565b5f611e35565b63f92ee8a960e01b8152600490fd5b600591506001600160401b031610155f611d89565b5034610336578060031936011261033657602060ff5f5160206159055f395f51905f5254166040519015158152f35b5034610336576101603660031901126103365761230b613356565b906024356001600160a01b038116908190036109a45761232961332a565b92612332613340565b9360a4359060843560c43560403660e319011261081d5761012435976001600160401b038911610819573660238a011215610819578860040135916001600160401b038311612b0f57366024848c010111612b0f57610144356001600160401b038111612b0b576123a79036906004016134a5565b9690945f5160206159255f395f51905f5254986001600160401b0360ff8b60401c16159a1680159081612b03575b6001149081612af9575b159081612af0575b50612ae157612429908a60016001600160401b03195f5160206159255f395f51905f525416175f5160206159255f395f51905f5255612ab1575b611ddb615309565b612431615309565b612439613635565b612441613662565b9061244a615309565b612452615309565b8051906001600160401b038211612a9d578d829161247d5f5160206158455f395f51905f525461424b565b601f8111612a39575b50602091601f84116001146129bd57926129b2575b50508160011b915f199060031b1c1916175f5160206158455f395f51905f52555b8051906001600160401b03821161299e578c82916124e75f5160206158855f395f51905f525461424b565b601f811161293a575b50602091601f84116001146128be57926128b3575b50508160011b915f199060031b1c1916175f5160206158855f395f51905f52555b8a5f5160206158a55f395f51905f52558a5f5160206159455f395f51905f525561254e615309565b612556615309565b42156128a4578115612895578181111561288657600a6125768383613681565b048310156128775791600493916020938c60409c8d9182516125988482613415565b601781528881017f726f757465722e73746f726167652e526f75746572563100000000000000000081526125ca613a27565b5f19915190200181528760ff199120169a8b5f5160206158e55f395f51905f52557f059eb9adf6e95b839d818142ed5bd5e498b6d95138e65c91525e93cc0f0339fc888d8551908152a161261c613fef565b8c6001825191015560028d019063ffffffff8a8201511669ffffffffffff000000008684549301518c1b169169ffffffffffffffffffff19161717905582519061266582613394565b8282526001600160a01b039081168983018190529781169390910183905260058c018054919092166001600160a01b03199182161790915560068b01805482168717905560078b018054909116909117905570030000000000000000000000000000000260088a01556126d66135ff565b506509184e72a000858d516126ea816133c3565b639502f900815201526015890180546001600160c01b0319166d09184e72a000000000009502f9001790558b5183908d9061272481613394565b8381528781018590520152601689015560178801556018870155601d8601805461ffff191661ffff8916179055885163313ce56760e01b815292839182905afa90811561286d579061277c91899161208057506136d9565b806103e8026103e88104820361285957601e850155806101f402906101f4820403612845576127e46127da6127eb9798999a600993601f8801558a51946127c2866133c3565b60e43586526101043560208701526024369201613451565b934296369161373c565b9301614087565b6127f3575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206159255f395f51905f5254165f5160206159255f395f51905f52555160018152a180f35b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526011600452602489fd5b87513d8a823e3d90fd5b63145e348f60e01b8b5260048bfd5b6353b2bbed60e01b8b5260048bfd5b63f7ba6bdb60e01b8b5260048bfd5b63b7d0949760e01b8b5260048bfd5b015190505f80612505565b5f5160206158855f395f51905f5281528281209350601f198516905b818110612922575090846001959493921061290a575b505050811b015f5160206158855f395f51905f5255612526565b01515f1960f88460031b161c191690555f80806128f0565b929360206001819287860151815501950193016128da565b838111156124f0575f5160206158855f395f51905f528352612998907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f860160051c906020871061219857601f82910160051c03910161406c565b5f6124f0565b634e487b7160e01b8d52604160045260248dfd5b015190505f8061249b565b5f5160206158455f395f51905f5281528281209350601f198516905b818110612a215750908460019594939210612a09575b505050811b015f5160206158455f395f51905f52556124bc565b01515f1960f88460031b161c191690555f80806129ef565b929360206001819287860151815501950193016129d9565b83811115612486575f5160206158455f395f51905f528352612a97907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f860160051c906020871061219857601f82910160051c03910161406c565b5f612486565b634e487b7160e01b8e52604160045260248efd5b600160401b60ff60401b195f5160206159255f395f51905f525416175f5160206159255f395f51905f5255612421565b63f92ee8a960e01b8c5260048cfd5b9050155f6123e7565b303b1591506123df565b8b91506123d5565b8980fd5b8880fd5b50346103365780600319360112610336577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b6b5760206040515f5160206158c55f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261033657612b8f613356565b906024356001600160401b0381116109a457612baf903690600401613487565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612d6c575b50612d5d57612bf1613a27565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596612d25575b50612c3657634c9c8ce360e01b84526004839052602484fd5b9091845f5160206158c55f395f51905f528103612d135750813b15612d01575f5160206158c55f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015612ce75780836020612cdb95519101845af43d15612cdf573d91612cbf83613436565b92612ccd6040519485613415565b83523d85602085013e6157e6565b5080f35b6060916157e6565b50505034612cf25780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011612d55575b81612d4160209383613415565b81010312612d515751945f612c1d565b5f80fd5b3d9150612d34565b63703e46dd60e11b8252600482fd5b5f5160206158c55f395f51905f52546001600160a01b0316141590505f612be4565b5034610336578060031936011261033657602060405160028152f35b5034610336578060031936011261033657612dc3613a27565b5f5160206159055f395f51905f525460ff811615612e1b5760ff19165f5160206159055f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b503461033657602036600319011261033657612e44613356565b612e4c613a27565b5f5160206158e55f395f51905f525460050180546001600160a01b0319166001600160a01b0390921691909117905580f35b5034610336578060031936011261033657612e976135ff565b506040612ebb612eb65f5160206158e55f395f51905f525442906152ed565b613617565b60208251918051835201516020820152f35b503461033657606036600319011261033657612ee761332a565b612eef613a5a565b612efd602435600435613ef7565b506001600160a01b0390811691908116612f855750335b5f5160206158e55f395f51905f5254600501546001600160a01b0316823b1561082157604051635fd142bb60e11b81526001600160a01b03909216600483015260248201526001604482015260648101839052828160848183865af180156109a85761098f57602082604051908152f35b612f14565b50346103365780600319360112610336576020610a5861528c565b5034610336578060031936011261033657602060015f5160206158e55f395f51905f52540154604051908152f35b50346103365780600319360112610336576020601e5f5160206158e55f395f51905f52540154604051908152f35b50346103365760203660031901126103365761301b613a27565b600435601e5f5160206158e55f395f51905f5254015580f35b5034610336576101003660031901126103365761304f61332a565b6064356001600160801b03811690818103610821578360a43560ff811681036109a45761307a613a5a565b613088602435600435613ef7565b6006015490936001600160a01b0390911691823b15610821576130cf8480926040518093819263d505accf60e01b835260e4359060c435906084358a30336004890161359d565b038183885af16131ed575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156131e25785916131c3575b50156131b4576001600160a01b03908116929081166131ae575033905b5f5160206158e55f395f51905f5254600501546001600160a01b0316833b156109b357604051635fd142bb60e11b81526001600160a01b0390931660048401526024830152600160448301526064820152828160848183865af180156109a85761098f57602082604051908152f35b9061313f565b631e4e7d0960e21b8452600484fd5b6131dc915060203d60201161070c576106fe8183613415565b5f613122565b6040513d87823e3d90fd5b816131f791613415565b61073b57825f6130da565b34612d51576080366003190112612d515761321b61332a565b613223613340565b9061322c613a5a565b61323a602435600435613a81565b506001600160a01b03908116919081166132c7575033915b813b15612d5157604051635fd142bb60e11b81526001600160a01b039384166004820152921660248301525f60448301819052606483018190528260848183855af19182156132bc576020926132ac575b50604051908152f35b5f6132b691613415565b5f6132a3565b6040513d5f823e3d90fd5b91613252565b34612d51576020366003190112612d51576132e6613a27565b600435601f5f5160206158e55f395f51905f525401555f80f35b34612d51575f366003190112612d5157602090601c5f5160206158e55f395f51905f525401548152f35b604435906001600160a01b0382168203612d5157565b606435906001600160a01b0382168203612d5157565b600435906001600160a01b0382168203612d5157565b35906001600160a01b0382168203612d5157565b35906001600160801b0382168203612d5157565b606081019081106001600160401b038211176133af57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176133af57604052565b61016081019081106001600160401b038211176133af57604052565b608081019081106001600160401b038211176133af57604052565b90601f801991011681019081106001600160401b038211176133af57604052565b6001600160401b0381116133af57601f01601f191660200190565b92919261345d82613436565b9161346b6040519384613415565b829481845281830111612d51578281602093845f960137010152565b9080601f83011215612d51578160206134a293359101613451565b90565b9181601f84011215612d51578235916001600160401b038311612d51576020808501948460051b010111612d5157565b9060038210156134e25752565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106135375750505090565b82516001600160a01b031684526020938401939092019160010161352a565b9060208251805183520151602082015260018060a01b03602083015116604082015260806060613594604085015160a08386015260a085019061351a565b93015191015290565b936001600160801b0360c096929998979460ff9460e088019b60018060a01b0316885260018060a01b03166020880152166040860152606085015216608083015260a08201520152565b90816020910312612d5157518015158103612d515790565b6040519061360c826133c3565b5f6020838281520152565b90604051613624816133c3565b602060018294805484520154910152565b60405190613644604083613415565b600f82526e2b30b9309722aa24102937baba32b960891b6020830152565b60405190613671604083613415565b60018252603160f81b6020830152565b9190820391821161368e57565b634e487b7160e01b5f52601160045260245ffd5b81156136ac570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312612d51575160ff81168103612d515790565b60ff16604d811161368e57600a0a90565b8181029291811591840414171561368e57565b9190826040910312612d5157604051613715816133c3565b6020808294803584520135910152565b6001600160401b0381116133af5760051b60200190565b92919061374881613725565b936137566040519586613415565b602085838152019160051b8101928311612d5157905b82821061377857505050565b602080916137858461336c565b81520191019061376c565b91908110156137a05760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156137a05760209160051b010190565b906040516137d5816133c3565b91546001600160401b038116835260401c6001600160801b03166020830152565b356001600160a01b0381168103612d515790565b6138235f5160206158e55f395f51905f525442906152ed565b600301905f5b8381106138395750505050600190565b61384761106e828685613790565b6001600160a01b03165f9081526020849052604090205460ff161561386e57600101613829565b505050505f90565b6040519061388382613394565b5f6040838281528260208201520152565b906040516138a181613394565b60406002829480548452600181015460208501520154910152565b3560ff81168103612d515790565b3565ffffffffffff81168103612d515790565b604051906138ea826133fa565b5f6060836040516138fa816133c3565b83815283602082015281528260208201528160408201520152565b60405190613922826133fa565b815f81525f60208201526139346138dd565b604082015260606139436138dd565b910152565b90604051918281549182825260208201905f5260205f20925f5b81811061397957505061397792500383613415565b565b84546001600160a01b0316835260019485019487945060209093019201613962565b5f19811461368e5760010190565b9190820180921161368e57565b6001600160a01b03168015613a14575f5160206158655f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206158655f395f51905f52546001600160a01b03163303613a4757565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206159055f395f51905f525416613a7257565b63d93c066560e01b5f5260045ffd5b9190915f5160206158e55f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134e257600203613ee857815f5260205260405f206040516103008101908082106001600160401b03831117612d51576102fb916040527f6080806040526102e990816100128239f3fe60806040526004361061029f575f81527f3560e01c806336a52a18146100bb57806342129d00146100b65780635ce6c32760208201527f146100b1578063701da98e146100ac578063704ed542146100a75780637a8e0c60408201527fdd146100a257806391d5a64c1461009d5780639ce110d714610098578063affe60608201527fd0e014610093578063c60496921461008e5763e43f34330361029f5761028a5660808201527f5b610260565b610243565b61021b565b610205565b6101d2565b6101b3565b6160a08201527f0178565b610156565b610119565b346100e7575f3660031901126100e757600260c08201527f5460405160089190911c6001600160a01b03168152602090f35b5f80fd5b918160e08201527f601f840112156100e75782359167ffffffffffffffff83116100e757602083816101008201527f8601950101116100e757565b60403660031901126100e75760043567ffffffff6101208201527fffffffff81116100e7576101459036906004016100eb565b50506024358015156101408201527f1461029f575f80fd5b346100e7575f3660031901126100e757602060ff6002546101608201527f166040519015158152f35b346100e7575f3660031901126100e75760205f54606101808201527f4051908152f35b600435906fffffffffffffffffffffffffffffffff821682036101a08201527f6100e757565b346100e75760203660031901126100e7576101cc610194565b506101c08201527f61029f565b60403660031901126100e75760243567ffffffffffffffff8111616101e08201527ee7576101fe9036906004016100eb565b505061029f565b346100e7576020366102008201527f60031901121561029f575f80fd5b346100e7575f3660031901126100e75760036102208201527f546040516001600160a01b039091168152602090f35b346100e7575f366003196102408201527f01126100e7576020600154604051908152f35b346100e75760a03660031901126102608201527f6100e757610279610194565b5060443560ff81161461029f575f80fd5b3461006102808201527fe7575f3660031901121561029f575f80fd5b63e6fabc0960e01b5f5260205f606102a08201523060481b685afa156100e7575f806204817360e81b01176102c08201527f8051368280378136915af43d5f803e156102e5573d5ff35b3d5ffd00000000006102e08201525ff5908115612d515760018060a01b0382165f52601a84016020528060405f2055601b8401613ead815461399b565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a29190565b630e2637d160e01b5f5260045ffd5b9190915f5160206158e55f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134e257600203613ee857815f5260205260405f2060405160608101908082106001600160401b03831117612d5157605a916040527f3d605080600a3d3981f3608060405263e6fabc0960e01b5f5260205f6004817381523060601b6b5afa15604c575f80805136821760208201527f80378136915af43d5f803e156048573d5ff35b3d5ffd5b5f80fd00000000000060408201525ff5908115612d515760018060a01b0382165f52601a84016020528060405f2055601b8401613ead815461399b565b613ff7613876565b5063ffffffff43116140545765ffffffffffff421161403c5760405161401c81613394565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6306dfcc6560e41b5f5260306004524260245260445ffd5b6306dfcc6560e41b5f5260206004524360245260445ffd5b5f5b82811061407a57505050565b5f8282015560010161406e565b9291908051906020810191825170014551231950b75fc4402da1732fc9bebe198210918261423a575b50501561422b5751845551600184015580518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff091821561421e57526002830180546001600160a01b0319166001600160a01b039092169190911790555f5b60048301805482101561414f575f90815260208082208301546001600160a01b0316825260038501905260409020805460ff19169055600101614111565b5050925f5b8451811015614198576001906001600160a01b0361417282886137b4565b5116828060a01b03165f526003840160205260405f208260ff1982541617905501614154565b5092600482018151916001600160401b0383116133af57600160401b83116133af576020908254848455808510614203575b5001905f5260205f205f5b8381106141e6575050505060050155565b82516001600160a01b0316818301556020909201916001016141d5565b61421890845f528580855f200191039061406c565b5f6141ca565b63301164255f526004601cfd5b63375f0aab60e11b5f5260045ffd5b61424492506157c3565b5f806140b0565b90600182811c92168015614279575b602083101461426557565b634e487b7160e01b5f52602260045260245ffd5b91607f169161425a565b604051905f825f5160206158455f395f51905f5254916142a28361424b565b808352926001811690811561433157506001146142c6575b61397792500383613415565b505f5160206158455f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310614315575050906020613977928201016142ba565b60209193508060019154838589010152019101909184926142fd565b6020925061397794915060ff191682840152151560051b8201016142ba565b604051905f825f5160206158855f395f51905f52549161436f8361424b565b808352926001811690811561433157506001146143925761397792500383613415565b505f5160206158855f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b8183106143e1575050906020613977928201016142ba565b60209193508060019154838589010152019101909184926143c9565b435f198101939290841161368e5760ff1643811061444d57505f925b83811015614429575b505f925050565b804082810361443b5750600193505050565b15614448575f1901614419565b614422565b6144579043613681565b92614419565b903590601e1981360301821215612d5157018035906001600160401b038211612d5157602001918160051b36038313612d5157565b906080810160016144a3828461445d565b905011614938576144b4818361445d565b905015614911576144c49161445d565b156137a057803590603e1981360301821215612d515701916144e6838061445d565b9190928260051b938385046020148415171561368e5761450885969495615355565b925f945f97601a60fe19853603019501965b888a10156148c9578960051b85013586811215612d5157850161453c816137f6565b6001600160a01b03165f90815260208a9052604090205415610064575f608082016001600160801b0361456e82615334565b161515806148b6575b6148a5575b6001600160a01b0361458d846137f6565b604051630427a21d60e11b81526020600482015294911691610124850191906001600160801b039061460c906001600160a01b036145ca8561336c565b166024890152602084013560448901526145e660408501615348565b151560648901526001600160a01b036146016060860161336c565b166084890152613380565b1660a486015261461e60a08201615348565b151560c486015236819003601e190160c082013581811215612d51578201602081359101936001600160401b038211612d51576060820236038513612d5157819061010060e48a015252610144870193905f905b80821061485b5750505060e082013590811215612d515701803560208201926001600160401b038211612d51578160051b908136038513612d515791879594936023198785030161010488015281845260208085019385010194935f9160fe19813603015b84841061474e5750505050505050602093916001600160801b03848093039316905af19081156132bc575f9161471c575b50816020916001938a01520199019861451a565b90506020813d8211614746575b8161473660209383613415565b81010312612d5157516001614708565b3d9150614729565b919395979850919395601f19848203018752873582811215612d51578301602081013582526001600160a01b036147876040830161336c565b1660208301526060810135603e193683900301811215612d51578101602081013591906040016001600160401b038311612d51578236038113612d5157829060e060408601528160e08601526101008501375f61010083850101526001600160801b036147f660808301613380565b16606084015260a0810135608084015260c081013563ffffffff60e01b8116809103612d51578360209361483860e086956101009560a060019a015201615348565b151560c0830152601f80199101160101990197019401918a9897969593916146d7565b90919460608060019288358152838060a01b0361487a60208b0161336c565b1660208201526001600160801b0361489460408b01613380565b166040820152019601920190614672565b90506148b081615334565b9061457c565b506148c360a0840161497c565b15614577565b5094935095509550506020925020910135907fd04cd9af813f6f0b56e9411a6ee6a84eb5ac35a96f0c33d2e3a07d65baa8f4186020604051848152a15f5260205260405f2090565b5050507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6306d6c38360e01b5f5260045ffd5b903590601e1981360301821215612d5157018035906001600160401b038211612d5157602001918160061b36038313612d5157565b358015158103612d515790565b903590605e1981360301821215612d51570190565b60c0820160016149ae828561445d565b905011614d34576149bf818461445d565b905015614911576149d0908361445d565b156137a057803590607e1981360301821215612d51570191606083019060206149f8836138ca565b91019065ffffffffffff80614a0c846138ca565b1691161015614d2557614a1e826138ca565b65ffffffffffff80600286015460201c16911610614d1657614a6465ffffffffffff614a5d614a5782614a50876138ca565b168761537a565b936138ca565b168461537a565b1115614d07576007820154600690920180548435946001600160a01b0394851694604082019391925f91602091166044614aaa83614aa28989614989565b01358b6139a9565b604051948593849263095ea7b360e01b84528c600485015260248401525af19081156132bc575f91614ce8575b5015614cd9575460405163394f179b60e11b81526001600160a01b03909116600482015260248101959095526020818101356044870152856064815f885af19485156132bc575f95614ca1575b5090614b2f91614989565b91614b39826138ca565b9260405193637fbe95b560e01b85526040600486015260a48501918035601e1982360301811215612d51578101602081359101936001600160401b038211612d51578160061b36038513612d515760606044890152819052869360c485019392915f5b818110614c6957505050836020959365ffffffffffff829484895f9601356064860152614bd2604060018060a01b03920161336c565b16608485015216602483015203925af19182156132bc575f92614c33575b50614bfa906138ca565b6040519160208301938452604083015265ffffffffffff60d01b9060d01b16606082015260468152614c2d606682613415565b51902090565b9091506020813d602011614c61575b81614c4f60209383613415565b81010312612d51575190614bfa614bf0565b3d9150614c42565b919550919293604080600192838060a01b03614c848a61336c565b168152602089013560208201520196019101918895949392614b9c565b919094506020823d602011614cd1575b81614cbe60209383613415565b81010312612d5157905193614b2f614b24565b3d9150614cb1565b6367b9145160e01b5f5260045ffd5b614d01915060203d60201161070c576106fe8183613415565b5f614ad7565b6308027f7760e31b5f5260045ffd5b637bde91e760e11b5f5260045ffd5b63087a19ab60e41b5f5260045ffd5b633249ceed60e11b5f5260045ffd5b903590601e1981360301821215612d5157018035906001600160401b038211612d5157602001918136038313612d5157565b9060e081016001614d86828461445d565b905011614fe957614d97818361445d565b90501561491157614da79161445d565b156137a057803590609e1981360301821215612d5157016060810190614dcd828261445d565b905015614fda5765ffffffffffff600284015460201c1691614def8342613681565b614dfe601686015480926136a2565b936080840135946001810180911161368e578503614fcb57614e2385614e29936136ea565b906139a9565b93614e38601782015486613681565b4210614fbc57614e47906153a2565b934260058601541015614fad57614e9c906040840195614e8e614e96614e6d8988614d43565b9190614e79888a61445d565b949091614e86368c6136fd565b943691613451565b93369161373c565b92614087565b7fa1a3b42179ad30022438a1ea333b38eaf4a7329beee5e2b8111c0dcd4e08821c6020604051858152a160a082360312612d515760405193614edd856133fa565b614ee736846136fd565b8552356001600160401b038111612d5157614f059036908401613487565b602085015235906001600160401b038211612d51570136601f82011215612d5157614f3790369060208135910161373c565b91826040820152816060820152519160208351930151906040519283926020840195865260408401526060830160208351919301905f5b818110614f8b57505050815203808252614c2d9060200182613415565b82516001600160a01b0316855286955060209485019490920191600101614f6e565b6333fc8f5160e21b5f5260045ffd5b6372a84ce560e11b5f5260045ffd5b6343d3f5bf60e01b5f5260045ffd5b636c2bf3db60e01b5f5260045ffd5b631d3fc6bf60e21b5f5260045ffd5b909493919365ffffffffffff600283015460201c16615017428461537a565b61502f615029601686015480936136ea565b836139a9565b91828410808061524b575b156152195750831061520b5761505090836139a9565b106151fc57615060905b826152ed565b94601960f81b5f523060601b60025260165260365f209360028110156134e257806150f1575050600181036150e257156137a0576150a1816150a892614d43565b3691613451565b9160608351036150d3578260206134a2940151606060408301519201519260018154910154906153bd565b632ce466bf60e01b5f5260045ffd5b6360a1ea7760e01b5f5260045ffd5b9193916001146151045750505050505f90565b61512990600860048796970154910154906001600160801b038260801c921690615261565b925f9260035f9201915b868110156151f15761515961059e6151536150a18460051b860186614d43565b86615789565b6001600160a01b0381165f9081526020859052604090205460ff16615184575b506001905b01615133565b6001600160a01b03165f9081527ff02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c0060205260409020805c156151c9575060019061517e565b9460016151d792965d61399b565b938585146151e5575f615179565b50505050505050600190565b505050505050505f90565b63046bb1e560e51b5f5260045ffd5b62f4462b60e01b5f5260045ffd5b939291505042821161523c5761506092615234575b5061505a565b90505f61522e565b6347860b9760e01b5f5260045ffd5b5061525a6018870154856139a9565b421061503a565b6001600160801b0380921602911661527981836136a2565b9181156136ac5706156134a25760010190565b6152946156a0565b61529c6156f7565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614c2d60c082613415565b906152f89082615729565b1561530357600f0190565b60090190565b60ff5f5160206159255f395f51905f525460401c161561532557565b631afcd79f60e31b5f5260045ffd5b356001600160801b0381168103612d515790565b35908115158203612d5157565b6040519190601f01601f191682016001600160401b03811183821017612d5157604052565b60166153996134a29365ffffffffffff600285015460201c1690613681565b910154906136a2565b6153ac4282615729565b156153b75760090190565b600f0190565b92939194906153cc85876157c3565b1561555f57821561555f5770014551231950b75fc4402da1732fc9bebe1983101561555f576001169061010e61540181615355565b9160883684376002600188160160888401538760898401526002840160a984015360aa830186905260ca8301527e300046524f53542d736563703235366b312d4b454343414b3235362d76316360ea8301526303430b6160e51b61010a830152812060cc820181815290600260ec84016001815360428420809318845253604270014551231950b75fc4402da1732fc9bebe19922060801c6001600160401b0360801b8260801b16179070014551231950b75fc4402da1732fc9bebe1990600160c01b9060401c090880156151f15784601b6080945f9660209870014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe19038552018684015280604084015270014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe1903606082015282805260015afa505f51915f5260205260018060a01b0360405f20161490565b5050505050505f90565b6155716138dd565b50600281015460058201546040519290916155b1916004916001600160a01b031661559b866133fa565b6155a482613617565b8652602086015201613948565b6040830152606082015290565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615635579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156132bc575f516001600160a01b0381161561562b57905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156134e25780615652575050565b600181036156695763f645eedf60e01b5f5260045ffd5b60028103615684575063fce698f760e01b5f5260045260245ffd5b60031461568e5750565b6335e2f38360e21b5f5260045260245ffd5b6156a8614283565b80519081156156b8576020012090565b50505f5160206158a55f395f51905f525480156156d25790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6156ff614350565b805190811561570f576020012090565b50505f5160206159455f395f51905f525480156156d25790565b906014600e83015492015480831461577a57818184109311918215911115918190615773575b15615764578261575e57505090565b14919050565b634c38ae9560e11b5f5260045ffd5b508161574f565b63f26224af60e01b5f5260045ffd5b81519190604183036157b9576157b29250602082015190606060408401519301515f1a906155be565b9192909190565b50505f9160029190565b6401000003d01990600790829081818009900908906401000003d0199080091490565b9061580a57508051156157fb57602081519101fd5b63d6bda27560e01b5f5260045ffd5b8151158061583b575b61581b575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561581356fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"1553:47831:165:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;7983:34:30;7979:146;;-1:-1:-1;1553:47831:165;;;;;;;;1052:13:60;1553:47831:165;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;8085:29:30;;1553:47831:165;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;1553:47831:165;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610091575b50361561001a575f80fd5b610022613a5a565b5f5160206158e55f395f51905f5254600181015415610082576001600160801b0334161561007357335f908152601a9190910160205260409020541561006457005b63821a62f560e01b5f5260045ffd5b63a1a7c6eb60e01b5f5260045ffd5b63580683f360e01b5f5260045ffd5b5f905f3560e01c9081627a32e714613300575080630b9737ce146132cd5780630c18d277146132025780630d91bf2a1461303457806311bec80d14613001578063188509e914612fd357806328e24b3d14612fa55780633644e51514612f8a5780633683c4d214612ecd5780633bd109fa14612e7e5780633d43b41814612e2a5780633f4ba83a14612daa5780634429e24b14612d8e5780634f1ef28614612b7a57806352d1902d14612b1357806353f7fd48146122f05780635c975abb146122c15780636c2eb35014611d52578063715018a614611ce957806371a8cf2d14611cbb5780637ecebe0014611c6357806382bdeaad14611b4b5780638456cb5914611ad857806384b0196e146119b057806384d22a4f1461195257806388f50cf0146119195780638b1edf1e146118ba5780638c4ace6a1461175a5780638da5cb5b146117255780638f381dbe146116df5780639067088e1461169657806396a2ddfa146116685780639eb939a814611611578063a5d53a4414611591578063ad2b3d9a14611575578063ad3cb1cc1461152c578063b24fcac014611096578063baaf020114610f99578063c13911e814610f55578063c2eb812f14610bce578063ca1e781914610b7e578063cacf66ab14610b46578063d456fd5114610b10578063e3a6684f14610ad1578063e6fabc0914610a98578063ed612f8c14610a60578063edc8722514610a0b578063ee32004f14610825578063f0fd702a146103cd578063f1ef31ec1461039f578063f2fde38b14610372578063f4f20ac0146103395763facd743b0361000f5734610336576020366003190112610336576102f8613356565b60036103135f5160206158e55f395f51905f525442906152ed565b019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346103365780600319360112610336575f5160206158e55f395f51905f5254600701546040516001600160a01b039091168152602090f35b50346103365760203660031901126103365761039c61038f613356565b610397613a27565b6139b6565b80f35b50346103365780600319360112610336576020601f5f5160206158e55f395f51905f52540154604051908152f35b503461033657610140366003190112610336576103e8613356565b602435906044356001600160401b0381116108215761040b9036906004016134a5565b90916064359060843560ff8116810361081d5760e4359060ff8216820361081957610434613a5a565b87491561080a575f5160206158e55f395f51905f5254946001860154156107fb576019860196888a528760205260ff60408b20541660038110156107e7576107d857895b80496107ca578083036107b35750895b82811061076c57508542116107585760405160208101906001600160fb1b038411610754576104d360208261059e956105a79760051b8091873781010301601f198101835282613415565b5190209260018060a01b03861693848c527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408c208054906001820190556040519060208201927f375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b809784528760408401528d6060840152608083015260a08201528860c082015260c0815261056c60e082613415565b51902061057761528c565b906040519161190160f01b83526002830152602282015260c43591604260a43592206155be565b90929192615640565b6001600160a01b031681810361073f57505086906105dc60018060a01b0360068701541695601f601e820154910154906139a9565b93853b1561073b5760405163d505accf60e01b81526001600160a01b038516600482015230602482015260448101869052606481019190915260ff9190911660848201526101043560a48201526101243560c4820152818160e48183895af161071e575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482019290925291602091839190829081606481015b03925af19081156107135784916106e4575b50156106d55781835260209081526040808420805460ff19166001179055519182527f5c261a095dd5720475295dc06379921c003c22164ee6cae5cf83e76ce0a1b98591a180f35b631e4e7d0960e21b8352600483fd5b610706915060203d60201161070c575b6106fe8183613415565b8101906135e7565b5f61068d565b503d6106f4565b6040513d86823e3d90fd5b8161072b91949394613415565b6107375790855f610640565b8580fd5b8280fd5b637ba5ffb560e01b8952600452602452604487fd5b8b80fd5b632f4aa44f60e21b8a52600486905260248afd5b80498061077a838686613790565b3514610787838686613790565b359015610798575050600101610488565b606493508c926306f2f0e760e21b8452600452602452604452fd5b635cfa404d60e11b8b52600483905260245260448afd5b6107d39061399b565b610478565b6304c51a3360e31b8a5260048afd5b634e487b7160e01b8b52602160045260248bfd5b63580683f360e01b8952600489fd5b637bb2fa2f60e11b8852600488fd5b8780fd5b8680fd5b8380fd5b5034610336576101203660031901126103365761084061332a565b610848613340565b6084356001600160801b038116908181036109b3578460c43560ff811681036109a457610873613a5a565b610881602435600435613a81565b6006015490936001600160a01b0390911691823b15610821576108c98480926040518093819263d505accf60e01b8352610104359060e4359060a4358a30336004890161359d565b038183885af16109f6575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156109eb5786916109cc575b50156109bd576001600160a01b03908116939081166109b7575033915b833b156109b357604051635fd142bb60e11b81526001600160a01b03938416600482015292166024830152604482018490526064820152828160848183865af180156109a85761098f575b602082604051908152f35b61099a838092613415565b6109a45781610984565b5080fd5b6040513d85823e3d90fd5b8480fd5b91610939565b631e4e7d0960e21b8552600485fd5b6109e5915060203d60201161070c576106fe8183613415565b5f61091c565b6040513d88823e3d90fd5b81610a0091613415565b61073b57825f6108d4565b50346103365780600319360112610336576020610a585f5160206158e55f395f51905f525460086004610a3e42846152ed565b0154910154906001600160801b038260801c921690615261565b604051908152f35b503461033657806003193601126103365760206004610a8e5f5160206158e55f395f51905f525442906152ed565b0154604051908152f35b50346103365780600319360112610336575f5160206158e55f395f51905f5254600501546040516001600160a01b039091168152602090f35b5034610336578060031936011261033657604060085f5160206158e55f395f51905f525401548151906001600160801b038116825260801c6020820152f35b5034610336578060031936011261033657602065ffffffffffff60045f5160206158e55f395f51905f5254015416604051908152f35b5034610336578060031936011261033657602065ffffffffffff60025f5160206158e55f395f51905f52540154821c16604051908152f35b5034610336578060031936011261033657610bca610bb66004610bb05f5160206158e55f395f51905f525442906152ed565b01613948565b60405191829160208352602083019061351a565b0390f35b5034610336578060031936011261033657604051610beb816133de565b610bf3613876565b8152604051610c01816133c3565b5f8152602081015f90526020820152610c18613876565b6040820152610c25613915565b6060820152604051610c36816133c3565b5f80825260208201526080820152610c4c613876565b60a08201528160c08201528160e0820152816101008201528161012082015261014001525f5160206158e55f395f51905f5254610c87613915565b50610c9460098201615569565b90610ca1600f8201615569565b60088201549260405193610cb4856133fa565b6001600160801b038116855260801c602085015260408401526060830152601b81015490601c810154601d82015461ffff16601e83015490601f8401549260405195610cff876133de565b604051610d0b81613394565b60018701548152600287015463ffffffff8116602083015260201c65ffffffffffff166040820152875260405197610d42896133c3565b60038701548952600487015465ffffffffffff1660208a01526020880198895260405190610d6f82613394565b60058801546001600160a01b039081168352600689015481166020840152600789015416604080840191909152890191825260608901908152610db4601589016137c8565b9760808a01988952601601610dc890613894565b9160a08a0192835260c08a0193845260e08a019485526101008a019586526101208a019687526101408a019788526040519a8b9a60208c5251805160208d0152602081015163ffffffff1660408d01526040015165ffffffffffff1660608c015251805160808c01526020015165ffffffffffff1660a08b015251600160a01b6001900381511660c08b0152600160a01b6001900360208201511660e08b0152600160a01b600190039060400151166101008a0152516101208901610260905280516001600160801b03166102808a015260208101516001600160801b03166102a08a015260408101516102c08a01608090526103008a01610ec991613556565b90606001519061027f198a8203016102e08b0152610ee691613556565b965180516001600160401b03166101408a0152602001516001600160801b031661016089015251805161018089015260208101516101a0890152604001516101c0880152516101e0870152516102008601525161ffff1661022085015251610240840152516102608301520390f35b50346103365760203660031901126103365760ff604060209260195f5160206158e55f395f51905f52540160043582528452205416610f9760405180926134d5565bf35b5034610336576020366003190112610336576004356001600160401b0381116109a457610fca9036906004016134a5565b905f5160206158e55f395f51905f525490610fe483613725565b91610ff26040519384613415565b838352610ffe84613725565b602084019490601f1901368637601a869201915b81811061105d57868587604051928392602084019060208552518091526040840192915b818110611044575050500390f35b8251845285945060209384019390920191600101611036565b8061107361106e6001938588613790565b6137f6565b828060a01b03165f528360205260405f205461108f82886137b4565b5201611012565b5034610336576060366003190112610336576001600160401b036004351161033657610100600435360360031901126103365760026024351015610336576044356001600160401b0381116109a4576110f39036906004016134a5565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61151d5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206158e55f395f51905f52549060018201541561150e578154156114b2575b600382015460446004350135036114a35765ffffffffffff60048301541665ffffffffffff6111926024600435016138ca565b1610611495576111a760043560040183614492565b926111bc60a460043501600435600401614947565b808096925060051b0460201485151715611481576111dc8560051b615355565b8695865b81881061134c5750611312965060051b9020906112026004356004018661499e565b61121160043560040187614d75565b906112206024600435016138ca565b9361122f6064600435016138bc565b9360405194602086019660043560040135885265ffffffffffff60d01b9060d01b16604087015260446004350135604687015260ff60f81b9060f81b1660668601526067850152608784015260a783015260c782015260c7815261129460e782613415565b5190209283600382015565ffffffffffff6112b36024600435016138ca565b1665ffffffffffff196004830154161760048201557f7ebe42360bcb182fe0a88148b081e4557c89d09aa6af8307635ac2f83e2aaa656020604051868152a165ffffffffffff6113076024600435016138ca565b169360243591614ff8565b1561133d57807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b63729d0f6b60e01b8152600490fd5b61136060a460043501600435600401614947565b89101561146d578860061b8101358a526019880160205260ff60408b20541660038110156107e75760010361145e576001916020916114238b8b8e868360061b860101926113ad8461497c565b1561143f5760061b85013590525060198c01855260408e20805460ff19166002179055601c8c0180546113df9061399b565b90555b8c7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c98661140e8461497c565b1515926040519060061b8701358152a261497c565b908b60061b01358c52825360218b2081860152019701966111e0565b60409260199160061b87013583520187522060ff1981541690556113e2565b636e83084760e11b8a5260048afd5b634e487b7160e01b8a52603260045260248afd5b634e487b7160e01b86526011600452602486fd5b620725b160ea1b8452600484fd5b63164b6fc360e01b8452600484fd5b6114cf6114c36064600435016138bc565b600435600401356143fd565b156114ff5765ffffffffffff6114e96024600435016138ca565b16421161115f57631ad8809560e31b8452600484fd5b637b8cb35960e01b8452600484fd5b63580683f360e01b8452600484fd5b633ee5aeb560e01b8352600483fd5b503461033657806003193601126103365750610bca60405161154f604082613415565b60058152640352e302e360dc1b60208201526040519182916020835260208301906134f6565b5034610336578060031936011261033657602060405160018152f35b50346103365780600319360112610336575f5160206158e55f395f51905f52546001600160a01b03906002906115c89042906152ed565b0154166040519182915f19813b0164ffffffffff16916021830191601f8501903c80825201906040820191826040526020835261160c603f199260608301906134f6565b030190f35b503461033657806003193601126103365761162a613876565b50606061164760165f5160206158e55f395f51905f525401613894565b610f9760405180926040809180518452602081015160208501520151910152565b50346103365780600319360112610336576020601b5f5160206158e55f395f51905f52540154604051908152f35b5034610336576020366003190112610336576116b0613356565b601a5f5160206158e55f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b503461033657602036600319011261033657600435906001600160401b03821161033657602061171b61171536600486016134a5565b9061380a565b6040519015158152f35b50346103365780600319360112610336575f5160206158655f395f51905f52546040516001600160a01b039091168152602090f35b50346103365760a03660031901126103365760043560443560ff8116810361073b57611784613a5a565b8249156118ab575f5160206158e55f395f51905f525460018101541561150e5760198101918385528260205260ff604086205416600381101561189757611888576006820154601e9092015485926001600160a01b031691823b156108215760405163d505accf60e01b815233600482015230602480830191909152604482018490523560648083019190915260ff92909216608480830191909152913560a4820152903560c48201528390818160e48183885af1611873575b50506040516323b872dd60e01b815233600482015230602482015260448101919091529160209183918290816064810161067b565b8161187d91613415565b61073b57825f61183e565b6304c51a3360e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b637bb2fa2f60e11b8352600483fd5b50346103365780600319360112610336575f5160206158e55f395f51905f52546001810190815461190a576002015463ffffffff16409081156118fb575580f35b63f7bac7b560e01b8352600483fd5b6309476b0360e41b8352600483fd5b50346103365780600319360112610336575f5160206158e55f395f51905f5254600601546040516001600160a01b039091168152602090f35b503461033657806003193601126103365761196b6135ff565b50604061198860155f5160206158e55f395f51905f5254016137c8565b610f97825180926001600160801b03602080926001600160401b038151168552015116910152565b50346103365780600319360112610336575f5160206158a55f395f51905f52541580611ac2575b15611a8557611a29906119e8614283565b906119f1614350565b906020611a3760405193611a058386613415565b8385525f368137604051968796600f60f81b885260e08589015260e08801906134f6565b9086820360408801526134f6565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611a6e57505050500390f35b835185528695509381019392810192600101611a5f565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206159455f395f51905f5254156119d7565b5034610336578060031936011261033657611af1613a27565b611af9613a5a565b600160ff195f5160206159055f395f51905f525416175f5160206159055f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610336576020366003190112610336576004356001600160401b0381116109a457611b7c9036906004016134a5565b905f5160206158e55f395f51905f525490611b9683613725565b91611ba46040519384613415565b838352611bb084613725565b602084019490601f19013686376019869201915b818110611c1957868587604051928392602084019060208552518091526040840192915b818110611bf6575050500390f35b9193509160208082611c0b60019488516134d5565b019401910191849392611be8565b611c24818386613790565b3587528260205260ff604088205416611c3d82876137b4565b6003821015611c4f5752600101611bc4565b634e487b7160e01b89526021600452602489fd5b5034610336576020366003190112610336576020906040906001600160a01b03611c8b613356565b1681527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0083522054604051908152f35b5034610336578060031936011261033657602060035f5160206158e55f395f51905f52540154604051908152f35b5034610336578060031936011261033657611d02613a27565b5f5160206158655f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610336578060031936011261033657611d6b613a27565b5f5160206159255f395f51905f525460ff8160401c169081156122ac575b5061229d575f5160206159255f395f51905f52805468ffffffffffffffffff1916680100000000000000051790555f5160206158655f395f51905f5254611de3906001600160a01b0316611ddb615309565b610397615309565b611deb613635565b90611df4613662565b90611dfd615309565b611e05615309565b82516001600160401b0381116121a057611e2c5f5160206158455f395f51905f525461424b565b601f8111612239575b506020601f82116001146121bf578293948293926121b4575b50508160011b915f199060031b1c1916175f5160206158455f395f51905f52555b81516001600160401b0381116121a057611e965f5160206158855f395f51905f525461424b565b601f8111612133575b50602092601f82116001146120ba579282938293926120af575b50508160011b915f199060031b1c1916175f5160206158855f395f51905f52555b805f5160206158a55f395f51905f5255805f5160206159455f395f51905f52555f5160206158e55f395f51905f5254611f11613fef565b80516001830155600282019063ffffffff60208201511669ffffffffffff000000006040845493015160201b169169ffffffffffffffffffff191617179055816020604051611f5f816133c3565b82815201528160038201556004810165ffffffffffff19815416905561ffff6004611f8a42846152ed565b01541661ffff601d8301911661ffff198254161790556004602060018060a01b036006840154166040519283809263313ce56760e01b82525afa80156109a857611fdb918491612080575b506136d9565b90816103e8026103e88104830361206c57601e820155816101f402916101f483040361205857601f015560ff60401b195f5160206159255f395f51905f5254165f5160206159255f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160058152a180f35b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526011600452602484fd5b6120a2915060203d6020116120a8575b61209a8183613415565b8101906136c0565b5f611fd5565b503d612090565b015190505f80611eb9565b601f198216935f5160206158855f395f51905f52845280842091845b86811061211b5750836001959610612103575b505050811b015f5160206158855f395f51905f5255611eda565b01515f1960f88460031b161c191690555f80806120e9565b919260206001819286850151815501940192016120d6565b81811115611e9f575f5160206158855f395f51905f528352612192907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f840160051c9060208510612198575b601f82910160051c03910161406c565b5f611e9f565b859150612182565b634e487b7160e01b82526041600452602482fd5b015190505f80611e4e565b5f5160206158455f395f51905f52835280832090601f198316845b81811061222157509583600195969710612209575b505050811b015f5160206158455f395f51905f5255611e6f565b01515f1960f88460031b161c191690555f80806121ef565b9192602060018192868b0151815501940192016121da565b81811115611e35575f5160206158455f395f51905f528352612297907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f840160051c906020851061219857601f82910160051c03910161406c565b5f611e35565b63f92ee8a960e01b8152600490fd5b600591506001600160401b031610155f611d89565b5034610336578060031936011261033657602060ff5f5160206159055f395f51905f5254166040519015158152f35b5034610336576101603660031901126103365761230b613356565b906024356001600160a01b038116908190036109a45761232961332a565b92612332613340565b9360a4359060843560c43560403660e319011261081d5761012435976001600160401b038911610819573660238a011215610819578860040135916001600160401b038311612b0f57366024848c010111612b0f57610144356001600160401b038111612b0b576123a79036906004016134a5565b9690945f5160206159255f395f51905f5254986001600160401b0360ff8b60401c16159a1680159081612b03575b6001149081612af9575b159081612af0575b50612ae157612429908a60016001600160401b03195f5160206159255f395f51905f525416175f5160206159255f395f51905f5255612ab1575b611ddb615309565b612431615309565b612439613635565b612441613662565b9061244a615309565b612452615309565b8051906001600160401b038211612a9d578d829161247d5f5160206158455f395f51905f525461424b565b601f8111612a39575b50602091601f84116001146129bd57926129b2575b50508160011b915f199060031b1c1916175f5160206158455f395f51905f52555b8051906001600160401b03821161299e578c82916124e75f5160206158855f395f51905f525461424b565b601f811161293a575b50602091601f84116001146128be57926128b3575b50508160011b915f199060031b1c1916175f5160206158855f395f51905f52555b8a5f5160206158a55f395f51905f52558a5f5160206159455f395f51905f525561254e615309565b612556615309565b42156128a4578115612895578181111561288657600a6125768383613681565b048310156128775791600493916020938c60409c8d9182516125988482613415565b601781528881017f726f757465722e73746f726167652e526f75746572563100000000000000000081526125ca613a27565b5f19915190200181528760ff199120169a8b5f5160206158e55f395f51905f52557f059eb9adf6e95b839d818142ed5bd5e498b6d95138e65c91525e93cc0f0339fc888d8551908152a161261c613fef565b8c6001825191015560028d019063ffffffff8a8201511669ffffffffffff000000008684549301518c1b169169ffffffffffffffffffff19161717905582519061266582613394565b8282526001600160a01b039081168983018190529781169390910183905260058c018054919092166001600160a01b03199182161790915560068b01805482168717905560078b018054909116909117905570030000000000000000000000000000000260088a01556126d66135ff565b506509184e72a000858d516126ea816133c3565b639502f900815201526015890180546001600160c01b0319166d09184e72a000000000009502f9001790558b5183908d9061272481613394565b8381528781018590520152601689015560178801556018870155601d8601805461ffff191661ffff8916179055885163313ce56760e01b815292839182905afa90811561286d579061277c91899161208057506136d9565b806103e8026103e88104820361285957601e850155806101f402906101f4820403612845576127e46127da6127eb9798999a600993601f8801558a51946127c2866133c3565b60e43586526101043560208701526024369201613451565b934296369161373c565b9301614087565b6127f3575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f5160206159255f395f51905f5254165f5160206159255f395f51905f52555160018152a180f35b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526011600452602489fd5b87513d8a823e3d90fd5b63145e348f60e01b8b5260048bfd5b6353b2bbed60e01b8b5260048bfd5b63f7ba6bdb60e01b8b5260048bfd5b63b7d0949760e01b8b5260048bfd5b015190505f80612505565b5f5160206158855f395f51905f5281528281209350601f198516905b818110612922575090846001959493921061290a575b505050811b015f5160206158855f395f51905f5255612526565b01515f1960f88460031b161c191690555f80806128f0565b929360206001819287860151815501950193016128da565b838111156124f0575f5160206158855f395f51905f528352612998907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f860160051c906020871061219857601f82910160051c03910161406c565b5f6124f0565b634e487b7160e01b8d52604160045260248dfd5b015190505f8061249b565b5f5160206158455f395f51905f5281528281209350601f198516905b818110612a215750908460019594939210612a09575b505050811b015f5160206158455f395f51905f52556124bc565b01515f1960f88460031b161c191690555f80806129ef565b929360206001819287860151815501950193016129d9565b83811115612486575f5160206158455f395f51905f528352612a97907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f860160051c906020871061219857601f82910160051c03910161406c565b5f612486565b634e487b7160e01b8e52604160045260248efd5b600160401b60ff60401b195f5160206159255f395f51905f525416175f5160206159255f395f51905f5255612421565b63f92ee8a960e01b8c5260048cfd5b9050155f6123e7565b303b1591506123df565b8b91506123d5565b8980fd5b8880fd5b50346103365780600319360112610336577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b6b5760206040515f5160206158c55f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261033657612b8f613356565b906024356001600160401b0381116109a457612baf903690600401613487565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612d6c575b50612d5d57612bf1613a27565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596612d25575b50612c3657634c9c8ce360e01b84526004839052602484fd5b9091845f5160206158c55f395f51905f528103612d135750813b15612d01575f5160206158c55f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015612ce75780836020612cdb95519101845af43d15612cdf573d91612cbf83613436565b92612ccd6040519485613415565b83523d85602085013e6157e6565b5080f35b6060916157e6565b50505034612cf25780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011612d55575b81612d4160209383613415565b81010312612d515751945f612c1d565b5f80fd5b3d9150612d34565b63703e46dd60e11b8252600482fd5b5f5160206158c55f395f51905f52546001600160a01b0316141590505f612be4565b5034610336578060031936011261033657602060405160028152f35b5034610336578060031936011261033657612dc3613a27565b5f5160206159055f395f51905f525460ff811615612e1b5760ff19165f5160206159055f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b503461033657602036600319011261033657612e44613356565b612e4c613a27565b5f5160206158e55f395f51905f525460050180546001600160a01b0319166001600160a01b0390921691909117905580f35b5034610336578060031936011261033657612e976135ff565b506040612ebb612eb65f5160206158e55f395f51905f525442906152ed565b613617565b60208251918051835201516020820152f35b503461033657606036600319011261033657612ee761332a565b612eef613a5a565b612efd602435600435613ef7565b506001600160a01b0390811691908116612f855750335b5f5160206158e55f395f51905f5254600501546001600160a01b0316823b1561082157604051635fd142bb60e11b81526001600160a01b03909216600483015260248201526001604482015260648101839052828160848183865af180156109a85761098f57602082604051908152f35b612f14565b50346103365780600319360112610336576020610a5861528c565b5034610336578060031936011261033657602060015f5160206158e55f395f51905f52540154604051908152f35b50346103365780600319360112610336576020601e5f5160206158e55f395f51905f52540154604051908152f35b50346103365760203660031901126103365761301b613a27565b600435601e5f5160206158e55f395f51905f5254015580f35b5034610336576101003660031901126103365761304f61332a565b6064356001600160801b03811690818103610821578360a43560ff811681036109a45761307a613a5a565b613088602435600435613ef7565b6006015490936001600160a01b0390911691823b15610821576130cf8480926040518093819263d505accf60e01b835260e4359060c435906084358a30336004890161359d565b038183885af16131ed575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156131e25785916131c3575b50156131b4576001600160a01b03908116929081166131ae575033905b5f5160206158e55f395f51905f5254600501546001600160a01b0316833b156109b357604051635fd142bb60e11b81526001600160a01b0390931660048401526024830152600160448301526064820152828160848183865af180156109a85761098f57602082604051908152f35b9061313f565b631e4e7d0960e21b8452600484fd5b6131dc915060203d60201161070c576106fe8183613415565b5f613122565b6040513d87823e3d90fd5b816131f791613415565b61073b57825f6130da565b34612d51576080366003190112612d515761321b61332a565b613223613340565b9061322c613a5a565b61323a602435600435613a81565b506001600160a01b03908116919081166132c7575033915b813b15612d5157604051635fd142bb60e11b81526001600160a01b039384166004820152921660248301525f60448301819052606483018190528260848183855af19182156132bc576020926132ac575b50604051908152f35b5f6132b691613415565b5f6132a3565b6040513d5f823e3d90fd5b91613252565b34612d51576020366003190112612d51576132e6613a27565b600435601f5f5160206158e55f395f51905f525401555f80f35b34612d51575f366003190112612d5157602090601c5f5160206158e55f395f51905f525401548152f35b604435906001600160a01b0382168203612d5157565b606435906001600160a01b0382168203612d5157565b600435906001600160a01b0382168203612d5157565b35906001600160a01b0382168203612d5157565b35906001600160801b0382168203612d5157565b606081019081106001600160401b038211176133af57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176133af57604052565b61016081019081106001600160401b038211176133af57604052565b608081019081106001600160401b038211176133af57604052565b90601f801991011681019081106001600160401b038211176133af57604052565b6001600160401b0381116133af57601f01601f191660200190565b92919261345d82613436565b9161346b6040519384613415565b829481845281830111612d51578281602093845f960137010152565b9080601f83011215612d51578160206134a293359101613451565b90565b9181601f84011215612d51578235916001600160401b038311612d51576020808501948460051b010111612d5157565b9060038210156134e25752565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106135375750505090565b82516001600160a01b031684526020938401939092019160010161352a565b9060208251805183520151602082015260018060a01b03602083015116604082015260806060613594604085015160a08386015260a085019061351a565b93015191015290565b936001600160801b0360c096929998979460ff9460e088019b60018060a01b0316885260018060a01b03166020880152166040860152606085015216608083015260a08201520152565b90816020910312612d5157518015158103612d515790565b6040519061360c826133c3565b5f6020838281520152565b90604051613624816133c3565b602060018294805484520154910152565b60405190613644604083613415565b600f82526e2b30b9309722aa24102937baba32b960891b6020830152565b60405190613671604083613415565b60018252603160f81b6020830152565b9190820391821161368e57565b634e487b7160e01b5f52601160045260245ffd5b81156136ac570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312612d51575160ff81168103612d515790565b60ff16604d811161368e57600a0a90565b8181029291811591840414171561368e57565b9190826040910312612d5157604051613715816133c3565b6020808294803584520135910152565b6001600160401b0381116133af5760051b60200190565b92919061374881613725565b936137566040519586613415565b602085838152019160051b8101928311612d5157905b82821061377857505050565b602080916137858461336c565b81520191019061376c565b91908110156137a05760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156137a05760209160051b010190565b906040516137d5816133c3565b91546001600160401b038116835260401c6001600160801b03166020830152565b356001600160a01b0381168103612d515790565b6138235f5160206158e55f395f51905f525442906152ed565b600301905f5b8381106138395750505050600190565b61384761106e828685613790565b6001600160a01b03165f9081526020849052604090205460ff161561386e57600101613829565b505050505f90565b6040519061388382613394565b5f6040838281528260208201520152565b906040516138a181613394565b60406002829480548452600181015460208501520154910152565b3560ff81168103612d515790565b3565ffffffffffff81168103612d515790565b604051906138ea826133fa565b5f6060836040516138fa816133c3565b83815283602082015281528260208201528160408201520152565b60405190613922826133fa565b815f81525f60208201526139346138dd565b604082015260606139436138dd565b910152565b90604051918281549182825260208201905f5260205f20925f5b81811061397957505061397792500383613415565b565b84546001600160a01b0316835260019485019487945060209093019201613962565b5f19811461368e5760010190565b9190820180921161368e57565b6001600160a01b03168015613a14575f5160206158655f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f5160206158655f395f51905f52546001600160a01b03163303613a4757565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5160206159055f395f51905f525416613a7257565b63d93c066560e01b5f5260045ffd5b9190915f5160206158e55f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134e257600203613ee857815f5260205260405f206040516103008101908082106001600160401b03831117612d51576102fb916040527f6080806040526102e990816100128239f3fe60806040526004361061029f575f81527f3560e01c806336a52a18146100bb57806342129d00146100b65780635ce6c32760208201527f146100b1578063701da98e146100ac578063704ed542146100a75780637a8e0c60408201527fdd146100a257806391d5a64c1461009d5780639ce110d714610098578063affe60608201527fd0e014610093578063c60496921461008e5763e43f34330361029f5761028a5660808201527f5b610260565b610243565b61021b565b610205565b6101d2565b6101b3565b6160a08201527f0178565b610156565b610119565b346100e7575f3660031901126100e757600260c08201527f5460405160089190911c6001600160a01b03168152602090f35b5f80fd5b918160e08201527f601f840112156100e75782359167ffffffffffffffff83116100e757602083816101008201527f8601950101116100e757565b60403660031901126100e75760043567ffffffff6101208201527fffffffff81116100e7576101459036906004016100eb565b50506024358015156101408201527f1461029f575f80fd5b346100e7575f3660031901126100e757602060ff6002546101608201527f166040519015158152f35b346100e7575f3660031901126100e75760205f54606101808201527f4051908152f35b600435906fffffffffffffffffffffffffffffffff821682036101a08201527f6100e757565b346100e75760203660031901126100e7576101cc610194565b506101c08201527f61029f565b60403660031901126100e75760243567ffffffffffffffff8111616101e08201527ee7576101fe9036906004016100eb565b505061029f565b346100e7576020366102008201527f60031901121561029f575f80fd5b346100e7575f3660031901126100e75760036102208201527f546040516001600160a01b039091168152602090f35b346100e7575f366003196102408201527f01126100e7576020600154604051908152f35b346100e75760a03660031901126102608201527f6100e757610279610194565b5060443560ff81161461029f575f80fd5b3461006102808201527fe7575f3660031901121561029f575f80fd5b63e6fabc0960e01b5f5260205f606102a08201523060481b685afa156100e7575f806204817360e81b01176102c08201527f8051368280378136915af43d5f803e156102e5573d5ff35b3d5ffd00000000006102e08201525ff5908115612d515760018060a01b0382165f52601a84016020528060405f2055601b8401613ead815461399b565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a29190565b630e2637d160e01b5f5260045ffd5b9190915f5160206158e55f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134e257600203613ee857815f5260205260405f2060405160608101908082106001600160401b03831117612d5157605a916040527f3d605080600a3d3981f3608060405263e6fabc0960e01b5f5260205f6004817381523060601b6b5afa15604c575f80805136821760208201527f80378136915af43d5f803e156048573d5ff35b3d5ffd5b5f80fd00000000000060408201525ff5908115612d515760018060a01b0382165f52601a84016020528060405f2055601b8401613ead815461399b565b613ff7613876565b5063ffffffff43116140545765ffffffffffff421161403c5760405161401c81613394565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6306dfcc6560e41b5f5260306004524260245260445ffd5b6306dfcc6560e41b5f5260206004524360245260445ffd5b5f5b82811061407a57505050565b5f8282015560010161406e565b9291908051906020810191825170014551231950b75fc4402da1732fc9bebe198210918261423a575b50501561422b5751845551600184015580518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff091821561421e57526002830180546001600160a01b0319166001600160a01b039092169190911790555f5b60048301805482101561414f575f90815260208082208301546001600160a01b0316825260038501905260409020805460ff19169055600101614111565b5050925f5b8451811015614198576001906001600160a01b0361417282886137b4565b5116828060a01b03165f526003840160205260405f208260ff1982541617905501614154565b5092600482018151916001600160401b0383116133af57600160401b83116133af576020908254848455808510614203575b5001905f5260205f205f5b8381106141e6575050505060050155565b82516001600160a01b0316818301556020909201916001016141d5565b61421890845f528580855f200191039061406c565b5f6141ca565b63301164255f526004601cfd5b63375f0aab60e11b5f5260045ffd5b61424492506157c3565b5f806140b0565b90600182811c92168015614279575b602083101461426557565b634e487b7160e01b5f52602260045260245ffd5b91607f169161425a565b604051905f825f5160206158455f395f51905f5254916142a28361424b565b808352926001811690811561433157506001146142c6575b61397792500383613415565b505f5160206158455f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310614315575050906020613977928201016142ba565b60209193508060019154838589010152019101909184926142fd565b6020925061397794915060ff191682840152151560051b8201016142ba565b604051905f825f5160206158855f395f51905f52549161436f8361424b565b808352926001811690811561433157506001146143925761397792500383613415565b505f5160206158855f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b8183106143e1575050906020613977928201016142ba565b60209193508060019154838589010152019101909184926143c9565b435f198101939290841161368e5760ff1643811061444d57505f925b83811015614429575b505f925050565b804082810361443b5750600193505050565b15614448575f1901614419565b614422565b6144579043613681565b92614419565b903590601e1981360301821215612d5157018035906001600160401b038211612d5157602001918160051b36038313612d5157565b906080810160016144a3828461445d565b905011614938576144b4818361445d565b905015614911576144c49161445d565b156137a057803590603e1981360301821215612d515701916144e6838061445d565b9190928260051b938385046020148415171561368e5761450885969495615355565b925f945f97601a60fe19853603019501965b888a10156148c9578960051b85013586811215612d5157850161453c816137f6565b6001600160a01b03165f90815260208a9052604090205415610064575f608082016001600160801b0361456e82615334565b161515806148b6575b6148a5575b6001600160a01b0361458d846137f6565b604051630427a21d60e11b81526020600482015294911691610124850191906001600160801b039061460c906001600160a01b036145ca8561336c565b166024890152602084013560448901526145e660408501615348565b151560648901526001600160a01b036146016060860161336c565b166084890152613380565b1660a486015261461e60a08201615348565b151560c486015236819003601e190160c082013581811215612d51578201602081359101936001600160401b038211612d51576060820236038513612d5157819061010060e48a015252610144870193905f905b80821061485b5750505060e082013590811215612d515701803560208201926001600160401b038211612d51578160051b908136038513612d515791879594936023198785030161010488015281845260208085019385010194935f9160fe19813603015b84841061474e5750505050505050602093916001600160801b03848093039316905af19081156132bc575f9161471c575b50816020916001938a01520199019861451a565b90506020813d8211614746575b8161473660209383613415565b81010312612d5157516001614708565b3d9150614729565b919395979850919395601f19848203018752873582811215612d51578301602081013582526001600160a01b036147876040830161336c565b1660208301526060810135603e193683900301811215612d51578101602081013591906040016001600160401b038311612d51578236038113612d5157829060e060408601528160e08601526101008501375f61010083850101526001600160801b036147f660808301613380565b16606084015260a0810135608084015260c081013563ffffffff60e01b8116809103612d51578360209361483860e086956101009560a060019a015201615348565b151560c0830152601f80199101160101990197019401918a9897969593916146d7565b90919460608060019288358152838060a01b0361487a60208b0161336c565b1660208201526001600160801b0361489460408b01613380565b166040820152019601920190614672565b90506148b081615334565b9061457c565b506148c360a0840161497c565b15614577565b5094935095509550506020925020910135907fd04cd9af813f6f0b56e9411a6ee6a84eb5ac35a96f0c33d2e3a07d65baa8f4186020604051848152a15f5260205260405f2090565b5050507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6306d6c38360e01b5f5260045ffd5b903590601e1981360301821215612d5157018035906001600160401b038211612d5157602001918160061b36038313612d5157565b358015158103612d515790565b903590605e1981360301821215612d51570190565b60c0820160016149ae828561445d565b905011614d34576149bf818461445d565b905015614911576149d0908361445d565b156137a057803590607e1981360301821215612d51570191606083019060206149f8836138ca565b91019065ffffffffffff80614a0c846138ca565b1691161015614d2557614a1e826138ca565b65ffffffffffff80600286015460201c16911610614d1657614a6465ffffffffffff614a5d614a5782614a50876138ca565b168761537a565b936138ca565b168461537a565b1115614d07576007820154600690920180548435946001600160a01b0394851694604082019391925f91602091166044614aaa83614aa28989614989565b01358b6139a9565b604051948593849263095ea7b360e01b84528c600485015260248401525af19081156132bc575f91614ce8575b5015614cd9575460405163394f179b60e11b81526001600160a01b03909116600482015260248101959095526020818101356044870152856064815f885af19485156132bc575f95614ca1575b5090614b2f91614989565b91614b39826138ca565b9260405193637fbe95b560e01b85526040600486015260a48501918035601e1982360301811215612d51578101602081359101936001600160401b038211612d51578160061b36038513612d515760606044890152819052869360c485019392915f5b818110614c6957505050836020959365ffffffffffff829484895f9601356064860152614bd2604060018060a01b03920161336c565b16608485015216602483015203925af19182156132bc575f92614c33575b50614bfa906138ca565b6040519160208301938452604083015265ffffffffffff60d01b9060d01b16606082015260468152614c2d606682613415565b51902090565b9091506020813d602011614c61575b81614c4f60209383613415565b81010312612d51575190614bfa614bf0565b3d9150614c42565b919550919293604080600192838060a01b03614c848a61336c565b168152602089013560208201520196019101918895949392614b9c565b919094506020823d602011614cd1575b81614cbe60209383613415565b81010312612d5157905193614b2f614b24565b3d9150614cb1565b6367b9145160e01b5f5260045ffd5b614d01915060203d60201161070c576106fe8183613415565b5f614ad7565b6308027f7760e31b5f5260045ffd5b637bde91e760e11b5f5260045ffd5b63087a19ab60e41b5f5260045ffd5b633249ceed60e11b5f5260045ffd5b903590601e1981360301821215612d5157018035906001600160401b038211612d5157602001918136038313612d5157565b9060e081016001614d86828461445d565b905011614fe957614d97818361445d565b90501561491157614da79161445d565b156137a057803590609e1981360301821215612d5157016060810190614dcd828261445d565b905015614fda5765ffffffffffff600284015460201c1691614def8342613681565b614dfe601686015480926136a2565b936080840135946001810180911161368e578503614fcb57614e2385614e29936136ea565b906139a9565b93614e38601782015486613681565b4210614fbc57614e47906153a2565b934260058601541015614fad57614e9c906040840195614e8e614e96614e6d8988614d43565b9190614e79888a61445d565b949091614e86368c6136fd565b943691613451565b93369161373c565b92614087565b7fa1a3b42179ad30022438a1ea333b38eaf4a7329beee5e2b8111c0dcd4e08821c6020604051858152a160a082360312612d515760405193614edd856133fa565b614ee736846136fd565b8552356001600160401b038111612d5157614f059036908401613487565b602085015235906001600160401b038211612d51570136601f82011215612d5157614f3790369060208135910161373c565b91826040820152816060820152519160208351930151906040519283926020840195865260408401526060830160208351919301905f5b818110614f8b57505050815203808252614c2d9060200182613415565b82516001600160a01b0316855286955060209485019490920191600101614f6e565b6333fc8f5160e21b5f5260045ffd5b6372a84ce560e11b5f5260045ffd5b6343d3f5bf60e01b5f5260045ffd5b636c2bf3db60e01b5f5260045ffd5b631d3fc6bf60e21b5f5260045ffd5b909493919365ffffffffffff600283015460201c16615017428461537a565b61502f615029601686015480936136ea565b836139a9565b91828410808061524b575b156152195750831061520b5761505090836139a9565b106151fc57615060905b826152ed565b94601960f81b5f523060601b60025260165260365f209360028110156134e257806150f1575050600181036150e257156137a0576150a1816150a892614d43565b3691613451565b9160608351036150d3578260206134a2940151606060408301519201519260018154910154906153bd565b632ce466bf60e01b5f5260045ffd5b6360a1ea7760e01b5f5260045ffd5b9193916001146151045750505050505f90565b61512990600860048796970154910154906001600160801b038260801c921690615261565b925f9260035f9201915b868110156151f15761515961059e6151536150a18460051b860186614d43565b86615789565b6001600160a01b0381165f9081526020859052604090205460ff16615184575b506001905b01615133565b6001600160a01b03165f9081527ff02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c0060205260409020805c156151c9575060019061517e565b9460016151d792965d61399b565b938585146151e5575f615179565b50505050505050600190565b505050505050505f90565b63046bb1e560e51b5f5260045ffd5b62f4462b60e01b5f5260045ffd5b939291505042821161523c5761506092615234575b5061505a565b90505f61522e565b6347860b9760e01b5f5260045ffd5b5061525a6018870154856139a9565b421061503a565b6001600160801b0380921602911661527981836136a2565b9181156136ac5706156134a25760010190565b6152946156a0565b61529c6156f7565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614c2d60c082613415565b906152f89082615729565b1561530357600f0190565b60090190565b60ff5f5160206159255f395f51905f525460401c161561532557565b631afcd79f60e31b5f5260045ffd5b356001600160801b0381168103612d515790565b35908115158203612d5157565b6040519190601f01601f191682016001600160401b03811183821017612d5157604052565b60166153996134a29365ffffffffffff600285015460201c1690613681565b910154906136a2565b6153ac4282615729565b156153b75760090190565b600f0190565b92939194906153cc85876157c3565b1561555f57821561555f5770014551231950b75fc4402da1732fc9bebe1983101561555f576001169061010e61540181615355565b9160883684376002600188160160888401538760898401526002840160a984015360aa830186905260ca8301527e300046524f53542d736563703235366b312d4b454343414b3235362d76316360ea8301526303430b6160e51b61010a830152812060cc820181815290600260ec84016001815360428420809318845253604270014551231950b75fc4402da1732fc9bebe19922060801c6001600160401b0360801b8260801b16179070014551231950b75fc4402da1732fc9bebe1990600160c01b9060401c090880156151f15784601b6080945f9660209870014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe19038552018684015280604084015270014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe1903606082015282805260015afa505f51915f5260205260018060a01b0360405f20161490565b5050505050505f90565b6155716138dd565b50600281015460058201546040519290916155b1916004916001600160a01b031661559b866133fa565b6155a482613617565b8652602086015201613948565b6040830152606082015290565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615635579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156132bc575f516001600160a01b0381161561562b57905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156134e25780615652575050565b600181036156695763f645eedf60e01b5f5260045ffd5b60028103615684575063fce698f760e01b5f5260045260245ffd5b60031461568e5750565b6335e2f38360e21b5f5260045260245ffd5b6156a8614283565b80519081156156b8576020012090565b50505f5160206158a55f395f51905f525480156156d25790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6156ff614350565b805190811561570f576020012090565b50505f5160206159455f395f51905f525480156156d25790565b906014600e83015492015480831461577a57818184109311918215911115918190615773575b15615764578261575e57505090565b14919050565b634c38ae9560e11b5f5260045ffd5b508161574f565b63f26224af60e01b5f5260045ffd5b81519190604183036157b9576157b29250602082015190606060408401519301515f1a906155be565b9192909190565b50505f9160029190565b6401000003d01990600790829081818009900908906401000003d0199080091490565b9061580a57508051156157fb57602081519101fd5b63d6bda27560e01b5f5260045ffd5b8151158061583b575b61581b575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561581356fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101","sourceMap":"1553:47831:165:-:0;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;1944:72:37;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47831:165;49089:19;;;1553:47831;49089:38;1553:47831;;-1:-1:-1;;;;;49198:9:165;1553:47831;49226:9;1553:47831;;49286:10;-1:-1:-1;1553:47831:165;;;49314:28;;;;;1553:47831;;;;;;49314:42;1553:47831;;;;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;15176:40;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47831:165;28113:15:171;28092:37;;:::i;:::-;15176:40:165;:52;1553:47831;;;;;;-1:-1:-1;1553:47831:165;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;13300:34;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;2357:1:29;1553:47831:165;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;1553:47831:165;;;;;;;;;;;;;;;;20089:52;-1:-1:-1;;;;;;;;;;;1553:47831:165;20089:52;1553:47831;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;26053:11:165;;:16;1553:47831;;-1:-1:-1;;;;;;;;;;;1553:47831:165;26149:19;1553:47831;26149:19;;1553:47831;26149:38;1553:47831;;26242:19;;;1553:47831;;;;;;;;;;;;;;;;;;;;;26352:29;26422:27;;;;;26564:39;;;1553:47831;;26684:13;;26699:22;;;;;;26978:15;;;:28;1553:47831;;;;;27242:29;;;-1:-1:-1;;;;;2670:66:165;;;;27242:29;1553:47831;2670:66;7051:25:77;2670:66:165;7105:8:77;2670:66:165;;;;;;;;;27242:29;;1553:47831;;27242:29;;;;;;:::i;:::-;1553:47831;27232:40;;1553:47831;;;;;;;;;;;;972:64:36;1553:47831:165;;;;;;;;;;;;;;;27091:261;1553:47831;27091:261;;1553:47831;2670:66;1553:47831;;2670:66;1553:47831;2670:66;;1553:47831;2670:66;1553:47831;2670:66;;1553:47831;;2670:66;;1553:47831;;2670:66;;1553:47831;2670:66;1553:47831;2670:66;;1553:47831;;27091:261;;;1553:47831;27091:261;;:::i;:::-;1553:47831;27068:294;;3980:23:40;;:::i;:::-;3993:249:80;1553:47831:165;3993:249:80;;-1:-1:-1;;;3993:249:80;;;;;;;;;;1553:47831:165;;;3993:249:80;1553:47831:165;;3993:249:80;;7051:25:77;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47831:165;27496:20;;;2670:66;;1553:47831;;;;27674:100;1553:47831;;;;;27604:32;;;1553:47831;;27674:48;27725:49;27674:48;;;1553:47831;27725:49;;1553:47831;27674:100;;:::i;:::-;27788:77;;;;;;1553:47831;;-1:-1:-1;;;27788:77:165;;-1:-1:-1;;;;;1553:47831:165;;;27788:77;;1553:47831;27828:4;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27788:77;;;;;26679:223;-1:-1:-1;1553:47831:165;;-1:-1:-1;;;27901:57:165;;-1:-1:-1;;;;;1553:47831:165;;;;27901:57;;1553:47831;27828:4;1553:47831;;;;;;;;;;;;;;;;;;;;;;;27901:57;;;;;;;;;;;;;;26679:223;1553:47831;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;23490:19;1553:47831;;;;;;;28104:32;;;1553:47831;;;-1:-1:-1;;;1553:47831:165;;;;;27901:57;;;;1553:47831;27901:57;1553:47831;27901:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1553:47831;;;;;;;;;27788:77;;;;;;;;:::i;:::-;1553:47831;;27788:77;;;;;1553:47831;;;;27788:77;1553:47831;;;2670:66;-1:-1:-1;;;2670:66:165;;1553:47831;;;;;2670:66;;;1553:47831;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;26723:3;26769:11;;26802:14;;;;;;:::i;:::-;1553:47831;26802:34;26857:14;;;;;:::i;:::-;1553:47831;;;;;26723:3;;1553:47831;;26684:13;;1553:47831;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;26391:155;26516:19;;;:::i;:::-;26391:155;;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;35693:37:165;1553:47831;;;;35693:37;:::i;:::-;35782:32;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;35830:96;;;;;;1553:47831;;;;;;;;;;;;35830:96;;1553:47831;;;;;;;;35870:4;;35850:10;1553:47831;35830:96;;;:::i;:::-;;;;;;;;;1553:47831;-1:-1:-1;;1553:47831:165;;-1:-1:-1;;;35962:79:165;;35850:10;1553:47831;35962:79;;1553:47831;35870:4;1553:47831;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;35962:79;;;;;;;;;;;1553:47831;;;;;-1:-1:-1;;;;;1553:47831:165;;;;36157:70;1553:47831;;;;35850:10;;36157:70;;36100:238;;;;;1553:47831;;-1:-1:-1;;;36100:238:165;;-1:-1:-1;;;;;1553:47831:165;;;;36100:238;;1553:47831;;;;;;;;;;;;;;;;;;;;;;36100:238;;;;;;;;;36157:70;1553:47831;;;;;;;;36100:238;;;;;;:::i;:::-;1553:47831;;36100:238;;;1553:47831;;;;36100:238;1553:47831;;;;;;;;;36100:238;1553:47831;;;36157:70;;;;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;35962:79;;;;1553:47831;35962:79;1553:47831;35962:79;;;;;;;:::i;:::-;;;;;1553:47831;;;;;;;;;35830:96;;;;;:::i;:::-;1553:47831;;35830:96;;;;1553:47831;;;;;;;;;;;;;;16621:211;-1:-1:-1;;;;;;;;;;;1553:47831:165;16718:25;1553:47831;28092:37:171;28113:15;28092:37;;:::i;:::-;16659:38:165;1553:47831;16718:25;;1553:47831;;-1:-1:-1;;;;;1553:47831:165;;;;;16621:211;;:::i;:::-;1553:47831;;;;;;;;;;;;;;;;;;;;;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47831:165;28113:15:171;28092:37;;:::i;:::-;16235:41:165;1553:47831;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;12757:23;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;15664:25;-1:-1:-1;;;;;;;;;;;1553:47831:165;15664:25;1553:47831;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;12489:40;1553:47831;;;;;;;;;;;;;;;;;;;;;;;11899:32;-1:-1:-1;;;;;;;;;;;1553:47831:165;11899:32;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47831:165;28113:15:171;28092:37;;:::i;:::-;15974:41:165;1553:47831;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;:::i;:::-;-1:-1:-1;33433:28:171;33440:20;;;33433:28;:::i;:::-;33519:20;33512:28;33519:20;;;33512:28;:::i;:::-;10672:25:165;;;1553:47831;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47831:165;;;;;;;33557:241:171;;1553:47831:165;;33557:241:171;;1553:47831:165;;33557:241:171;;1553:47831:165;11061:33;;;1553:47831;11129:39;;;;1553:47831;11197:33;;;1553:47831;;;11274:48;;;1553:47831;11367:49;;;;1553:47831;;;;;;;;:::i;:::-;;;;;;:::i;:::-;33440:20:171;10755:19:165;;1553:47831;;;11061:33;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10810:27;;;1553:47831;;;;;;;;;;;;;;10715:712;;1553:47831;;;;;;;;;:::i;:::-;10866:20;;;1553:47831;-1:-1:-1;;;;;1553:47831:165;;;2288:3;;11367:49;1553:47831;;;;;;;;2288:3;33519:20:171;1553:47831:165;;;;;;;;2288:3;;;;10715:712;;1553:47831;;;;10715:712;;1553:47831;;;;10969:22;;;1553:47831;:::i;:::-;10715:712;1553:47831;10715:712;;1553:47831;;;11016:16;;1553:47831;;;:::i;:::-;10715:712;1553:47831;10715:712;;1553:47831;;;;10715:712;;1553:47831;;;;10715:712;;1553:47831;;;;10715:712;;1553:47831;;;;10715:712;;1553:47831;;;;10715:712;;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;17587:22;-1:-1:-1;;;;;;;;;;;1553:47831:165;17587:22;1553:47831;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1553:47831:165;;;;18824:28;18756:13;18824:28;;18751:129;18771:23;;;;;;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;18824:28;1553:47831;;;18796:3;18853:15;;;18824:28;18853:15;;;;:::i;:::-;;:::i;:::-;1553:47831;;;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;18815:54;;;;:::i;:::-;1553:47831;;18756:13;;1553:47831;;;;;;;-1:-1:-1;;1553:47831:165;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;757:66:38;3327:69:76;1737:93:38;;1948:4;757:66;3556:68:76;-1:-1:-1;;;;;;;;;;;1553:47831:165;37076:19;1948:4:38;37076:19:165;;1553:47831;37076:38;1553:47831;;;;37314:20;37310:295;;1553:47831;37718:27;;;1553:47831;;;;37754:33;1553:47831;37718:69;1553:47831;;;;37853:37;;1553:47831;;;37894:21;1553:47831;;;37894:21;;:::i;:::-;1553:47831;-1:-1:-1;1553:47831:165;;37984:28;1553:47831;;;;37984:28;;:::i;:::-;1553:47831;40935:22;;1553:47831;;40935:22;1553:47831;;;;40935:22;:::i;:::-;2366:5;;;;;;;;1553:47831;2366:5;;;;;;;41070:40;2366:5;;;41070:40;:::i;:::-;41120:18;;;41169:22;;;;;;2366:5;38907:146;2366:5;;;;1083:131:25;;1553:47831:165;38249:30;1553:47831;;;;38249:30;;:::i;:::-;38325:33;1553:47831;;;;38325:33;;:::i;:::-;1553:47831;38458:21;1553:47831;;;37894:21;38458;:::i;:::-;1553:47831;38540:13;;1553:47831;;38540:13;;:::i;:::-;1553:47831;;;19605:303:171;1553:47831:165;19605:303:171;;1553:47831:165;;;;;;;;2288:3;1553:47831;;;;;;;;;;;;;37754:33;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19605:303:171;;;;;;:::i;:::-;1553:47831:165;19582:336:171;;37718:27:165;;;;;1553:47831;;38812:21;1553:47831;;;37894:21;38812;:::i;:::-;1553:47831;2288:3;1553:47831;;37853:37;;1553:47831;;;;37853:37;;1553:47831;38849:26;1553:47831;;;;;;38849:26;1553:47831;39018:21;1553:47831;;;37894:21;39018;:::i;:::-;1553:47831;;;;38907:146;;:::i;:::-;2113:66;;;3556:68:76;757:66:38;3556:68:76;1553:47831:165;;2113:66;-1:-1:-1;;;2113:66:165;;1553:47831;;2113:66;41193:3;41255:22;40935;1553:47831;;40935:22;1553:47831;;;;41255:22;:::i;:::-;1553:47831;;;;;;;;;;;;;41320:19;;;1553:47831;;;;;;;;37718:27;1553:47831;;;;;1948:4:38;41320:79:165;1553:47831;;1948:4:38;1553:47831:165;;;41898:17;1553:47831;;;;;;;;;41478:17;;;;;:::i;:::-;;;;1553:47831;;;;;;;-1:-1:-1;41320:19:165;;;1553:47831;;;;;;;-1:-1:-1;;1553:47831:165;;;;;41601:39;;;1553:47831;;41601:41;;;:::i;:::-;1553:47831;;41474:270;41796:17;41763:51;41796:17;;;;:::i;:::-;1553:47831;;;;;;;;;;;;;41763:51;41898:17;:::i;:::-;1553:47831;;;;;;17359:159:171;;;;;;;4093:83:22;;;;1553:47831:165;41193:3;1553:47831;41154:13;;;41474:270;1553:47831;;41320:19;1553:47831;;;;;;;;41320:19;1553:47831;;;;;;;;;;41474:270;;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47831;2288:3;1553:47831;;2288:3;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;37310:295;37358:56;37400:13;;1553:47831;;37400:13;;:::i;:::-;1553:47831;;;;;37358:56;:::i;:::-;1553:47831;;;;37545:21;1553:47831;;;37545:21;;:::i;:::-;1553:47831;37527:15;:39;37310:295;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;1737:93:38;-1:-1:-1;;;1789:30:38;;1553:47831:165;1789:30:38;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2802:1;1553:47831;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;14297:77;;28092:37:171;;28113:15;;28092:37;:::i;:::-;14297:77:165;1553:47831;;;9268:329:173;1553:47831:165;;;;;9268:329:173;;;;;;;;;;;;;;;;;;;;1553:47831:165;9268:329:173;;;;1553:47831:165;9268:329:173;1553:47831:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20327:19;-1:-1:-1;;;;;;;;;;;1553:47831:165;20327:19;1553:47831;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19096:36;-1:-1:-1;;;;;;;;;;;1553:47831:165;19096:36;1553:47831;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;18349:31;-1:-1:-1;;;;;;;;;;;1553:47831:165;18349:31;:43;1553:47831;;;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;23394:11:165;;:16;1553:47831;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;23490:19;;1553:47831;23490:38;1553:47831;;23583:19;;;1553:47831;;;;;;;;;;;;;;;;;;;;;23734:32;;;1553:47831;23796:48;;;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;23858:78;;;;;1553:47831;;-1:-1:-1;;;23858:78:165;;23878:10;1553:47831;23858:78;;1553:47831;23898:4;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23858:78;;;;;1553:47831;-1:-1:-1;;1553:47831:165;;-1:-1:-1;;;23972:61:165;;23878:10;1553:47831;23972:61;;1553:47831;23898:4;1553:47831;;;;;;;;;;;;;;;;;;;;;;23972:61;1553:47831;23858:78;;;;;:::i;:::-;1553:47831;;23858:78;;;;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;22086:19;;;1553:47831;;;;;22193:26;;1553:47831;;;22183:37;;22239:25;;1553:47831;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;13029:35;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17356:25;-1:-1:-1;;;;;;;;;;;1553:47831:165;17356:25;1553:47831;:::i;:::-;;;;;;-1:-1:-1;;;;;1553:47831:165;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;5647:18:40;:43;;;1553:47831:165;;;;;;;;:::i;:::-;;;;:::i;:::-;;2446:3;1553:47831;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5835:13:40;;1553:47831:165;;;;5870:4:40;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;5647:43:40;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;5669:21:40;5647:43;;1553:47831:165;;;;;;;;;;;;;2303:62:29;;:::i;:::-;1944:72:37;;:::i;:::-;3300:4;1553:47831:165;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;3319:20:37;1553:47831:165;;;966:10:34;1553:47831:165;;3319:20:37;1553:47831:165;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1553:47831:165;;;;18056:19;17991:13;18056:19;;17986:120;18006:20;;;;;;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;18028:3;18082:12;;;;;:::i;:::-;1553:47831;;;;;;;;;;;;18047:48;;;;:::i;:::-;1553:47831;;;;;;;;;17991:13;;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;:::i;:::-;;;;972:64:36;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;12183:30;-1:-1:-1;;;;;;;;;;;1553:47831:165;12183:30;1553:47831;;;;;;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;1553:47831:165;;;;;;;-1:-1:-1;;;;;1553:47831:165;3975:40:29;1553:47831:165;;3975:40:29;1553:47831:165;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;6429:44:30;;;;;1553:47831:165;6425:105:30;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;6959:1:30;;-1:-1:-1;;;;;1553:47831:165;6891:76:30;;:::i;:::-;;;:::i;6959:1::-;1553:47831:165;;:::i;:::-;2224:17;;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1553:47831:165;;-1:-1:-1;;;;;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47831:165;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;-1:-1:-1;;;;;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47831:165;;;;;3676:10:40;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;;;;;;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;9509:17;;:::i;:::-;2288:3;;6591:4:30;9487:19:165;;1553:47831;3652:7:40;2288:3:165;;;1553:47831;;2288:3;;;1553:47831;2288:3;1553:47831;2288:3;;;;;1553:47831;2288:3;;;;;;;;;;1553:47831;;;;;;;:::i;:::-;;;;9566:57;1553:47831;9536:27;3676:10:40;9536:27:165;;1553:47831;;;;2288:3;1553:47831;;;;;;;;28092:37:171;28113:15;28092:37;;:::i;:::-;9676:38:165;1553:47831;;;9633:33;;;1553:47831;;2203:1:171;;;;;;;;1553:47831:165;;;;;;;9776:32;;;1553:47831;;;;;;;;;;;9763:57;;;;;;;;9757:63;9763:57;;;;;1553:47831;9757:63;;:::i;:::-;2366:5;;;;;;;;;;;9830:48;;;1553:47831;2366:5;2446:3;2366:5;;2446:3;2366:5;;;;;1553:47831;9948:49;1553:47831;-1:-1:-1;;;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;;;;;;1553:47831:165;6654:20:30;1553:47831:165;;;7096:1;1553:47831;;6654:20:30;1553:47831:165;;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47831;2288:3;;1553:47831;2288:3;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47831;2288:3;;1553:47831;2288:3;9763:57;;;;1553:47831;9763:57;1553:47831;9763:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1553:47831;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;6591:4:30;1553:47831:165;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;3676:10:40;1553:47831:165;;;;;;;;;;;;;;;;6591:4:30;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;7096:1;1553:47831;;;;;;;;;;;;7096:1;1553:47831;;;;;:::i;:::-;;;;;;;-1:-1:-1;1553:47831:165;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;;;;;6591:4:30;1553:47831:165;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;7096:1;1553:47831;;;;;;;;;;;7096:1;1553:47831;;;;;:::i;:::-;;;;6425:105:30;-1:-1:-1;;;6496:23:30;;1553:47831:165;;6496:23:30;6429:44;7096:1:165;1553:47831;;-1:-1:-1;;;;;1553:47831:165;6448:25:30;;6429:44;;;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;1553:47831:165;;;;;4301:16:30;1553:47831:165;;4724:16:30;;:34;;;;1553:47831:165;;4788:16:30;:50;;;;1553:47831:165;4853:13:30;:30;;;;1553:47831:165;4849:91:30;;;6959:1;1553:47831:165;;;-1:-1:-1;;;;;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;4977:67:30;;1553:47831:165;6891:76:30;;:::i;6959:1::-;6891:76;;:::i;:::-;1553:47831:165;;:::i;:::-;2224:17;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1553:47831:165;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:10:40;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;;;;;;1553:47831:165;6891:76:30;;:::i;:::-;;;:::i;:::-;4992:15:165;:19;2288:3;;5050:21;;2288:3;;5117:32;;;2288:3;;;5398:2;5362:32;;;;:::i;:::-;2288:3;5342:58;;2288:3;;;1553:47831;;;;;;;;;;;;;;;;;:::i;:::-;2288:3;1553:47831;;2288:3;;;;;;2303:62:29;;:::i;:::-;1553:47831:165;;1800:178:73;;;;;;;1553:47831:165;;;1800:178:73;;;1553:47831:165;;-1:-1:-1;;;;;;;;;;;1553:47831:165;48807:24;1553:47831;;;;;;;48807:24;5556:17;;:::i;:::-;2288:3;1553:47831;2288:3;;5534:19;;1553:47831;3652:7:40;2288:3:165;;;1553:47831;2288:3;;;;1553:47831;2288:3;;;;;;;;;;;;;;;;;;1553:47831;;;;;;:::i;:::-;2288:3;;;-1:-1:-1;;;;;1553:47831:165;;;5606:52;;;2288:3;;;1553:47831;;;5606:52;;;;2288:3;;;5583:20;;;1553:47831;;;;;;-1:-1:-1;;;;;;1553:47831:165;;;;;;;2288:3;;;1553:47831;;;;;;;;2288:3;;;1553:47831;;;;;;;;;;2203:1:171;5668:25:165;;;2203:1:171;1553:47831:165;;:::i;:::-;;2383:18:171;1553:47831:165;;;;;;:::i;:::-;1855:13:171;1553:47831:165;;23096:89:171;1553:47831:165;5856:22;;;1553:47831;;-1:-1:-1;;;;;;2203:1:171;;;;;1553:47831:165;;;;;;;;;:::i;:::-;;;;5943:65;;;1553:47831;;;5943:65;1553:47831;5924:16;;;1553:47831;2288:3;2203:1:171;;1553:47831:165;2203:1:171;;;1553:47831:165;6018:33;;;2203:1:171;;-1:-1:-1;;2203:1:171;1553:47831:165;;;2203:1:171;;;1553:47831:165;;-1:-1:-1;;;6122:37:165;;1553:47831;;;;;6122:37;;;;;;;;6116:43;6122:37;;;;;6116:43;;:::i;:::-;2366:5;;;;;;;;;;6169:48;;;1553:47831;2366:5;2446:3;2366:5;;2446:3;2366:5;;;;;2446:3;;6449:213;6287:49;;;;6479:37;6287:49;1553:47831;6287:49;;1553:47831;;;;;;;:::i;:::-;;;2446:3;;;1553:47831;;2446:3;;;1553:47831;;;;2446:3;:::i;:::-;4992:15;;1553:47831;;2446:3;;:::i;:::-;6479:37;;6449:213;:::i;:::-;5064:101:30;;1553:47831:165;;;5064:101:30;1553:47831:165;5140:14:30;1553:47831:165;-1:-1:-1;;;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;5140:14:30;1553:47831:165;;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47831;2288:3;1553:47831;;2288:3;2366:5;-1:-1:-1;;;2288:3:165;;;1553:47831;2288:3;1553:47831;;2288:3;6122:37;1553:47831;;;;;;;;;2288:3;-1:-1:-1;;;2288:3:165;;1553:47831;2288:3;;;-1:-1:-1;;;2288:3:165;;1553:47831;2288:3;;;-1:-1:-1;;;2288:3:165;;1553:47831;2288:3;;;-1:-1:-1;;;2288:3:165;;1553:47831;2288:3;;1553:47831;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;3676:10:40;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;1553:47831:165;;;;;;;;4977:67:30;-1:-1:-1;;;;;;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;4977:67:30;;4849:91;-1:-1:-1;;;4906:23:30;;1553:47831:165;4906:23:30;;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;4824:6:60;-1:-1:-1;;;;;1553:47831:165;4815:4:60;4807:23;4803:145;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;4803:145:60;-1:-1:-1;;;4908:29:60;;1553:47831:165;;4908:29:60;1553:47831:165;-1:-1:-1;1553:47831:165;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4401:6:60;1553:47831:165;4392:4:60;4384:23;;;:120;;;;1553:47831:165;4367:251:60;;;2303:62:29;;:::i;:::-;1553:47831:165;;-1:-1:-1;;;5865:52:60;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;5865:52:60;;;;;;;;1553:47831:165;-1:-1:-1;5861:437:60;;-1:-1:-1;;;6227:60:60;;1553:47831:165;;;;;1805:47:53;6227:60:60;5861:437;5959:40;;;-1:-1:-1;;;;;;;;;;;5959:40:60;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;1553:47831:165;;;;;2407:36:53;;;;1553:47831:165;;;;2458:15:53;:11;;4065:25:66;;1553:47831:165;4107:55:66;4065:25;;;;;;;1553:47831:165;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;:::-;;1553:47831:165;;;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;1553:47831:165;;6159:70:53;-1:-1:-1;;;6199:19:53;;1553:47831:165;;6199:19:53;1744:119;-1:-1:-1;;;1805:47:53;;1553:47831:165;;;1805:47:53;;5955:120:60;-1:-1:-1;;;6026:34:60;;1553:47831:165;;;6026:34:60;;5865:52;;;;1553:47831:165;5865:52:60;;1553:47831:165;5865:52:60;;;;;;1553:47831:165;5865:52:60;;;:::i;:::-;;;1553:47831:165;;;;;5865:52:60;;;;1553:47831:165;-1:-1:-1;1553:47831:165;;5865:52:60;;;-1:-1:-1;5865:52:60;;4367:251;-1:-1:-1;;;4578:29:60;;1553:47831:165;4578:29:60;;4384:120;-1:-1:-1;;;;;;;;;;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;4462:42:60;;;-1:-1:-1;4384:120:60;;;1553:47831:165;;;;;;;;;;;;;;;;2867:1;1553:47831;;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;2971:9:37;2967:62;;1553:47831:165;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;3627:22:37;1553:47831:165;;;966:10:34;1553:47831:165;;3627:22:37;1553:47831:165;;2967:62:37;-1:-1:-1;;;3003:15:37;;1553:47831:165;3003:15:37;;1553:47831:165;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47831:165;20862:23;;1553:47831;;-1:-1:-1;;;;;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47831:165;28113:15:171;28092:37;;:::i;:::-;1553:47831:165;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;1944:72:37;;:::i;:::-;29407:36:165;1553:47831;;;;29407:36;:::i;:::-;-1:-1:-1;;;;;;1553:47831:165;;;;29494:70;1553:47831;;;;29531:10;;29494:70;-1:-1:-1;;;;;;;;;;;1553:47831:165;12757:23;;1553:47831;-1:-1:-1;;;;;1553:47831:165;29454:134;;;;;1553:47831;;-1:-1:-1;;;29454:134:165;;-1:-1:-1;;;;;1553:47831:165;;;;29454:134;;1553:47831;;;;;;;;;;;;;;;;;;29454:134;1553:47831;;29454:134;;;;;;;;;1553:47831;;;;;;;;29494:70;;;1553:47831;;;;;;;;;;;;;;3980:23:40;;:::i;1553:47831:165:-;;;;;;;;;;;;;;11645:22;-1:-1:-1;;;;;;;;;;;1553:47831:165;11645:22;1553:47831;;;;;;;;;;;;;;;;;;;;;19689:51;-1:-1:-1;;;;;;;;;;;1553:47831:165;19689:51;1553:47831;;;;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;2303:62:29;;:::i;:::-;1553:47831:165;;21180:51;-1:-1:-1;;;;;;;;;;;1553:47831:165;21180:51;1553:47831;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;31450:36:165;1553:47831;;;;31450:36;:::i;:::-;31538:32;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;31586:96;;;;;;1553:47831;;;;;;;;;;;;31586:96;;1553:47831;;;;;;;;31626:4;;31606:10;1553:47831;31586:96;;;:::i;:::-;;;;;;;;;1553:47831;-1:-1:-1;;1553:47831:165;;-1:-1:-1;;;31718:79:165;;31606:10;1553:47831;31718:79;;1553:47831;31626:4;1553:47831;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;31718:79;;;;;;;;;;;1553:47831;;;;;-1:-1:-1;;;;;1553:47831:165;;;;31913:70;1553:47831;;;;31606:10;;31913:70;;-1:-1:-1;;;;;;;;;;;1553:47831:165;31538:20;12757:23;1553:47831;-1:-1:-1;;;;;1553:47831:165;31856:236;;;;;1553:47831;;-1:-1:-1;;;31856:236:165;;-1:-1:-1;;;;;1553:47831:165;;;;31856:236;;1553:47831;;;;;;;;;;;;;;31856:236;1553:47831;;;31856:236;;;;;;;;;;1553:47831;;;;;;;;31913:70;;;;1553:47831;-1:-1:-1;;;1553:47831:165;;;;;31718:79;;;;1553:47831;31718:79;1553:47831;31718:79;;;;;;;:::i;:::-;;;;;1553:47831;;;;;;;;;31586:96;;;;;:::i;:::-;1553:47831;;31586:96;;;;1553:47831;;;;;;-1:-1:-1;;1553:47831:165;;;;;;:::i;:::-;;;:::i;:::-;1944:72:37;;;:::i;:::-;33518:37:165;1553:47831;;;;33518:37;:::i;:::-;-1:-1:-1;;;;;;1553:47831:165;;;;33606:70;1553:47831;;;;33643:10;;33606:70;;33566:136;;;;;1553:47831;;-1:-1:-1;;;33566:136:165;;-1:-1:-1;;;;;1553:47831:165;;;;33566:136;;1553:47831;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;33566:136;1553:47831;-1:-1:-1;33566:136:165;;;;;;;;1553:47831;33566:136;;;33606:70;1553:47831;;;;;;;33566:136;1553:47831;33566:136;;;:::i;:::-;1553:47831;33566:136;;;1553:47831;;;;;;;;;33606:70;;;;1553:47831;;;;;;-1:-1:-1;;1553:47831:165;;;;2303:62:29;;:::i;:::-;1553:47831:165;;21577:52;-1:-1:-1;;;;;;;;;;;1553:47831:165;21577:52;1553:47831;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;19354:42;-1:-1:-1;;;;;;;;;;;1553:47831:165;19354:42;1553:47831;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;:::-;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;:::-;-1:-1:-1;;;;;1553:47831:165;;;;;;-1:-1:-1;;1553:47831:165;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;-1:-1:-1;;1553:47831:165;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47831:165;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1553:47831:165;;;;:::o;2224:17::-;1553:47831;;;;;;;:::i;:::-;2224:17;1553:47831;;-1:-1:-1;;;1553:47831:165;2224:17;;;:::o;2288:3::-;;;;;;;;;;:::o;:::-;1553:47831;;;2288:3;;;;;;;;;;;;;;;:::o;:::-;1553:47831;;;2288:3;;;;;;;;2203:1:171;;;;;;;;;;1553:47831:165;;;;;;;2203:1:171;:::o;:::-;1553:47831:165;;2203:1:171;;;;;;;;:::o;2366:5:165:-;;;;;;;;;;;;;;;;:::o;2446:3::-;;;;;;;;;;;1553:47831;;;;:::i;:::-;2446:3;;;1553:47831;;;2446:3;;;1553:47831;2446:3;;;:::o;:::-;-1:-1:-1;;;;;2446:3:165;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1553:47831;;;;;;;:::i;:::-;2446:3;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;1553:47831;;;;;:::i;:::-;2446:3;;;;;;;;1553:47831;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;:::o;:::-;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;14554:375::-;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47831:165;28113:15:171;28092:37;;:::i;:::-;14806:22:165;;;1553:47831;14758:22;;;;;;14911:11;;;;1553:47831;14554:375;:::o;14782:3::-;14829:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47831:165;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;14805:39;14801:90;;1553:47831;;14743:13;;14801:90;14864:12;;;;1553:47831;14864:12;:::o;1553:47831::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47831:165;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47831:165;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;:::o;2670:66::-;;;;;;;;;;:::o;3405:215:29:-;-1:-1:-1;;;;;1553:47831:165;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;1553:47831:165;;-1:-1:-1;;;;;;1553:47831:165;;;;;;;-1:-1:-1;;;;;1553:47831:165;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;1553:47831:165;;3509:1:29;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;1553:47831:165;;-1:-1:-1;2763:40:29;2709:128:37;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;2770:61:37;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:37;;-1:-1:-1;2805:15:37;39157:934:165;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;39333:19;;;;1553:47831;39333:38;1553:47831;;;;;39426:19;;;1553:47831;;;;;;;;;;;;;;39464:24;39426:62;1553:47831;;3543:209:25;1553:47831:165;3543:209:25;1553:47831:165;3543:209:25;1553:47831:165;;3543:209:25;1553:47831:165;1052:614:22;;;;;;;;-1:-1:-1;;;;;1052:614:22;;;;;1651:6:169;1052:614:22;1553:47831:165;1052:614:22;1888:66:169;4093:83:22;;1998:66:169;1553:47831:165;4093:83:22;;;2108:66:169;1553:47831:165;4093:83:22;;;2218:66:169;2210:6;4093:83:22;;;2328:66:169;2320:6;4093:83:22;;;2438:66:169;2430:6;4093:83:22;;;2548:66:169;2540:6;4093:83:22;;;2658:66:169;2650:6;4093:83:22;;;2768:66:169;2760:6;4093:83:22;;;2878:66:169;2870:6;4093:83:22;;;2988:66:169;2980:6;4093:83:22;;;3098:66:169;3090:6;4093:83:22;;;3208:66:169;3200:6;4093:83:22;;;3318:66:169;3310:6;4093:83:22;;;3428:66:169;3420:6;4093:83:22;;;3538:66:169;3530:6;4093:83:22;;;3648:66:169;3640:6;4093:83:22;;;3758:66:169;3750:6;4093:83:22;;;3868:66:169;3860:6;4093:83:22;;;3978:66:169;3970:6;4093:83:22;;;4088:66:169;4080:6;4093:83:22;;;4198:66:169;4190:6;4093:83:22;;;39886:4:165;4536:2:169;1553:47831:165;4437:66:169;;;;;4436:103;4416:6;4093:83:22;;;4592:66:169;4584:6;4093:83:22;;;39763:135:165;4670:150:169;;;;;;1553:47831:165;;;;;;;-1:-1:-1;1553:47831:165;39909:28;;;1553:47831;;;;-1:-1:-1;1553:47831:165;;39966:33;;;:35;1553:47831;;39966:35;:::i;:::-;1553:47831;;;;-1:-1:-1;;;;;1553:47831:165;;;;40017:32;;1553:47831;;40017:32;40060:24;39157:934;:::o;1553:47831::-;;;;;;;;;39157:934;;;;-1:-1:-1;;;;;;;;;;;1553:47831:165;39333:19;31481:4;39333:19;;1553:47831;39333:38;1553:47831;;;-1:-1:-1;1553:47831:165;39426:19;;;1553:47831;;;;-1:-1:-1;1553:47831:165;;;;;;;;;39464:24;39426:62;1553:47831;;3543:209:25;-1:-1:-1;3543:209:25;1553:47831:165;3543:209:25;1553:47831:165;-1:-1:-1;3543:209:25;1553:47831:165;1052:614:22;;;;;;;;-1:-1:-1;;;;;1052:614:22;;;;;1545:4:170;1052:614:22;1553:47831:165;1052:614:22;2041:66:170;4093:83:22;;39825:4:165;1052:614:22;1553:47831:165;2187:66:170;2186:105;1553:47831:165;4093:83:22;;;2342:66:170;1553:47831:165;4093:83:22;;;-1:-1:-1;2420:150:170;;;;;;1553:47831:165;;;;;;;-1:-1:-1;1553:47831:165;39909:28;;;1553:47831;;;;-1:-1:-1;1553:47831:165;;39966:33;;;:35;1553:47831;;39966:35;:::i;23318:229:171:-;1553:47831:165;;:::i;:::-;;;23496:12:171;15374:24:83;15370:103;;1553:47831:165;837:15:87;14374:24:83;14370:103;;1553:47831:165;;;;;:::i;:::-;23466:1:171;1553:47831:165;;;23496:12:171;1553:47831:165;23434:106:171;;;1553:47831:165;;837:15:87;1553:47831:165;;23434:106:171;;1553:47831:165;23318:229:171;:::o;14370:103:83:-;15421:41;;;23466:1:171;14421:41:83;14452:2;14421:41;1553:47831:165;837:15:87;1553:47831:165;;;23466:1:171;14421:41:83;15370:103;15421:41;;;23466:1:171;15421:41:83;15452:2;15421:41;1553:47831:165;23496:12:171;1553:47831:165;;;23466:1:171;15421:41:83;1553:47831:165;;;;;;;;;;;:::o;:::-;;;;;;;;;;46839:1421;;;;2203:1:171;;47539:25:165;;;;2203:1:171;;;1145:66:27;;1837:24:26;;:71;;;;46839:1421:165;1553:47831;;;;;2203:1:171;1553:47831:165;;2203:1:171;1553:47831:165;;;;1705:1673:173;;;;;;;;;;;;;;;;;;;-1:-1:-1;1705:1673:173;;;;;;;47699:52:165;;;1553:47831;;-1:-1:-1;;;;;;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;-1:-1:-1;47862:3:165;47837:16;;;1553:47831;;47833:27;;;;;-1:-1:-1;1553:47831:165;;;47539:25;1553:47831;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;47935:15;;1553:47831;;;;;;;-1:-1:-1;;1553:47831:165;;;;;47818:13;;47833:27;;;;-1:-1:-1;48037:3:165;1553:47831;;48010:25;;;;;1553:47831;;-1:-1:-1;;;;;48077:17:165;1553:47831;48077:17;;:::i;:::-;2288:3;1553:47831;;;;;;;-1:-1:-1;1553:47831:165;;48108:15;;1553:47831;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;47995:13;;48010:25;;;47837:16;48162;;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;-1:-1:-1;;;1553:47831:165;;;;47539:25;1553:47831;;;;;;;;;;;47990:163;1553:47831;;;-1:-1:-1;1553:47831:165;47539:25;-1:-1:-1;1553:47831:165;-1:-1:-1;1553:47831:165;;;;;;48205:28;;;;;;1553:47831;46839:1421::o;1553:47831::-;2288:3;;-1:-1:-1;;;;;1553:47831:165;;;;;47539:25;1553:47831;;;;;;;;;;;;-1:-1:-1;1553:47831:165;;;;-1:-1:-1;1553:47831:165;;;;;;:::i;:::-;;;;1705:1673:173;;-1:-1:-1;1705:1673:173;;;;1553:47831:165;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;1837:71:26;1865:43;;;;:::i;:::-;1837:71;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22293:532:171;22418:12;-1:-1:-1;;2288:3:165;;;22293:532:171;;2288:3:165;;;;1553:47831;;22418:12:171;22458:22;;22418:12;;22458:50;1553:47831:165;22458:50:171;;22542:8;;;;;;22518:278;-1:-1:-1;1553:47831:165;;-1:-1:-1;;22293:532:171:o;22523:17::-;22581:12;;22611:11;;;;;-1:-1:-1;22433:1:171;;-1:-1:-1;;;22642:11:171:o;22607:119::-;22678:8;22674:52;;-1:-1:-1;;1553:47831:165;22523:17:171;;22674:52;22706:5;;22458:50;22487:21;22418:12;;22487:21;:::i;:::-;22458:50;;;1553:47831:165;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;:::o;40097:683::-;;40225:22;;;40258:1;40225:22;;;;:::i;:::-;:34;;;1553:47831;;40302:22;;;;:::i;:::-;:34;;;40298:177;;40529:22;;;:::i;:::-;1553:47831;;;;;;;;;;;;;;;;;;40619:23;;;;;:::i;:::-;2366:5;;;;1553:47831;2366:5;;;;;45920:2;2366:5;;;;;;;45966:36;;;;;;:::i;:::-;46012:18;1553:47831;46046:13;1553:47831;;46181:28;1553:47831;;;;;;46181:28;;46041:685;46081:3;46061:18;;;;;;1553:47831;;;;;;;;;;;;;;46210:18;;;:::i;:::-;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;46181:53;1553:47831;;;40225:22;46304:25;;-1:-1:-1;;;;;46304:25:165;;;:::i;:::-;1553:47831;46304:30;;:72;;;46081:3;46300:144;;46081:3;-1:-1:-1;;;;;46491:18:165;;;:::i;:::-;1553:47831;;-1:-1:-1;;;46483:76:165;;45920:2;46483:76;;;1553:47831;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;-1:-1:-1;;;;;1553:47831:165;;;:::i;:::-;;;;;;45920:2;1553:47831;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;;;;;;45920:2;1553:47831;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45920:2;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;41763:51;1553:47831;;;;;;;;;;;;45920:2;1553:47831;;;;;;;;;;;;;;;;;;;;;;;46483:76;;;;;;;45920:2;46483:76;;-1:-1:-1;;;;;46483:76:165;;;;1553:47831;;46483:76;;;;;;;;1553:47831;46483:76;;;1553:47831;4093:83:22;;45920:2:165;4093:83:22;40258:1:165;4093:83:22;;;;1553:47831:165;46081:3;1553:47831;46046:13;;;46483:76;;;45920:2;46483:76;;;;;;;;;1553:47831;46483:76;;;:::i;:::-;;;1553:47831;;;;;40258:1;46483:76;;;;;-1:-1:-1;46483:76:165;;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;45920:2;1553:47831;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;:::i;:::-;;45920:2;1553:47831;;;;;;;-1:-1:-1;;1553:47831:165;;;;;;;;;;;;45920:2;1553:47831;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;40225:22;1553:47831;;;:::i;:::-;;;;;;;;;;40225:22;1553:47831;;;;;;;;;;;;;;;;;;45920:2;1553:47831;;;;;;;;40258:1;1553:47831;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40258:1;1553:47831;;;;;;;;;;;45920:2;1553:47831;;;:::i;:::-;;45920:2;1553:47831;;;-1:-1:-1;;;;;1553:47831:165;;;;;:::i;:::-;;;;;;;;;;;;;;46300:144;46404:25;;;;;:::i;:::-;46300:144;;;46304:72;46339:37;;1553:47831;46339:37;;;:::i;:::-;46338:38;46304:72;;46061:18;;;;;;;;;;45920:2;46061:18;;1083:131:25;40678:16:165;;1553:47831;;40659:36;45920:2;1553:47831;;;;;40659:36;1553:47831;3543:209:25;45920:2:165;3543:209:25;1553:47831:165;;3543:209:25;40097:683:165;:::o;40298:177::-;40444:20;;;40451:13;40444:20;:::o;1553:47831::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;42230:1705::-;42360:24;;;42395:1;42360:24;;;;:::i;:::-;:36;;;1553:47831;;42441:24;;;;:::i;:::-;:36;;;42437:179;;42672:24;;;;:::i;:::-;1553:47831;;;;;;;;;;;;;;;;;;42718:21;;;;;42742;42718;;;:::i;:::-;42742;;;1553:47831;42742:21;;;;:::i;:::-;1553:47831;;;42718:45;1553:47831;;;42821:21;;;:::i;:::-;1553:47831;42846:29;;;;1553:47831;42742:21;1553:47831;;;;42821:54;1553:47831;;43032:46;1553:47831;43056:21;42952:46;42976:21;;;;:::i;:::-;1553:47831;42952:46;;:::i;:::-;43056:21;;:::i;:::-;1553:47831;43032:46;;:::i;:::-;-1:-1:-1;1553:47831:165;;;43200:31;;;1553:47831;43269:32;;;;1553:47831;;;;;-1:-1:-1;;;;;1553:47831:165;;;;43368:19;;;;1553:47831;;;;42742:21;;1553:47831;43256:144;43337:62;42742:21;43368:19;;1553:47831;43368:19;:::i;:::-;:31;1553:47831;43337:62;;:::i;:::-;43368:19;1553:47831;;;;;;;;;43256:144;;;;;;1553:47831;;;;;43256:144;;;;;;;1553:47831;43256:144;;;42230:1705;1553:47831;;;;;43368:19;1553:47831;-1:-1:-1;;;43490:185:165;;-1:-1:-1;;;;;1553:47831:165;;;43256:144;43490:185;;1553:47831;;;;;;;;42742:21;43635:26;;;1553:47831;43256:144;1553:47831;;;;43490:185;1553:47831;-1:-1:-1;43490:185:165;;;;;;;;1553:47831;43490:185;;;42230:1705;43776:19;;;;;:::i;:::-;43797:21;;;;:::i;:::-;1553:47831;43368:19;1553:47831;;;;;43727:92;;43368:19;43256:144;43727:92;;1553:47831;;;;;;;;;;;;;;;;;;;;42742:21;1553:47831;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;43269:32;1553:47831;;;;;;;42718:21;43256:144;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;42742:21;1553:47831;;;;;;;;;;;43490:185;1553:47831;;;;43368:19;1553:47831;;;;;;;;:::i;:::-;;;;;;;;;;;43727:92;;;;;;;;;1553:47831;43727:92;;;1553:47831;43906:21;;;;:::i;:::-;43368:19;1553:47831;18032:70:171;42742:21:165;18032:70:171;;1553:47831:165;;;43368:19;1553:47831;;;2288:3;1553:47831;;;;;;42718:21;1553:47831;;;18032:70:171;;;;;;;:::i;:::-;1553:47831:165;18022:81:171;;42230:1705:165;:::o;43727:92::-;;;;42742:21;43727:92;;42742:21;43727:92;;;;;;1553:47831;43727:92;;;:::i;:::-;;;1553:47831;;;;;;43906:21;43727:92;;;;;-1:-1:-1;43727:92:165;;1553:47831;;;;;;;43368:19;1553:47831;42395:1;1553:47831;;;;;;;;;:::i;:::-;;;;42742:21;1553:47831;;;42742:21;1553:47831;;;;;;;;;;;;;;;;43490:185;;;;;42742:21;43490:185;;42742:21;43490:185;;;;;;1553:47831;43490:185;;;:::i;:::-;;;1553:47831;;;;;;;43776:19;43490:185;;;;;-1:-1:-1;43490:185:165;;1553:47831;;;;;;43256:144;1553:47831;;43256:144;;;;42742:21;43256:144;42742:21;43256:144;;;;;;;:::i;:::-;;;;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;:::o;44002:1657::-;;44135:27;;;44173:1;44135:27;;;;:::i;:::-;:39;;;1553:47831;;44222:27;;;;:::i;:::-;:39;;;44218:182;;44459:27;;;:::i;:::-;1553:47831;;;;;;;;;;;;;;;;;;44508:22;;;;;;;;:::i;:::-;:33;;;1553:47831;;;44675:29;;;1553:47831;;;;44657:15;:47;:15;;:47;:::i;:::-;44656:72;44708:16;;;1553:47831;44656:72;;;:::i;:::-;44747:20;;;;1553:47831;2670:66;44173:1;2670:66;;;;;;;44747:43;;1553:47831;;44881:43;;44849:75;44881:43;;:::i;:::-;44849:75;;:::i;:::-;44976:25;44961:40;44976:25;;;1553:47831;44961:40;;:::i;:::-;44657:15;44942:59;1553:47831;;45120:34;;;:::i;:::-;44657:15;;1553:47831;45172:28;;1553:47831;45172:46;1553:47831;;;45312:217;45412:45;;;;;2446:3;;45412:45;;;;:::i;:::-;45471:22;;;;;;:::i;:::-;1553:47831;;;2446:3;1553:47831;2446:3;;:::i;:::-;1553:47831;;2446:3;;:::i;:::-;1553:47831;;2446:3;;:::i;:::-;45312:217;;:::i;:::-;45545:47;1553:47831;45412:45;1553:47831;;;;45545:47;1553:47831;;;;;;;45412:45;1553:47831;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;45412:45;1553:47831;;;;44508:22;1553:47831;;;18426:30:171;2203:1;1553:47831:165;2203:1:171;;18476:32;;2203:1;1553:47831:165;45412:45;1553:47831;18392:206:171;;;1553:47831:165;18392:206:171;;1553:47831:165;;;45412:45;1553:47831;;;44508:22;1553:47831;;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47831:165;;18392:206:171;;;;;;1553:47831:165;18392:206:171;;;:::i;1553:47831:165:-;;;-1:-1:-1;;;;;1553:47831:165;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;44173:1;1553:47831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24038:3813:171;;;;;;1553:47831:165;32036:29:171;;;1553:47831:165;;;;32068:22:171;24407:15;32068:22;;:::i;:::-;32036:77;32068:45;32093:16;;;1553:47831:165;32068:45:171;;;:::i;:::-;32036:77;;:::i;:::-;24437:15;;;;;;:82;;24038:3813;24433:676;;;24543:35;;;1553:47831:165;;24628:25:171;;;;:::i;:::-;:39;1553:47831:165;;25203:24:171;24433:676;;25203:24;;:::i;:::-;3226:200:80;-1:-1:-1;;;1553:47831:165;3226:200:80;25268:4:171;3226:200:80;;32036:29:171;3226:200:80;32093:16:171;3226:200:80;;1553:47831:165;3226:200:80;1553:47831:165;32036:29:171;1553:47831:165;;;;;25331:37:171;;;25392:23;;32036:19;25392:23;;1553:47831:165;;;;;;;2446:3;1553:47831;;:::i;:::-;2446:3;;;:::i;:::-;1553:47831;3226:200:80;1553:47831:165;;25523:23:171;1553:47831:165;;25713:240:171;1553:47831:165;26234:272:171;25713:240;;;3226:200:80;25713:240:171;;;;;;;1553:47831:165;32036:19:171;1553:47831:165;;26323:32:171;;1553:47831:165;26234:272:171;;:::i;1553:47831:165:-;;;;;;;;;;;;;;;;;;25327:2495:171;1553:47831:165;;;32036:19:171;26527:37;26523:1299;;25327:2495;;;;;1553:47831:165;24038:3813:171;:::o;26523:1299::-;26600:199;26637:15;26677:25;26637:15;;;;;1553:47831:165;26677:25:171;;1553:47831:165;;-1:-1:-1;;;;;1553:47831:165;;;;;26600:199:171;;:::i;:::-;26814:27;1553:47831:165;26861:13:171;27057:14;1553:47831:165;27057:14:171;;26856:929;26900:3;26876:22;;;;;;3927:8:77;3871:27;2446:3:165;1553:47831;;;;;;;;:::i;2446:3::-;3871:27:77;;:::i;3927:8::-;-1:-1:-1;;;;;1553:47831:165;;;;;;;;;;;;;;;;27053:718:171;;26900:3;;32036:19;26900:3;26861:13;1553:47831:165;26861:13:171;;27053:718;-1:-1:-1;;;;;2780:163:73;1553:47831:165;2780:163:73;;;2113:66:165;1553:47831;2780:163:73;;;;3327:69:76;;27416:50:171;;;27494:8;32036:19;27494:8;;;27412:223;3556:68:76;32036:19:171;27661:17;3556:68:76;;;27661:17:171;:::i;:::-;:30;;;;27657:96;;27053:718;;;27657:96;27719:11;;;;;;;32036:19;27719:11;:::o;26876:22::-;;;;;;;;1553:47831:165;27799:12:171;:::o;1553:47831:165:-;;;;;;;;;;;;;;;;;;24433:676:171;24407:15;;;;;;24902:21;;1553:47831:165;;25203:24:171;24960:69;;;24433:676;;;;24960:69;24999:15;;24960:69;;;1553:47831:165;;;;;;;;;24437:82:171;24487:32;24474:45;24487:32;;;1553:47831:165;24474:45:171;;:::i;:::-;24407:15;24456:63;24437:82;;30885:456;-1:-1:-1;;;;;30885:456:171;;1553:47831:165;;;;31194:24:171;;;;:::i;:::-;1553:47831:165;;;;;;31306:5:171;1553:47831:165;;31319:1:171;1553:47831:165;30885:456:171;:::o;4016:191:40:-;4129:17;;:::i;:::-;4148:20;;:::i;:::-;1553:47831:165;;4107:92:40;;;;1553:47831:165;1959:95:40;1553:47831:165;;;1959:95:40;;1553:47831:165;1959:95:40;;;1553:47831:165;4170:13:40;1959:95;;;1553:47831:165;4193:4:40;1959:95;;;1553:47831:165;1959:95:40;4107:92;;;;;;:::i;28801:312:171:-;;28924:37;28801:312;28924:37;;:::i;:::-;;;;28984;;28977:44;:::o;28920:187::-;29059:37;;29052:44;:::o;7082:141:30:-;1553:47831:165;-1:-1:-1;;;;;;;;;;;1553:47831:165;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;1553:47831:165;;-1:-1:-1;;;;;1553:47831:165;;;;;;;:::o;:::-;;;;;;;;;;:::o;863:809:22:-;1052:614;;;863:809;1052:614;;-1:-1:-1;;1052:614:22;;;-1:-1:-1;;;;;1052:614:22;;;;;;;;;;863:809::o;31526:179:171:-;31678:16;31640:34;31639:59;31526:179;1553:47831:165;31645:29:171;;;1553:47831:165;;;;31640:34:171;;:::i;:::-;31678:16;;1553:47831:165;31639:59:171;;:::i;28342:322::-;28462:50;28496:15;28462:50;;:::i;:::-;28496:15;;;28535:37;;28528:44;:::o;28458:200::-;28610:37;;28603:44;:::o;7001:1787:20:-;;;;;;7608:63;;;;:::i;:::-;7607:64;7603:107;;7961:15;;7957:58;;-1:-1:-1;;8029:25:20;;;8025:68;;2933:1:27;2929:5;4026:14:20;2670:66:165;4010:31:20;;;:::i;:::-;1553:47831:165;425:3:20;1553:47831:165;;;4003:1:27;2933;2929:5;;1553:47831:165;425:3:20;4492:84:22;;;4093:83;2670:66:165;4093:83:22;;;4003:1:27;1553:47831:165;;2670:66;4492:84:22;;;2670:66:165;4093:83:22;;;;;2670:66:165;4093:83:22;;;1581:66:20;2670::165;4093:83:22;;;-1:-1:-1;;;2670:66:165;4093:83:22;;;531:131:25;;2670:66:165;4093:83:22;;;;;;4003:1:27;2670:66:165;4492:84:22;;2933:1:27;4492:84:22;;2670:66:165;531:131:25;;5696:10:20;;;4093:83:22;;4492:84;2670:66:165;1145::27;;531:131:25;;6084:3:20;1553:47831:165;-1:-1:-1;;;;;1553:47831:165;;;6084:3:20;1553:47831:165;;6062:44:20;1145:66:27;;;1860::20;1553:47831:165;1860:66:20;;1553:47831:165;6037:2:20;1553:47831:165;6140:32:20;6133:57;8567:14;;8563:57;;1145:66:27;3386:2;6084:3:20;1145:66:27;1553:47831:165;1145:66:27;648:2:20;1145:66:27;;;6396:43:26;;1145:66:27;;1553:47831:165;4093:83:22;;1553:47831:165;4093:83:22;;;;;6037:2:20;4093:83:22;;;1145:66:27;;6954:42:26;;-1:-1:-1;;1553:47831:165;1530:4:24;4093:83:22;;;;;;2933:1:27;1640:140:24;;;1553:47831:165;1640:140:24;3543:209:25;1553:47831:165;3543:209:25;648:2:20;3543:209:25;1553:47831:165;;;;;6037:2:20;1553:47831:165;3543:209:25;4476:141:27;9285:100:26;7001:1787:20;:::o;8025:68::-;8070:12;;;;;;1553:47831:165;8070:12:20;:::o;32460:467:171:-;1553:47831:165;;:::i;:::-;-1:-1:-1;32764:51:171;;;1553:47831:165;32882:27:171;;;1553:47831:165;;;;;;;;32835:15:171;;-1:-1:-1;;;;;1553:47831:165;;;;:::i;:::-;;;;:::i;:::-;;;32623:297:171;;;2288:3:165;32835:15:171;1553:47831:165;:::i;:::-;;32623:297:171;;1553:47831:165;32623:297:171;;;1553:47831:165;32460:467:171;:::o;5203:1551:77:-;;;6283:66;6270:79;;6266:164;;1553:47831:165;;;;;;-1:-1:-1;1553:47831:165;;;;;;;;;;;;;;;;;;;6541:24:77;;;;;;;;;-1:-1:-1;6541:24:77;-1:-1:-1;;;;;1553:47831:165;;6579:20:77;6575:113;;6698:49;-1:-1:-1;6698:49:77;-1:-1:-1;5203:1551:77;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:77;6541:24;6615:62;-1:-1:-1;6615:62:77;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;1553:47831:165;;;;;;7366:29:77;;;7411:7;;:::o;7362:444::-;1553:47831:165;7462:38:77;;1553:47831:165;;7523:23:77;;;7375:20;7523:23;1553:47831:165;7375:20:77;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;1553:47831:165;;;7375:20:77;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;1553:47831:165;;;7375:20:77;7763:32;6928:687:40;1553:47831:165;;:::i;:::-;;;;7100:22:40;;;;1553:47831:165;;7145:22:40;7138:29;:::o;7096:513::-;-1:-1:-1;;;;;;;;;;;;;1553:47831:165;7473:15:40;;;;7508:17;:::o;7469:130::-;7564:20;7571:13;7564:20;:::o;7836:723::-;1553:47831:165;;:::i;:::-;;;;8017:25:40;;;;1553:47831:165;;8065:25:40;8058:32;:::o;8013:540::-;-1:-1:-1;;;;;;;;;;;;;1553:47831:165;8411:18:40;;;;8449:20;:::o;29520:863:171:-;;29766:54;29688;;;1553:47831:165;29766:54:171;;1553:47831:165;29894:10:171;;;1553:47831:165;;29965:9:171;;;;29997;;;;;30029;;;30130:14;;;;;29520:863;1553:47831:165;;;30346:30:171;;;30339:37;;29520:863;:::o;30346:30::-;30361:14;;29520:863;-1:-1:-1;29520:863:171:o;1553:47831:165:-;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;30130:14:171;;;;;1553:47831:165;;;;-1:-1:-1;1553:47831:165;;-1:-1:-1;1553:47831:165;2129:778:77;1553:47831:165;;;2129:778:77;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:77;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;1767:250:27:-;-1:-1:-1;;912:66:27;701;;912;;;;;1984:15;1974:29;;1967:43;912:66;-1:-1:-1;;912:66:27;;1948:15;:62;1767:250;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;1553:47831:165;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;1553:47831:165;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;1553:47831:165;;;;4933:24:66;1553:47831:165;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":11046,"length":32},{"start":11193,"length":32}]}},"methodIdentifiers":{"COMMIT_BATCH_AFTER_COMMIT_CODES()":"4429e24b","COMMIT_BATCH_BEFORE_COMMIT_CODES()":"ad2b3d9a","DOMAIN_SEPARATOR()":"3644e515","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])":"b24fcac0","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32,address)":"3683c4d2","createProgramWithAbiInterface(bytes32,bytes32,address,address)":"0c18d277","createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)":"ee32004f","createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)":"0d91bf2a","eip712Domain()":"84b0196e","genesisBlockHash()":"28e24b3d","genesisTimestamp()":"cacf66ab","initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])":"53f7fd48","isValidator(address)":"facd743b","latestCommittedBatchHash()":"71a8cf2d","latestCommittedBatchTimestamp()":"d456fd51","lookupGenesisHash()":"8b1edf1e","middleware()":"f4f20ac0","mirrorImpl()":"e6fabc09","nonces(address)":"7ecebe00","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","proxiableUUID()":"52d1902d","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)":"8c4ace6a","requestCodeValidationBaseFee()":"188509e9","requestCodeValidationExtraFee()":"f1ef31ec","requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)":"f0fd702a","setMirror(address)":"3d43b418","setRequestCodeValidationBaseFee(uint256)":"11bec80d","setRequestCodeValidationExtraFee(uint256)":"0b9737ce","signingThresholdFraction()":"e3a6684f","storageView()":"c2eb812f","timelines()":"9eb939a8","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsAggregatedPublicKey()":"3bd109fa","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","validatorsVerifiableSecretSharingCommitment()":"a5d53a44","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApproveERC20Failed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchTimestampNotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchTimestampTooEarly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlobNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeAlreadyOnValidationOrValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeNotValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeValidationNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CommitmentEraNotNext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ElectionNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyValidatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErasTimestampMustNotBeEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisHashAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisHashNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"providedBlobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedBlobHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidBlobHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"providedLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedLength\",\"type\":\"uint256\"}],\"name\":\"InvalidBlobHashesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidElectionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFROSTAggregatedPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPreviousCommittedBatchHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PredecessorBlockNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentEraNotPrevious\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentPredatesGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentTimestampNotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterGenesisHashNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureVerificationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampOlderThanPreviousEra\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyChainCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyRewardsCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyValidatorsCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownProgram\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationBeforeGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationDelayTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsAlreadyScheduled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsNotFoundForTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueTransfer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"head\",\"type\":\"bytes32\"}],\"name\":\"AnnouncesCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BatchCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic0\",\"type\":\"uint256\"}],\"name\":\"DebugEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"name\":\"ValidatorsCommittedForEra\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMIT_BATCH_AFTER_COMMIT_CODES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMIT_BATCH_BEFORE_COMMIT_CODES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"blockTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBatchHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"expiry\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"exited\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"valueToReceiveNegativeSign\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"call\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"head\",\"type\":\"bytes32\"}],\"internalType\":\"struct Gear.ChainCommitment[]\",\"name\":\"chainCommitment\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.CodeCommitment[]\",\"name\":\"codeCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct Gear.OperatorRewardsCommitment\",\"name\":\"operators\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"stakers\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.RewardsCommitment[]\",\"name\":\"rewardsCommitment\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"verifiableSecretSharingCommitment\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsCommitment[]\",\"name\":\"validatorsCommitment\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BatchCommitment\",\"name\":\"_batch\",\"type\":\"tuple\"},{\"internalType\":\"enum Gear.SignatureType\",\"name\":\"_signatureType\",\"type\":\"uint8\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"}],\"name\":\"createProgramWithAbiInterface\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithAbiInterfaceAndExecutableBalance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithExecutableBalance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_middleware\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_eraDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_electionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationDelay\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"_aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_verifiableSecretSharingCommitment\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBatchHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBatchTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"middleware\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCodeValidationBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCodeValidationExtraFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"_blobHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v1\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s1\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_v2\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s2\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidationOnBehalf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBaseFee\",\"type\":\"uint256\"}],\"name\":\"setRequestCodeValidationBaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExtraFee\",\"type\":\"uint256\"}],\"name\":\"setRequestCodeValidationExtraFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdFraction\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"thresholdNumerator\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"thresholdDenominator\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageView\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"number\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.GenesisBlockInfo\",\"name\":\"genesisBlock\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.CommittedBatchInfo\",\"name\":\"latestCommittedBatch\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middleware\",\"type\":\"address\"}],\"internalType\":\"struct Gear.AddressBook\",\"name\":\"implAddresses\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"thresholdNumerator\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"thresholdDenominator\",\"type\":\"uint128\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"verifiableSecretSharingCommitmentPointer\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"list\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"useFromTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsView\",\"name\":\"validators0\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"verifiableSecretSharingCommitmentPointer\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"list\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"useFromTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsView\",\"name\":\"validators1\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.ValidationSettingsView\",\"name\":\"validationSettings\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"computeSettings\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"era\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"election\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validationDelay\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.Timelines\",\"name\":\"timelines\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"programsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatedCodesCount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxValidators\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"requestCodeValidationBaseFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestCodeValidationExtraFee\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouter.StorageView\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timelines\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"era\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"election\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validationDelay\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.Timelines\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsAggregatedPublicKey\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsVerifiableSecretSharingCommitment\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"BlobNotFound()\":[{\"details\":\"Thrown when the tx is not in EIP-4844/EIP-7594 format, so it doesn't have blobhashes.\"}],\"CodeAlreadyOnValidationOrValidated()\":[{\"details\":\"Thrown when the code is already on validation or validated.\"}],\"CodeNotValidated()\":[{\"details\":\"Thrown when the code is not validated and someone tries to create program with it.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"EraDurationTooShort()\":[{\"details\":\"Thrown when the era duration is too short (era duration must be greater than election duration).\"}],\"ErasTimestampMustNotBeEqual()\":[{\"details\":\"Thrown when the timestamp of an era is equal to the timestamp of the previous era. Should never happen, because the implementation.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"ExpiredSignature(uint256)\":[{\"details\":\"Thrown when deadline for code validation request has expired.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"GenesisHashAlreadySet()\":[{\"details\":\"Thrown when the genesis hash is already set by someone else.\"}],\"GenesisHashNotFound()\":[{\"details\":\"Thrown when the genesis hash is not found from previous blocks. There is 256 blocks lookback for `blockhash` opcode, so if the genesis block is too old, it may not be found.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidBlobHash(uint256,bytes32,bytes32)\":[{\"details\":\"Thrown when the blobhash for code validation request is invalid.\"}],\"InvalidBlobHashesLength(uint256,uint256)\":[{\"details\":\"Thrown when the provided blob hashes length doesn't match the actual blob hashes length in transaction.\"}],\"InvalidElectionDuration()\":[{\"details\":\"Thrown when an invalid election duration is provided (must be greater than 0).\"}],\"InvalidFrostSignatureCount()\":[{\"details\":\"Thrown when the number of FROST signatures is invalid.\"}],\"InvalidFrostSignatureLength()\":[{\"details\":\"Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidSigner(address,address)\":[{\"details\":\"Thrown when the signer of the code validation request is not the requester.\"}],\"InvalidTimestamp()\":[{\"details\":\"Thrown when an invalid block.timestamp is provided (must be greater than 0).\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"RouterGenesisHashNotInitialized()\":[{\"details\":\"Thrown when the router's genesis hash is not initialized (no one called `lookupGenesisHash` yet).\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"TimestampInFuture()\":[{\"details\":\"Thrown when the timestamp is in the future.\"}],\"TimestampOlderThanPreviousEra()\":[{\"details\":\"Thrown when the timestamp is older than the previous era.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ValidationBeforeGenesis()\":[{\"details\":\"Thrown when signature validation is attempted before the genesis block.\"}],\"ValidationDelayTooBig()\":[{\"details\":\"Thrown when the validation delay is too big.\"}],\"ValidatorsNotFoundForTimestamp()\":[{\"details\":\"Thrown when no validators are found for a given timestamp. Should never happen, because the implementation.\"}]},\"events\":{\"AnnouncesCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the all transitions until head were committed.\",\"params\":{\"head\":\"The hash of committed announces chain head.\"}},\"BatchCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that all commitments in batch has been applied.\",\"params\":{\"hash\":\"Batch hash (`keccak256` algorithm), see `Gear.batchCommitmentHash(...)`.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"codeId\":\"The expected code ID of the applied WASM blob, one the client side it's calculated as `gprimitives::CodeId::generate(wasm_code)`.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\"}},\"StorageSlotChanged(bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\",\"params\":{\"slot\":\"The new storage slot.\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"},\"ValidatorsCommittedForEra(uint256)\":{\"details\":\"This is an *informational* and *request* event, signaling that validators has been set for the next era.\",\"params\":{\"eraIndex\":\"The index of the era for which the validators have been committed.\"}}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.\",\"returns\":{\"_0\":\"domainSeparator The domain separator.\"}},\"areValidators(address[])\":{\"details\":\"Checks if the given addresses are all validators.\",\"returns\":{\"_0\":\"areValidators `true` if all addresses are validators, `false` otherwise.\"}},\"codeState(bytes32)\":{\"details\":\"Returns the state of code.\",\"returns\":{\"_0\":\"codeState The state of the code.\"}},\"codesStates(bytes32[])\":{\"details\":\"Returns the states of multiple codes.\",\"returns\":{\"_0\":\"codesStates The states of the codes.\"}},\"commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])\":{\"details\":\"Commits new batch of changes to `Router` state. `CodeGotValidated` event is emitted for each code in commitment. `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.\",\"params\":{\"_batch\":\"The batch commitment data.\",\"_signatureType\":\"The type of signature to validate.\",\"_signatures\":\"The signatures for the batch commitment.\"}},\"computeSettings()\":{\"details\":\"Returns the computation settings.\",\"returns\":{\"_0\":\"computeSettings The computation settings.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createProgram(bytes32,bytes32,address)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, and initializer. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \\\"Solidity ABI Interface\\\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_salt\":\"The salt for the program creation.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithAbiInterface(bytes32,bytes32,address,address)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \\\"Solidity ABI Interface\\\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_abiInterface\":\"The ABI interface address for the program.\",\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_salt\":\"The salt for the program creation.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \\\"Solidity ABI Interface\\\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_abiInterface\":\"The ABI interface address for the program.\",\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_initialExecutableBalance\":\"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_salt\":\"The salt for the program creation.\",\"_v\":\"ECDSA signature parameter.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \\\"Solidity ABI Interface\\\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_initialExecutableBalance\":\"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_salt\":\"The salt for the program creation.\",\"_v\":\"ECDSA signature parameter.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"genesisBlockHash()\":{\"details\":\"Returns the hash of the genesis block.\",\"returns\":{\"_0\":\"genesisBlockHash The hash of the genesis block.\"}},\"genesisTimestamp()\":{\"details\":\"Returns the timestamp of the genesis block.\",\"returns\":{\"_0\":\"genesisTimestamp The timestamp of the genesis block.\"}},\"initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])\":{\"details\":\"Initializes the `Router` with the given parameters.\",\"params\":{\"_aggregatedPublicKey\":\"The aggregated public key of the initial validators. Will be used in future.\",\"_electionDuration\":\"The duration of an election in seconds.\",\"_eraDuration\":\"The duration of an era in seconds.\",\"_middleware\":\"The address of the middleware contract.\",\"_mirror\":\"The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.\",\"_owner\":\"The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.\",\"_validationDelay\":\"The delay before validators can start validating in seconds.\",\"_validators\":\"The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, so the list of validators is used for signature verification.\",\"_verifiableSecretSharingCommitment\":\"The verifiable secret sharing commitment of the initial validators. Will be used in future.\",\"_wrappedVara\":\"The address of the `WrappedVara` (WVARA) ERC20 token contract.\"}},\"isValidator(address)\":{\"details\":\"Checks if the given address is a validator.\",\"returns\":{\"_0\":\"isValidator `true` if the address is a validator, `false` otherwise.\"}},\"latestCommittedBatchHash()\":{\"details\":\"Returns the hash of the latest committed batch.\",\"returns\":{\"_0\":\"latestCommittedBatchHash The hash of the latest committed batch.\"}},\"latestCommittedBatchTimestamp()\":{\"details\":\"Returns the timestamp of the latest committed batch.\",\"returns\":{\"_0\":\"latestCommittedBatchTimestamp The timestamp of the latest committed batch.\"}},\"lookupGenesisHash()\":{\"details\":\"Looks up the genesis hash from previous blocks.\"},\"middleware()\":{\"details\":\"Returns the address of the middleware implementation.\",\"returns\":{\"_0\":\"middleware The address of the middleware implementation.\"}},\"mirrorImpl()\":{\"details\":\"Returns the address of the mirror implementation.\",\"returns\":{\"_0\":\"mirrorImpl The address of the mirror implementation.\"}},\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"Pauses the contract.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\",\"returns\":{\"_0\":\"isPaused `true` if the contract is paused, `false` otherwise.\"}},\"programCodeId(address)\":{\"details\":\"Returns the code ID of the given program.\",\"returns\":{\"_0\":\"codeId The code ID of the program.\"}},\"programsCodeIds(address[])\":{\"details\":\"Returns the code IDs of the given programs.\",\"returns\":{\"_0\":\"codesIds The code IDs of the programs.\"}},\"programsCount()\":{\"details\":\"Returns the count of programs.\",\"returns\":{\"_0\":\"programsCount The count of programs.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\",\"details\":\"Reinitializes the `Router` to set up new storage layout. This function is intended to be called during an upgrade/wipe and can contain any logic. NOTE: Don't forget to bump `reinitializer(version)` in modifier!\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Requests code validation for the given code ID. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` in the WVARA ERC20 token.\",\"params\":{\"_codeId\":\"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_v\":\"ECDSA signature parameter.\"}},\"requestCodeValidationBaseFee()\":{\"details\":\"Returns the base fee for requesting code validation in WVARA ERC20 token.\",\"returns\":{\"_0\":\"requestCodeValidationBaseFee The base fee for requesting code validation.\"}},\"requestCodeValidationExtraFee()\":{\"details\":\"Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\",\"returns\":{\"_0\":\"requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else.\"}},\"requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)\":{\"details\":\"Requests code validation for the given code ID on behalf of someone else. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` in the WVARA ERC20 token.\",\"params\":{\"_blobHashes\":\"The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. This is needed to verify that the transaction has expected blobs attached.\",\"_codeId\":\"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_r2\":\"ECDSA signature parameter (for permit).\",\"_requester\":\"The address of the requester on behalf of whom the code validation is requested.\",\"_s1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_s2\":\"ECDSA signature parameter (for permit).\",\"_v1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_v2\":\"ECDSA signature parameter (for permit).\"}},\"setMirror(address)\":{\"details\":\"Sets the `Mirror` implementation address.\",\"params\":{\"newMirror\":\"The new mirror implementation address.\"}},\"setRequestCodeValidationBaseFee(uint256)\":{\"details\":\"Sets the base fee for requesting code validation in WVARA ERC20 token.\",\"params\":{\"newBaseFee\":\"The new base fee for requesting code validation.\"}},\"setRequestCodeValidationExtraFee(uint256)\":{\"details\":\"Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\",\"params\":{\"newExtraFee\":\"The new extra fee for requesting code validation on behalf of someone else.\"}},\"signingThresholdFraction()\":{\"details\":\"Returns the signing threshold fraction.\",\"returns\":{\"thresholdDenominator\":\"The denominator of the signing threshold fraction.\",\"thresholdNumerator\":\"The numerator of the signing threshold fraction.\"}},\"storageView()\":{\"details\":\"Returns the storage view of the contract storage.\",\"returns\":{\"_0\":\"storageView The storage view of the contract storage.\"}},\"timelines()\":{\"details\":\"Returns the timelines.\",\"returns\":{\"_0\":\"timelines The timelines.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"Unpauses the contract.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"validatedCodesCount()\":{\"details\":\"Returns the count of validated codes.\",\"returns\":{\"_0\":\"validatedCodesCount The count of validated codes.\"}},\"validators()\":{\"details\":\"Returns the list of current validators.\",\"returns\":{\"_0\":\"validators The list of current validators.\"}},\"validatorsAggregatedPublicKey()\":{\"details\":\"Returns the aggregated public key of the current validators.\",\"returns\":{\"_0\":\"validatorsAggregatedPublicKey The aggregated public key of the current validators.\"}},\"validatorsCount()\":{\"details\":\"Returns the count of current validators.\",\"returns\":{\"_0\":\"validatorsCount The count of current validators.\"}},\"validatorsThreshold()\":{\"details\":\"Returns the threshold number of validators required for a valid signature.\",\"returns\":{\"_0\":\"threshold The threshold number of validators required for a valid signature.\"}},\"validatorsVerifiableSecretSharingCommitment()\":{\"details\":\"Returns the verifiable secret sharing commitment of the current validators. This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.\",\"returns\":{\"_0\":\"validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators.\"}},\"wrappedVara()\":{\"details\":\"Returns the address of the wrapped Vara implementation.\",\"returns\":{\"_0\":\"wrappedVara The address of the wrapped Vara implementation.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AnnouncesCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"BatchCommitted(bytes32)\":{\"notice\":\"Emitted when batch of commitments has been applied.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its `Gear.CodeState` changed.\"},\"CodeValidationRequested(bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged(bytes32)\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsCommittedForEra(uint256)\":{\"notice\":\"Emitted when validators for the next era has been set.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13\",\"dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/Router.sol\":{\"keccak256\":\"0x0a090acedc80760d771ee67e408c8c9f027dc4bc3caa83d7bd8b37bcf0f3a3ce\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3c4474194531f871247c34c3eb39279448540efaa7a8e4cbca256da6bab1fd74\",\"dweb:/ipfs/Qma6RWtFftxTg6oUoKaK5cUAMXCTQ5Q7k97QCEEPpHuUji\"]},\"src/libraries/Clones.sol\":{\"keccak256\":\"0xedec50e3e6f10f016b8f8ea91bc63f69dffe8287e755778a8ef980f51206d1d7\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://789789391f384e4b4925e49818ddac6f19b70f01d90befdeac4e2c69e2926bc3\",\"dweb:/ipfs/QmUgyWxAHKmza1mSQnkxFroBxsnzchUntEjCqsrJfK9SrT\"]},\"src/libraries/ClonesSmall.sol\":{\"keccak256\":\"0x453f0262cf06f368b969ea3dbca328ee7fae1c8b73fdbc35ffe8252142d62b70\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d8237577660ba34d8105a6ec84a699059357471364bd4efdba10195ff93f7d4b\",\"dweb:/ipfs/QmRAky7bp7z3kgd56YwSdU2pRskoPryhQwaR5sCceSC9Lv\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/SSTORE2.sol\":{\"keccak256\":\"0xd280ac6c1bf76b0996b061139591884ea767f2fa97c103a4d6abb38c449c2cdd\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://59271a683dc86fde6556b000155742076227a490581f5b38d80bdf7bfe593389\",\"dweb:/ipfs/QmWGXRjg1sDa89XHpTXMT45iJazwc3S5qA8Aio4hbqhhmm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ApproveERC20Failed"},{"inputs":[],"type":"error","name":"BatchTimestampNotInPast"},{"inputs":[],"type":"error","name":"BatchTimestampTooEarly"},{"inputs":[],"type":"error","name":"BlobNotFound"},{"inputs":[],"type":"error","name":"CodeAlreadyOnValidationOrValidated"},{"inputs":[],"type":"error","name":"CodeNotValidated"},{"inputs":[],"type":"error","name":"CodeValidationNotRequested"},{"inputs":[],"type":"error","name":"CommitmentEraNotNext"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"ElectionNotStarted"},{"inputs":[],"type":"error","name":"EmptyValidatorsList"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"EraDurationTooShort"},{"inputs":[],"type":"error","name":"ErasTimestampMustNotBeEqual"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisHashAlreadySet"},{"inputs":[],"type":"error","name":"GenesisHashNotFound"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes32","name":"providedBlobHash","type":"bytes32"},{"internalType":"bytes32","name":"expectedBlobHash","type":"bytes32"}],"type":"error","name":"InvalidBlobHash"},{"inputs":[{"internalType":"uint256","name":"providedLength","type":"uint256"},{"internalType":"uint256","name":"expectedLength","type":"uint256"}],"type":"error","name":"InvalidBlobHashesLength"},{"inputs":[],"type":"error","name":"InvalidElectionDuration"},{"inputs":[],"type":"error","name":"InvalidFROSTAggregatedPublicKey"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureCount"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureLength"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidPreviousCommittedBatchHash"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"requester","type":"address"}],"type":"error","name":"InvalidSigner"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"PredecessorBlockNotFound"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"RewardsCommitmentEraNotPrevious"},{"inputs":[],"type":"error","name":"RewardsCommitmentPredatesGenesis"},{"inputs":[],"type":"error","name":"RewardsCommitmentTimestampNotInPast"},{"inputs":[],"type":"error","name":"RouterGenesisHashNotInitialized"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SignatureVerificationFailed"},{"inputs":[],"type":"error","name":"TimestampInFuture"},{"inputs":[],"type":"error","name":"TimestampOlderThanPreviousEra"},{"inputs":[],"type":"error","name":"TooManyChainCommitments"},{"inputs":[],"type":"error","name":"TooManyRewardsCommitments"},{"inputs":[],"type":"error","name":"TooManyValidatorsCommitments"},{"inputs":[],"type":"error","name":"TransferFromFailed"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownProgram"},{"inputs":[],"type":"error","name":"ValidationBeforeGenesis"},{"inputs":[],"type":"error","name":"ValidationDelayTooBig"},{"inputs":[],"type":"error","name":"ValidatorsAlreadyScheduled"},{"inputs":[],"type":"error","name":"ValidatorsNotFoundForTimestamp"},{"inputs":[],"type":"error","name":"ZeroValueTransfer"},{"inputs":[{"internalType":"bytes32","name":"head","type":"bytes32","indexed":false}],"type":"event","name":"AnnouncesCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BatchCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"topic0","type":"uint256","indexed":true}],"type":"event","name":"DebugEvent","anonymous":true},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32","indexed":false}],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"eraIndex","type":"uint256","indexed":false}],"type":"event","name":"ValidatorsCommittedForEra","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMIT_BATCH_AFTER_COMMIT_CODES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BatchCommitment","name":"_batch","type":"tuple","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint48","name":"blockTimestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBatchHash","type":"bytes32"},{"internalType":"uint8","name":"expiry","type":"uint8"},{"internalType":"struct Gear.ChainCommitment[]","name":"chainCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bool","name":"exited","type":"bool"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"bool","name":"valueToReceiveNegativeSign","type":"bool"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]},{"internalType":"bool","name":"call","type":"bool"}]}]},{"internalType":"bytes32","name":"head","type":"bytes32"}]},{"internalType":"struct Gear.CodeCommitment[]","name":"codeCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"struct Gear.RewardsCommitment[]","name":"rewardsCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.OperatorRewardsCommitment","name":"operators","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}]},{"internalType":"struct Gear.StakerRewardsCommitment","name":"stakers","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.ValidatorsCommitment[]","name":"validatorsCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bytes","name":"verifiableSecretSharingCommitment","type":"bytes"},{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"eraIndex","type":"uint256"}]}]},{"internalType":"enum Gear.SignatureType","name":"_signatureType","type":"uint8"},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithAbiInterface","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithAbiInterfaceAndExecutableBalance","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithExecutableBalance","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address","name":"_middleware","type":"address"},{"internalType":"uint256","name":"_eraDuration","type":"uint256"},{"internalType":"uint256","name":"_electionDuration","type":"uint256"},{"internalType":"uint256","name":"_validationDelay","type":"uint256"},{"internalType":"struct Gear.AggregatedPublicKey","name":"_aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bytes","name":"_verifiableSecretSharingCommitment","type":"bytes"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBatchHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBatchTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"middleware","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCodeValidationBaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCodeValidationExtraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_requester","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32[]","name":"_blobHashes","type":"bytes32[]"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v1","type":"uint8"},{"internalType":"bytes32","name":"_r1","type":"bytes32"},{"internalType":"bytes32","name":"_s1","type":"bytes32"},{"internalType":"uint8","name":"_v2","type":"uint8"},{"internalType":"bytes32","name":"_r2","type":"bytes32"},{"internalType":"bytes32","name":"_s2","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidationOnBehalf"},{"inputs":[{"internalType":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"uint256","name":"newBaseFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCodeValidationBaseFee"},{"inputs":[{"internalType":"uint256","name":"newExtraFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCodeValidationExtraFee"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdFraction","outputs":[{"internalType":"uint128","name":"thresholdNumerator","type":"uint128"},{"internalType":"uint128","name":"thresholdDenominator","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageView","outputs":[{"internalType":"struct IRouter.StorageView","name":"","type":"tuple","components":[{"internalType":"struct Gear.GenesisBlockInfo","name":"genesisBlock","type":"tuple","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint32","name":"number","type":"uint32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.CommittedBatchInfo","name":"latestCommittedBatch","type":"tuple","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.AddressBook","name":"implAddresses","type":"tuple","components":[{"internalType":"address","name":"mirror","type":"address"},{"internalType":"address","name":"wrappedVara","type":"address"},{"internalType":"address","name":"middleware","type":"address"}]},{"internalType":"struct Gear.ValidationSettingsView","name":"validationSettings","type":"tuple","components":[{"internalType":"uint128","name":"thresholdNumerator","type":"uint128"},{"internalType":"uint128","name":"thresholdDenominator","type":"uint128"},{"internalType":"struct Gear.ValidatorsView","name":"validators0","type":"tuple","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"verifiableSecretSharingCommitmentPointer","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"useFromTimestamp","type":"uint256"}]},{"internalType":"struct Gear.ValidatorsView","name":"validators1","type":"tuple","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"verifiableSecretSharingCommitmentPointer","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"useFromTimestamp","type":"uint256"}]}]},{"internalType":"struct Gear.ComputationSettings","name":"computeSettings","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]},{"internalType":"struct Gear.Timelines","name":"timelines","type":"tuple","components":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"election","type":"uint256"},{"internalType":"uint256","name":"validationDelay","type":"uint256"}]},{"internalType":"uint256","name":"programsCount","type":"uint256"},{"internalType":"uint256","name":"validatedCodesCount","type":"uint256"},{"internalType":"uint16","name":"maxValidators","type":"uint16"},{"internalType":"uint256","name":"requestCodeValidationBaseFee","type":"uint256"},{"internalType":"uint256","name":"requestCodeValidationExtraFee","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"timelines","outputs":[{"internalType":"struct Gear.Timelines","name":"","type":"tuple","components":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"election","type":"uint256"},{"internalType":"uint256","name":"validationDelay","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsAggregatedPublicKey","outputs":[{"internalType":"struct Gear.AggregatedPublicKey","name":"","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsVerifiableSecretSharingCommitment","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.","returns":{"_0":"domainSeparator The domain separator."}},"areValidators(address[])":{"details":"Checks if the given addresses are all validators.","returns":{"_0":"areValidators `true` if all addresses are validators, `false` otherwise."}},"codeState(bytes32)":{"details":"Returns the state of code.","returns":{"_0":"codeState The state of the code."}},"codesStates(bytes32[])":{"details":"Returns the states of multiple codes.","returns":{"_0":"codesStates The states of the codes."}},"commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])":{"details":"Commits new batch of changes to `Router` state. `CodeGotValidated` event is emitted for each code in commitment. `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.","params":{"_batch":"The batch commitment data.","_signatureType":"The type of signature to validate.","_signatures":"The signatures for the batch commitment."}},"computeSettings()":{"details":"Returns the computation settings.","returns":{"_0":"computeSettings The computation settings."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createProgram(bytes32,bytes32,address)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, and initializer. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_salt":"The salt for the program creation."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithAbiInterface(bytes32,bytes32,address,address)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_abiInterface":"The ABI interface address for the program.","_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_salt":"The salt for the program creation."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_abiInterface":"The ABI interface address for the program.","_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_deadline":"Deadline for the transaction to be executed.","_initialExecutableBalance":"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_salt":"The salt for the program creation.","_v":"ECDSA signature parameter."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_deadline":"Deadline for the transaction to be executed.","_initialExecutableBalance":"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_salt":"The salt for the program creation.","_v":"ECDSA signature parameter."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"genesisBlockHash()":{"details":"Returns the hash of the genesis block.","returns":{"_0":"genesisBlockHash The hash of the genesis block."}},"genesisTimestamp()":{"details":"Returns the timestamp of the genesis block.","returns":{"_0":"genesisTimestamp The timestamp of the genesis block."}},"initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])":{"details":"Initializes the `Router` with the given parameters.","params":{"_aggregatedPublicKey":"The aggregated public key of the initial validators. Will be used in future.","_electionDuration":"The duration of an election in seconds.","_eraDuration":"The duration of an era in seconds.","_middleware":"The address of the middleware contract.","_mirror":"The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.","_owner":"The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.","_validationDelay":"The delay before validators can start validating in seconds.","_validators":"The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, so the list of validators is used for signature verification.","_verifiableSecretSharingCommitment":"The verifiable secret sharing commitment of the initial validators. Will be used in future.","_wrappedVara":"The address of the `WrappedVara` (WVARA) ERC20 token contract."}},"isValidator(address)":{"details":"Checks if the given address is a validator.","returns":{"_0":"isValidator `true` if the address is a validator, `false` otherwise."}},"latestCommittedBatchHash()":{"details":"Returns the hash of the latest committed batch.","returns":{"_0":"latestCommittedBatchHash The hash of the latest committed batch."}},"latestCommittedBatchTimestamp()":{"details":"Returns the timestamp of the latest committed batch.","returns":{"_0":"latestCommittedBatchTimestamp The timestamp of the latest committed batch."}},"lookupGenesisHash()":{"details":"Looks up the genesis hash from previous blocks."},"middleware()":{"details":"Returns the address of the middleware implementation.","returns":{"_0":"middleware The address of the middleware implementation."}},"mirrorImpl()":{"details":"Returns the address of the mirror implementation.","returns":{"_0":"mirrorImpl The address of the mirror implementation."}},"nonces(address)":{"details":"Returns the next unused nonce for an address."},"owner()":{"details":"Returns the address of the current owner."},"pause()":{"details":"Pauses the contract."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise.","returns":{"_0":"isPaused `true` if the contract is paused, `false` otherwise."}},"programCodeId(address)":{"details":"Returns the code ID of the given program.","returns":{"_0":"codeId The code ID of the program."}},"programsCodeIds(address[])":{"details":"Returns the code IDs of the given programs.","returns":{"_0":"codesIds The code IDs of the programs."}},"programsCount()":{"details":"Returns the count of programs.","returns":{"_0":"programsCount The count of programs."}},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":"","details":"Reinitializes the `Router` to set up new storage layout. This function is intended to be called during an upgrade/wipe and can contain any logic. NOTE: Don't forget to bump `reinitializer(version)` in modifier!"},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)":{"details":"Requests code validation for the given code ID. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` in the WVARA ERC20 token.","params":{"_codeId":"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).","_deadline":"Deadline for the transaction to be executed.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_v":"ECDSA signature parameter."}},"requestCodeValidationBaseFee()":{"details":"Returns the base fee for requesting code validation in WVARA ERC20 token.","returns":{"_0":"requestCodeValidationBaseFee The base fee for requesting code validation."}},"requestCodeValidationExtraFee()":{"details":"Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.","returns":{"_0":"requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else."}},"requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)":{"details":"Requests code validation for the given code ID on behalf of someone else. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` in the WVARA ERC20 token.","params":{"_blobHashes":"The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. This is needed to verify that the transaction has expected blobs attached.","_codeId":"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).","_deadline":"Deadline for the transaction to be executed.","_r1":"ECDSA signature parameter (for requestCodeValidation).","_r2":"ECDSA signature parameter (for permit).","_requester":"The address of the requester on behalf of whom the code validation is requested.","_s1":"ECDSA signature parameter (for requestCodeValidation).","_s2":"ECDSA signature parameter (for permit).","_v1":"ECDSA signature parameter (for requestCodeValidation).","_v2":"ECDSA signature parameter (for permit)."}},"setMirror(address)":{"details":"Sets the `Mirror` implementation address.","params":{"newMirror":"The new mirror implementation address."}},"setRequestCodeValidationBaseFee(uint256)":{"details":"Sets the base fee for requesting code validation in WVARA ERC20 token.","params":{"newBaseFee":"The new base fee for requesting code validation."}},"setRequestCodeValidationExtraFee(uint256)":{"details":"Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.","params":{"newExtraFee":"The new extra fee for requesting code validation on behalf of someone else."}},"signingThresholdFraction()":{"details":"Returns the signing threshold fraction.","returns":{"thresholdDenominator":"The denominator of the signing threshold fraction.","thresholdNumerator":"The numerator of the signing threshold fraction."}},"storageView()":{"details":"Returns the storage view of the contract storage.","returns":{"_0":"storageView The storage view of the contract storage."}},"timelines()":{"details":"Returns the timelines.","returns":{"_0":"timelines The timelines."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause()":{"details":"Unpauses the contract."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"validatedCodesCount()":{"details":"Returns the count of validated codes.","returns":{"_0":"validatedCodesCount The count of validated codes."}},"validators()":{"details":"Returns the list of current validators.","returns":{"_0":"validators The list of current validators."}},"validatorsAggregatedPublicKey()":{"details":"Returns the aggregated public key of the current validators.","returns":{"_0":"validatorsAggregatedPublicKey The aggregated public key of the current validators."}},"validatorsCount()":{"details":"Returns the count of current validators.","returns":{"_0":"validatorsCount The count of current validators."}},"validatorsThreshold()":{"details":"Returns the threshold number of validators required for a valid signature.","returns":{"_0":"threshold The threshold number of validators required for a valid signature."}},"validatorsVerifiableSecretSharingCommitment()":{"details":"Returns the verifiable secret sharing commitment of the current validators. This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.","returns":{"_0":"validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators."}},"wrappedVara()":{"details":"Returns the address of the wrapped Vara implementation.","returns":{"_0":"wrappedVara The address of the wrapped Vara implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5","urls":["bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb","dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459","urls":["bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13","dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/Router.sol":{"keccak256":"0x0a090acedc80760d771ee67e408c8c9f027dc4bc3caa83d7bd8b37bcf0f3a3ce","urls":["bzz-raw://3c4474194531f871247c34c3eb39279448540efaa7a8e4cbca256da6bab1fd74","dweb:/ipfs/Qma6RWtFftxTg6oUoKaK5cUAMXCTQ5Q7k97QCEEPpHuUji"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Clones.sol":{"keccak256":"0xedec50e3e6f10f016b8f8ea91bc63f69dffe8287e755778a8ef980f51206d1d7","urls":["bzz-raw://789789391f384e4b4925e49818ddac6f19b70f01d90befdeac4e2c69e2926bc3","dweb:/ipfs/QmUgyWxAHKmza1mSQnkxFroBxsnzchUntEjCqsrJfK9SrT"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/ClonesSmall.sol":{"keccak256":"0x453f0262cf06f368b969ea3dbca328ee7fae1c8b73fdbc35ffe8252142d62b70","urls":["bzz-raw://d8237577660ba34d8105a6ec84a699059357471364bd4efdba10195ff93f7d4b","dweb:/ipfs/QmRAky7bp7z3kgd56YwSdU2pRskoPryhQwaR5sCceSC9Lv"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/SSTORE2.sol":{"keccak256":"0xd280ac6c1bf76b0996b061139591884ea767f2fa97c103a4d6abb38c449c2cdd","urls":["bzz-raw://59271a683dc86fde6556b000155742076227a490581f5b38d80bdf7bfe593389","dweb:/ipfs/QmWGXRjg1sDa89XHpTXMT45iJazwc3S5qA8Aio4hbqhhmm"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":82386,"exportedSymbols":{"Clones":[87250],"ClonesSmall":[87334],"ECDSA":[51038],"EIP712Upgradeable":[44416],"FROST":[40965],"Gear":[88588],"Hashes":[41483],"IMiddleware":[74131],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001],"Memory":[41257],"NoncesUpgradeable":[43698],"OwnableUpgradeable":[42322],"PausableUpgradeable":[43858],"ReentrancyGuardTransientUpgradeable":[43943],"Router":[82385],"SSTORE2":[89044],"SlotDerivation":[48965],"StorageSlot":[49089],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:49311:165","nodes":[{"id":79475,"nodeType":"PragmaDirective","src":"74:24:165","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":79477,"nodeType":"ImportDirective","src":"100:101:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":79476,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79479,"nodeType":"ImportDirective","src":"202:98:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":43699,"symbolAliases":[{"foreign":{"id":79478,"name":"NoncesUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43698,"src":"210:17:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79481,"nodeType":"ImportDirective","src":"301:102:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":43859,"symbolAliases":[{"foreign":{"id":79480,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43858,"src":"309:19:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79483,"nodeType":"ImportDirective","src":"404:140:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":79482,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"417:35:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79485,"nodeType":"ImportDirective","src":"545:111:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":44417,"symbolAliases":[{"foreign":{"id":79484,"name":"EIP712Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44416,"src":"553:17:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79487,"nodeType":"ImportDirective","src":"657:88:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":79486,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"665:15:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79489,"nodeType":"ImportDirective","src":"746:80:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":79488,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"754:14:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79491,"nodeType":"ImportDirective","src":"827:74:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":79490,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"835:11:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79493,"nodeType":"ImportDirective","src":"902:75:165","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":51039,"symbolAliases":[{"foreign":{"id":79492,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"910:5:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79495,"nodeType":"ImportDirective","src":"978:52:165","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/FROST.sol","file":"frost-secp256k1-evm/FROST.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":40966,"symbolAliases":[{"foreign":{"id":79494,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"986:5:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79497,"nodeType":"ImportDirective","src":"1031:60:165","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/Memory.sol","file":"frost-secp256k1-evm/utils/Memory.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":79496,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"1039:6:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79499,"nodeType":"ImportDirective","src":"1092:73:165","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":79498,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"1100:6:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79501,"nodeType":"ImportDirective","src":"1166:48:165","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":79500,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"1174:11:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79503,"nodeType":"ImportDirective","src":"1215:40:165","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":79502,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"1223:7:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79505,"nodeType":"ImportDirective","src":"1256:40:165","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":79504,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"1264:7:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79507,"nodeType":"ImportDirective","src":"1297:50:165","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":79506,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"1305:12:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79509,"nodeType":"ImportDirective","src":"1348:48:165","nodes":[],"absolutePath":"src/libraries/Clones.sol","file":"src/libraries/Clones.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":87251,"symbolAliases":[{"foreign":{"id":79508,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87250,"src":"1356:6:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79511,"nodeType":"ImportDirective","src":"1397:58:165","nodes":[],"absolutePath":"src/libraries/ClonesSmall.sol","file":"src/libraries/ClonesSmall.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":87335,"symbolAliases":[{"foreign":{"id":79510,"name":"ClonesSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87334,"src":"1405:11:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79513,"nodeType":"ImportDirective","src":"1456:44:165","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":88589,"symbolAliases":[{"foreign":{"id":79512,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"1464:4:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":79515,"nodeType":"ImportDirective","src":"1501:50:165","nodes":[],"absolutePath":"src/libraries/SSTORE2.sol","file":"src/libraries/SSTORE2.sol","nameLocation":"-1:-1:-1","scope":82386,"sourceUnit":89045,"symbolAliases":[{"foreign":{"id":79514,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89044,"src":"1509:7:165","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82385,"nodeType":"ContractDefinition","src":"1553:47831:165","nodes":[{"id":79532,"nodeType":"VariableDeclaration","src":"1849:106:165","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1874:12:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1849:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":79531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:66:165","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":79535,"nodeType":"VariableDeclaration","src":"2068:111:165","nodes":[],"constant":true,"mutability":"constant","name":"TRANSIENT_STORAGE","nameLocation":"2093:17:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2068:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866303262343635373337666136303435633266663533666232646634336336363931366163323136366661333033323634363638666232663661316438633030","id":79534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:66:165","typeDescriptions":{"typeIdentifier":"t_rational_108631543557424213897897473785501454225913773503351157840763824611960129686528_by_1","typeString":"int_const 1086...(70 digits omitted)...6528"},"value":"0xf02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c00"},"visibility":"private"},{"id":79538,"nodeType":"VariableDeclaration","src":"2186:55:165","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_NAME","nameLocation":"2210:11:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79536,"name":"string","nodeType":"ElementaryTypeName","src":"2186:6:165","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"566172612e45544820526f75746572","id":79537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2224:17:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_ded8ea4cbd8dfac3d256d1ee2019397a32c8630b040ad63275830e967889ecd8","typeString":"literal_string \"Vara.ETH Router\""},"value":"Vara.ETH Router"},"visibility":"private"},{"id":79541,"nodeType":"VariableDeclaration","src":"2247:44:165","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_VERSION","nameLocation":"2271:14:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":79539,"name":"string","nodeType":"ElementaryTypeName","src":"2247:6:165","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"31","id":79540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2288:3:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"},"visibility":"private"},{"id":79544,"nodeType":"VariableDeclaration","src":"2298:73:165","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nameLocation":"2323:40:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79542,"name":"uint256","nodeType":"ElementaryTypeName","src":"2298:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f303030","id":79543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2366:5:165","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1_000"},"visibility":"private"},{"id":79547,"nodeType":"VariableDeclaration","src":"2377:72:165","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nameLocation":"2402:41:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79545,"name":"uint256","nodeType":"ElementaryTypeName","src":"2377:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":79546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2446:3:165","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"private"},{"id":79550,"nodeType":"VariableDeclaration","src":"2592:144:165","nodes":[],"constant":true,"mutability":"constant","name":"REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH","nameLocation":"2617:42:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2592:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833373564326566396239653333633634306132393566353338373364633734383333633364303139663334393436346365326665383839393936326238303937","id":79549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2670:66:165","typeDescriptions":{"typeIdentifier":"t_rational_25041847662038966976180655381136102362768580769727479521951050179079337377943_by_1","typeString":"int_const 2504...(69 digits omitted)...7943"},"value":"0x375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b8097"},"visibility":"private"},{"id":79553,"nodeType":"VariableDeclaration","src":"2743:60:165","nodes":[],"constant":true,"functionSelector":"ad2b3d9a","mutability":"constant","name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","nameLocation":"2767:32:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79551,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":79552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2802:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"id":79556,"nodeType":"VariableDeclaration","src":"2809:59:165","nodes":[],"constant":true,"functionSelector":"4429e24b","mutability":"constant","name":"COMMIT_BATCH_AFTER_COMMIT_CODES","nameLocation":"2833:31:165","scope":82385,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79554,"name":"uint256","nodeType":"ElementaryTypeName","src":"2809:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":79555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2867:1:165","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"id":79560,"nodeType":"EventDefinition","src":"2875:51:165","nodes":[],"anonymous":true,"eventSelector":"e6fc1df15bb41e2a123ea1d440db6747be3ed04da67b92ac280ad10a97b799d8","name":"DebugEvent","nameLocation":"2881:10:165","parameters":{"id":79559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79558,"indexed":true,"mutability":"mutable","name":"topic0","nameLocation":"2908:6:165","nodeType":"VariableDeclaration","scope":79560,"src":"2892:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79557,"name":"uint256","nodeType":"ElementaryTypeName","src":"2892:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2891:24:165"}},{"id":79568,"nodeType":"FunctionDefinition","src":"3000:53:165","nodes":[],"body":{"id":79567,"nodeType":"Block","src":"3014:39:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79564,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"3024:20:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3024:22:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79566,"nodeType":"ExpressionStatement","src":"3024:22:165"}]},"documentation":{"id":79561,"nodeType":"StructuredDocumentation","src":"2932:63:165","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":79562,"nodeType":"ParameterList","parameters":[],"src":"3011:2:165"},"returnParameters":{"id":79563,"nodeType":"ParameterList","parameters":[],"src":"3014:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79772,"nodeType":"FunctionDefinition","src":"4219:2502:165","nodes":[],"body":{"id":79771,"nodeType":"Block","src":"4634:2087:165","nodes":[],"statements":[{"expression":{"arguments":[{"id":79597,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79571,"src":"4659:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79596,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"4644:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4644:22:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79599,"nodeType":"ExpressionStatement","src":"4644:22:165"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79600,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43762,"src":"4676:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4676:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79602,"nodeType":"ExpressionStatement","src":"4676:17:165"},{"expression":{"arguments":[{"id":79604,"name":"EIP712_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79538,"src":"4717:11:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":79605,"name":"EIP712_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79541,"src":"4730:14:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":79603,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44129,"src":"4703:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":79606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4703:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79607,"nodeType":"ExpressionStatement","src":"4703:42:165"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79608,"name":"__Nonces_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43624,"src":"4755:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4755:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79610,"nodeType":"ExpressionStatement","src":"4755:15:165"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79611,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"4780:31:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":79612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4780:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79613,"nodeType":"ExpressionStatement","src":"4780:33:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79615,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4992:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":79616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4998:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"4992:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5010:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4992:19:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79619,"name":"InvalidTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74539,"src":"5013:16:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5013:18:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79614,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4984:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4984:48:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79622,"nodeType":"ExpressionStatement","src":"4984:48:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79624,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79581,"src":"5050:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5070:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5050:21:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79627,"name":"InvalidElectionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74542,"src":"5073:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:25:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79623,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5042:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5042:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79630,"nodeType":"ExpressionStatement","src":"5042:57:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79632,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79579,"src":"5117:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":79633,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79581,"src":"5132:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5117:32:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79635,"name":"EraDurationTooShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74545,"src":"5151:19:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5151:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79631,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5109:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5109:64:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79638,"nodeType":"ExpressionStatement","src":"5109:64:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79640,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79583,"src":"5342:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79641,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79579,"src":"5362:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":79642,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79581,"src":"5377:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:32:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79644,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5361:34:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":79645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5398:2:165","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"5361:39:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:58:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":79648,"name":"ValidationDelayTooBig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74550,"src":"5402:21:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":79649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5402:23:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":79639,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5334:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":79650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:92:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79651,"nodeType":"ExpressionStatement","src":"5334:92:165"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":79653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5453:25:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":79652,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82325,"src":"5437:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":79654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79655,"nodeType":"ExpressionStatement","src":"5437:42:165"},{"assignments":[79658],"declarations":[{"constant":false,"id":79658,"mutability":"mutable","name":"router","nameLocation":"5505:6:165","nodeType":"VariableDeclaration","scope":79771,"src":"5489:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":79657,"nodeType":"UserDefinedTypeName","pathNode":{"id":79656,"name":"Storage","nameLocations":["5489:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"5489:7:165"},"referencedDeclaration":74490,"src":"5489:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":79661,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79659,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"5514:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5489:34:165"},{"expression":{"id":79668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79662,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"5534:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5541:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"5534:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79665,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5556:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5561:10:165","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":88040,"src":"5556:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$87576_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":79667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5556:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"5534:39:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79669,"nodeType":"ExpressionStatement","src":"5534:39:165"},{"expression":{"id":79679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79670,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"5583:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5590:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"5583:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":79675,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79573,"src":"5623:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":79676,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79575,"src":"5632:12:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":79677,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79577,"src":"5646:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":79673,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5606:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5611:11:165","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":87452,"src":"5606:16:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$87452_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":79678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5606:52:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"5583:75:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79680,"nodeType":"ExpressionStatement","src":"5583:75:165"},{"expression":{"id":79688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79681,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"5668:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5675:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"5668:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":79685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5694:18:165","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"5668:44:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":79686,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5715:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5720:30:165","memberName":"VALIDATORS_THRESHOLD_NUMERATOR","nodeType":"MemberAccess","referencedDeclaration":87373,"src":"5715:35:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5668:82:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":79689,"nodeType":"ExpressionStatement","src":"5668:82:165"},{"expression":{"id":79697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79690,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"5760:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5767:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"5760:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":79694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5786:20:165","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"5760:46:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":79695,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5809:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5814:32:165","memberName":"VALIDATORS_THRESHOLD_DENOMINATOR","nodeType":"MemberAccess","referencedDeclaration":87377,"src":"5809:37:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5760:86:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":79698,"nodeType":"ExpressionStatement","src":"5760:86:165"},{"expression":{"id":79705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79699,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"5856:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5863:15:165","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"5856:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79702,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5881:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5886:26:165","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":88017,"src":"5881:31:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$87568_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":79704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"5856:58:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":79706,"nodeType":"ExpressionStatement","src":"5856:58:165"},{"expression":{"id":79716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79707,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"5924:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79709,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5931:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"5924:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":79712,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79579,"src":"5958:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79713,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79581,"src":"5972:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79714,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79583,"src":"5991:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79710,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5943:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5948:9:165","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":87671,"src":"5943:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$87671_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":79715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:65:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"5924:84:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":79717,"nodeType":"ExpressionStatement","src":"5924:84:165"},{"expression":{"id":79728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79718,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"6018:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6025:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6018:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6038:13:165","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":87618,"src":"6018:33:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":79725,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79591,"src":"6061:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":79726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6073:6:165","memberName":"length","nodeType":"MemberAccess","src":"6061:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6054:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":79723,"name":"uint16","nodeType":"ElementaryTypeName","src":"6054:6:165","typeDescriptions":{}}},"id":79727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6054:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"6018:62:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":79729,"nodeType":"ExpressionStatement","src":"6018:62:165"},{"assignments":[79731],"declarations":[{"constant":false,"id":79731,"mutability":"mutable","name":"decimalsFactor","nameLocation":"6099:14:165","nodeType":"VariableDeclaration","scope":79771,"src":"6091:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79730,"name":"uint256","nodeType":"ElementaryTypeName","src":"6091:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79739,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":79732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6116:2:165","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":79734,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79575,"src":"6135:12:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79733,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"6122:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":79735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6122:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":79736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6149:8:165","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":46861,"src":"6122:35:165","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":79737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6122:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6116:43:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6091:68:165"},{"expression":{"id":79748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79740,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"6169:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6176:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6169:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6189:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"6169:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79745,"name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79544,"src":"6220:40:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79746,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79731,"src":"6263:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6220:57:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6169:108:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79749,"nodeType":"ExpressionStatement","src":"6169:108:165"},{"expression":{"id":79758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79750,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"6287:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6294:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6287:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6307:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"6287:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79755,"name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79547,"src":"6339:41:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79756,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79731,"src":"6383:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6339:58:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6287:110:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79759,"nodeType":"ExpressionStatement","src":"6287:110:165"},{"expression":{"arguments":[{"expression":{"expression":{"id":79761,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79658,"src":"6479:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79762,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6486:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"6479:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":79763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6505:11:165","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":87679,"src":"6479:37:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},{"id":79764,"name":"_aggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79586,"src":"6530:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"}},{"id":79765,"name":"_verifiableSecretSharingCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79588,"src":"6564:34:165","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":79766,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79591,"src":"6612:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":79767,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6637:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":79768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6643:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"6637:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79760,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82272,"src":"6449:16:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$87429_storage_ptr_$_t_struct$_AggregatedPublicKey_$87408_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,struct Gear.AggregatedPublicKey memory,bytes memory,address[] memory,uint256)"}},"id":79769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6449:213:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79770,"nodeType":"ExpressionStatement","src":"6449:213:165"}]},"documentation":{"id":79569,"nodeType":"StructuredDocumentation","src":"3059:1155:165","text":" @dev Initializes the `Router` with the given parameters.\n @param _owner The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.\n @param _mirror The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.\n @param _wrappedVara The address of the `WrappedVara` (WVARA) ERC20 token contract.\n @param _middleware The address of the middleware contract.\n @param _eraDuration The duration of an era in seconds.\n @param _electionDuration The duration of an election in seconds.\n @param _validationDelay The delay before validators can start validating in seconds.\n @param _aggregatedPublicKey The aggregated public key of the initial validators. Will be used in future.\n @param _verifiableSecretSharingCommitment The verifiable secret sharing commitment of the initial validators. Will be used in future.\n @param _validators The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures,\n so the list of validators is used for signature verification."},"functionSelector":"53f7fd48","implemented":true,"kind":"function","modifiers":[{"id":79594,"kind":"modifierInvocation","modifierName":{"id":79593,"name":"initializer","nameLocations":["4622:11:165"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"4622:11:165"},"nodeType":"ModifierInvocation","src":"4622:11:165"}],"name":"initialize","nameLocation":"4228:10:165","parameters":{"id":79592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79571,"mutability":"mutable","name":"_owner","nameLocation":"4256:6:165","nodeType":"VariableDeclaration","scope":79772,"src":"4248:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79570,"name":"address","nodeType":"ElementaryTypeName","src":"4248:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79573,"mutability":"mutable","name":"_mirror","nameLocation":"4280:7:165","nodeType":"VariableDeclaration","scope":79772,"src":"4272:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79572,"name":"address","nodeType":"ElementaryTypeName","src":"4272:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79575,"mutability":"mutable","name":"_wrappedVara","nameLocation":"4305:12:165","nodeType":"VariableDeclaration","scope":79772,"src":"4297:20:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79574,"name":"address","nodeType":"ElementaryTypeName","src":"4297:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79577,"mutability":"mutable","name":"_middleware","nameLocation":"4335:11:165","nodeType":"VariableDeclaration","scope":79772,"src":"4327:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79576,"name":"address","nodeType":"ElementaryTypeName","src":"4327:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79579,"mutability":"mutable","name":"_eraDuration","nameLocation":"4364:12:165","nodeType":"VariableDeclaration","scope":79772,"src":"4356:20:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79578,"name":"uint256","nodeType":"ElementaryTypeName","src":"4356:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79581,"mutability":"mutable","name":"_electionDuration","nameLocation":"4394:17:165","nodeType":"VariableDeclaration","scope":79772,"src":"4386:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79580,"name":"uint256","nodeType":"ElementaryTypeName","src":"4386:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79583,"mutability":"mutable","name":"_validationDelay","nameLocation":"4429:16:165","nodeType":"VariableDeclaration","scope":79772,"src":"4421:24:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79582,"name":"uint256","nodeType":"ElementaryTypeName","src":"4421:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79586,"mutability":"mutable","name":"_aggregatedPublicKey","nameLocation":"4489:20:165","nodeType":"VariableDeclaration","scope":79772,"src":"4455:54:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":79585,"nodeType":"UserDefinedTypeName","pathNode":{"id":79584,"name":"Gear.AggregatedPublicKey","nameLocations":["4455:4:165","4460:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"4455:24:165"},"referencedDeclaration":87408,"src":"4455:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":79588,"mutability":"mutable","name":"_verifiableSecretSharingCommitment","nameLocation":"4534:34:165","nodeType":"VariableDeclaration","scope":79772,"src":"4519:49:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":79587,"name":"bytes","nodeType":"ElementaryTypeName","src":"4519:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":79591,"mutability":"mutable","name":"_validators","nameLocation":"4597:11:165","nodeType":"VariableDeclaration","scope":79772,"src":"4578:30:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":79589,"name":"address","nodeType":"ElementaryTypeName","src":"4578:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":79590,"nodeType":"ArrayTypeName","src":"4578:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4238:376:165"},"returnParameters":{"id":79595,"nodeType":"ParameterList","parameters":[],"src":"4634:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79867,"nodeType":"FunctionDefinition","src":"7041:3024:165","nodes":[],"body":{"id":79866,"nodeType":"Block","src":"7099:2966:165","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":79782,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"9372:5:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":79783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9372:7:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79781,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"9357:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":79784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9357:23:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79785,"nodeType":"ExpressionStatement","src":"9357:23:165"},{"expression":{"arguments":[{"id":79787,"name":"EIP712_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79538,"src":"9404:11:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":79788,"name":"EIP712_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79541,"src":"9417:14:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":79786,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44129,"src":"9390:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":79789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9390:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79790,"nodeType":"ExpressionStatement","src":"9390:42:165"},{"assignments":[79793],"declarations":[{"constant":false,"id":79793,"mutability":"mutable","name":"router","nameLocation":"9459:6:165","nodeType":"VariableDeclaration","scope":79866,"src":"9443:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":79792,"nodeType":"UserDefinedTypeName","pathNode":{"id":79791,"name":"Storage","nameLocations":["9443:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"9443:7:165"},"referencedDeclaration":74490,"src":"9443:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":79796,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79794,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"9468:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9468:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9443:34:165"},{"expression":{"id":79803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79797,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9487:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9494:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"9487:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79800,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"9509:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9514:10:165","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":88040,"src":"9509:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$87576_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":79802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9509:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"9487:39:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79804,"nodeType":"ExpressionStatement","src":"9487:39:165"},{"expression":{"id":79816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":79805,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9536:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9543:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"9536:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":79812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9605:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9597:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":79810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9597:7:165","typeDescriptions":{}}},"id":79813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9597:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":79814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9620:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":79808,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"9566:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9571:18:165","memberName":"CommittedBatchInfo","nodeType":"MemberAccess","referencedDeclaration":87562,"src":"9566:23:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBatchInfo_$87562_storage_ptr_$","typeString":"type(struct Gear.CommittedBatchInfo storage pointer)"}},"id":79815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9591:4:165","9609:9:165"],"names":["hash","timestamp"],"nodeType":"FunctionCall","src":"9566:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_memory_ptr","typeString":"struct Gear.CommittedBatchInfo memory"}},"src":"9536:87:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":79817,"nodeType":"ExpressionStatement","src":"9536:87:165"},{"expression":{"id":79832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79818,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9633:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9640:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9633:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9653:13:165","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":87618,"src":"9633:33:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"arguments":[{"id":79827,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9702:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":79825,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"9676:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9681:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"9676:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":79828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9676:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":79829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9710:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"9676:38:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":79830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9715:6:165","memberName":"length","nodeType":"MemberAccess","src":"9676:45:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9669:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":79823,"name":"uint16","nodeType":"ElementaryTypeName","src":"9669:6:165","typeDescriptions":{}}},"id":79831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9669:53:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"9633:89:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":79833,"nodeType":"ExpressionStatement","src":"9633:89:165"},{"assignments":[79835],"declarations":[{"constant":false,"id":79835,"mutability":"mutable","name":"decimalsFactor","nameLocation":"9740:14:165","nodeType":"VariableDeclaration","scope":79866,"src":"9732:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79834,"name":"uint256","nodeType":"ElementaryTypeName","src":"9732:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79845,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":79836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9757:2:165","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"expression":{"id":79838,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9776:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9783:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"9776:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9797:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"9776:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":79837,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"9763:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":79841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9763:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":79842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9810:8:165","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":46861,"src":"9763:55:165","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":79843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9763:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9757:63:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9732:88:165"},{"expression":{"id":79854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79846,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9830:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79849,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9837:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9830:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9850:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"9830:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79851,"name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79544,"src":"9881:40:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79852,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79835,"src":"9924:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:57:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9830:108:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79855,"nodeType":"ExpressionStatement","src":"9830:108:165"},{"expression":{"id":79864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":79856,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79793,"src":"9948:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9955:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9948:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9968:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"9948:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79861,"name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79547,"src":"10000:41:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79862,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79835,"src":"10044:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10000:58:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9948:110:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79865,"nodeType":"ExpressionStatement","src":"9948:110:165"}]},"documentation":{"id":79773,"nodeType":"StructuredDocumentation","src":"6727:309:165","text":" @dev Reinitializes the `Router` to set up new storage layout.\n This function is intended to be called during an upgrade/wipe and can contain any logic.\n NOTE: Don't forget to bump `reinitializer(version)` in modifier!\n @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":79776,"kind":"modifierInvocation","modifierName":{"id":79775,"name":"onlyOwner","nameLocations":["7072:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"7072:9:165"},"nodeType":"ModifierInvocation","src":"7072:9:165"},{"arguments":[{"hexValue":"35","id":79778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7096:1:165","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"}],"id":79779,"kind":"modifierInvocation","modifierName":{"id":79777,"name":"reinitializer","nameLocations":["7082:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"7082:13:165"},"nodeType":"ModifierInvocation","src":"7082:16:165"}],"name":"reinitialize","nameLocation":"7050:12:165","parameters":{"id":79774,"nodeType":"ParameterList","parameters":[],"src":"7062:2:165"},"returnParameters":{"id":79780,"nodeType":"ParameterList","parameters":[],"src":"7099:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":79877,"nodeType":"FunctionDefinition","src":"10230:84:165","nodes":[],"body":{"id":79876,"nodeType":"Block","src":"10312:2:165","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":79868,"nodeType":"StructuredDocumentation","src":"10071:154:165","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":79874,"kind":"modifierInvocation","modifierName":{"id":79873,"name":"onlyOwner","nameLocations":["10302:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"10302:9:165"},"nodeType":"ModifierInvocation","src":"10302:9:165"}],"name":"_authorizeUpgrade","nameLocation":"10239:17:165","overrides":{"id":79872,"nodeType":"OverrideSpecifier","overrides":[],"src":"10293:8:165"},"parameters":{"id":79871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79870,"mutability":"mutable","name":"newImplementation","nameLocation":"10265:17:165","nodeType":"VariableDeclaration","scope":79877,"src":"10257:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79869,"name":"address","nodeType":"ElementaryTypeName","src":"10257:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10256:27:165"},"returnParameters":{"id":79875,"nodeType":"ParameterList","parameters":[],"src":"10312:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":79931,"nodeType":"FunctionDefinition","src":"10486:948:165","nodes":[],"body":{"id":79930,"nodeType":"Block","src":"10550:884:165","nodes":[],"statements":[{"assignments":[79886],"declarations":[{"constant":false,"id":79886,"mutability":"mutable","name":"router","nameLocation":"10576:6:165","nodeType":"VariableDeclaration","scope":79930,"src":"10560:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":79885,"nodeType":"UserDefinedTypeName","pathNode":{"id":79884,"name":"Storage","nameLocations":["10560:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"10560:7:165"},"referencedDeclaration":74490,"src":"10560:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":79889,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":79887,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"10585:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10585:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10560:34:165"},{"assignments":[79894],"declarations":[{"constant":false,"id":79894,"mutability":"mutable","name":"validationSettings","nameLocation":"10639:18:165","nodeType":"VariableDeclaration","scope":79930,"src":"10604:53:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView"},"typeName":{"id":79893,"nodeType":"UserDefinedTypeName","pathNode":{"id":79892,"name":"Gear.ValidationSettingsView","nameLocations":["10604:4:165","10609:22:165"],"nodeType":"IdentifierPath","referencedDeclaration":87695,"src":"10604:27:165"},"referencedDeclaration":87695,"src":"10604:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_storage_ptr","typeString":"struct Gear.ValidationSettingsView"}},"visibility":"internal"}],"id":79900,"initialValue":{"arguments":[{"expression":{"id":79897,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"10672:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10679:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"10672:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":79895,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"10660:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":79896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10665:6:165","memberName":"toView","nodeType":"MemberAccess","referencedDeclaration":88587,"src":"10660:11:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$87683_storage_ptr_$returns$_t_struct$_ValidationSettingsView_$87695_memory_ptr_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (struct Gear.ValidationSettingsView memory)"}},"id":79899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10660:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},"nodeType":"VariableDeclarationStatement","src":"10604:94:165"},{"expression":{"arguments":[{"expression":{"id":79902,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"10755:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10762:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"10755:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},{"expression":{"id":79904,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"10810:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10817:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"10810:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},{"expression":{"id":79906,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"10866:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10873:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"10866:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},{"id":79908,"name":"validationSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79894,"src":"10920:18:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},{"expression":{"id":79909,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"10969:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10976:15:165","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"10969:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},{"expression":{"id":79911,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"11016:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11023:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"11016:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},{"expression":{"expression":{"id":79913,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"11061:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11068:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11061:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11081:13:165","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":87612,"src":"11061:33:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79916,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"11129:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11136:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11129:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11149:19:165","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":87615,"src":"11129:39:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79919,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"11197:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11204:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11197:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11217:13:165","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":87618,"src":"11197:33:165","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":79922,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"11274:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11281:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11274:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11294:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"11274:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79925,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79886,"src":"11367:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11374:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11367:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":79927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11387:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"11367:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"},{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"},{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"},{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"},{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"},{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79901,"name":"StorageView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74457,"src":"10715:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_StorageView_$74457_storage_ptr_$","typeString":"type(struct IRouter.StorageView storage pointer)"}},"id":79928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10741:12:165","10788:20:165","10851:13:165","10900:18:165","10952:15:165","11005:9:165","11046:13:165","11108:19:165","11182:13:165","11244:28:165","11336:29:165"],"names":["genesisBlock","latestCommittedBatch","implAddresses","validationSettings","computeSettings","timelines","programsCount","validatedCodesCount","maxValidators","requestCodeValidationBaseFee","requestCodeValidationExtraFee"],"nodeType":"FunctionCall","src":"10715:712:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_memory_ptr","typeString":"struct IRouter.StorageView memory"}},"functionReturnParameters":79883,"id":79929,"nodeType":"Return","src":"10708:719:165"}]},"baseFunctions":[74643],"documentation":{"id":79878,"nodeType":"StructuredDocumentation","src":"10339:142:165","text":" @dev Returns the storage view of the contract storage.\n @return storageView The storage view of the contract storage."},"functionSelector":"c2eb812f","implemented":true,"kind":"function","modifiers":[],"name":"storageView","nameLocation":"10495:11:165","parameters":{"id":79879,"nodeType":"ParameterList","parameters":[],"src":"10506:2:165"},"returnParameters":{"id":79883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79931,"src":"10530:18:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_memory_ptr","typeString":"struct IRouter.StorageView"},"typeName":{"id":79881,"nodeType":"UserDefinedTypeName","pathNode":{"id":79880,"name":"StorageView","nameLocations":["10530:11:165"],"nodeType":"IdentifierPath","referencedDeclaration":74457,"src":"10530:11:165"},"referencedDeclaration":74457,"src":"10530:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_storage_ptr","typeString":"struct IRouter.StorageView"}},"visibility":"internal"}],"src":"10529:20:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79943,"nodeType":"FunctionDefinition","src":"11570:109:165","nodes":[],"body":{"id":79942,"nodeType":"Block","src":"11628:51:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79937,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"11645:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11645:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11655:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"11645:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11668:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"11645:27:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79936,"id":79941,"nodeType":"Return","src":"11638:34:165"}]},"baseFunctions":[74649],"documentation":{"id":79932,"nodeType":"StructuredDocumentation","src":"11440:125:165","text":" @dev Returns the hash of the genesis block.\n @return genesisBlockHash The hash of the genesis block."},"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"11579:16:165","parameters":{"id":79933,"nodeType":"ParameterList","parameters":[],"src":"11595:2:165"},"returnParameters":{"id":79936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79935,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79943,"src":"11619:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11619:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11618:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79955,"nodeType":"FunctionDefinition","src":"11825:113:165","nodes":[],"body":{"id":79954,"nodeType":"Block","src":"11882:56:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79949,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"11899:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11899:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11909:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"11899:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":79952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11922:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"11899:32:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":79948,"id":79953,"nodeType":"Return","src":"11892:39:165"}]},"baseFunctions":[74655],"documentation":{"id":79944,"nodeType":"StructuredDocumentation","src":"11685:135:165","text":" @dev Returns the timestamp of the genesis block.\n @return genesisTimestamp The timestamp of the genesis block."},"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"11834:16:165","parameters":{"id":79945,"nodeType":"ParameterList","parameters":[],"src":"11850:2:165"},"returnParameters":{"id":79948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79955,"src":"11874:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79946,"name":"uint48","nodeType":"ElementaryTypeName","src":"11874:6:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11873:8:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79967,"nodeType":"FunctionDefinition","src":"12100:125:165","nodes":[],"body":{"id":79966,"nodeType":"Block","src":"12166:59:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79961,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"12183:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12183:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12193:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"12183:30:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":79964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12214:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87559,"src":"12183:35:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":79960,"id":79965,"nodeType":"Return","src":"12176:42:165"}]},"baseFunctions":[74661],"documentation":{"id":79956,"nodeType":"StructuredDocumentation","src":"11944:151:165","text":" @dev Returns the hash of the latest committed batch.\n @return latestCommittedBatchHash The hash of the latest committed batch."},"functionSelector":"71a8cf2d","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBatchHash","nameLocation":"12109:24:165","parameters":{"id":79957,"nodeType":"ParameterList","parameters":[],"src":"12133:2:165"},"returnParameters":{"id":79960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79967,"src":"12157:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":79958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12157:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12156:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79979,"nodeType":"FunctionDefinition","src":"12402:134:165","nodes":[],"body":{"id":79978,"nodeType":"Block","src":"12472:64:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79973,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"12489:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12499:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"12489:30:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":79976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12520:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87561,"src":"12489:40:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":79972,"id":79977,"nodeType":"Return","src":"12482:47:165"}]},"baseFunctions":[74667],"documentation":{"id":79968,"nodeType":"StructuredDocumentation","src":"12231:166:165","text":" @dev Returns the timestamp of the latest committed batch.\n @return latestCommittedBatchTimestamp The timestamp of the latest committed batch."},"functionSelector":"d456fd51","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBatchTimestamp","nameLocation":"12411:29:165","parameters":{"id":79969,"nodeType":"ParameterList","parameters":[],"src":"12440:2:165"},"returnParameters":{"id":79972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79979,"src":"12464:6:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":79970,"name":"uint48","nodeType":"ElementaryTypeName","src":"12464:6:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12463:8:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":79991,"nodeType":"FunctionDefinition","src":"12688:106:165","nodes":[],"body":{"id":79990,"nodeType":"Block","src":"12740:54:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79985,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"12757:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12757:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12767:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"12757:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":79988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12781:6:165","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":87445,"src":"12757:30:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79984,"id":79989,"nodeType":"Return","src":"12750:37:165"}]},"baseFunctions":[74673],"documentation":{"id":79980,"nodeType":"StructuredDocumentation","src":"12542:141:165","text":" @dev Returns the address of the mirror implementation.\n @return mirrorImpl The address of the mirror implementation."},"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"12697:10:165","parameters":{"id":79981,"nodeType":"ParameterList","parameters":[],"src":"12707:2:165"},"returnParameters":{"id":79984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":79991,"src":"12731:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79982,"name":"address","nodeType":"ElementaryTypeName","src":"12731:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12730:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80003,"nodeType":"FunctionDefinition","src":"12959:112:165","nodes":[],"body":{"id":80002,"nodeType":"Block","src":"13012:59:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":79997,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"13029:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":79998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13029:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":79999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13039:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"13029:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13053:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"13029:35:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":79996,"id":80001,"nodeType":"Return","src":"13022:42:165"}]},"baseFunctions":[74679],"documentation":{"id":79992,"nodeType":"StructuredDocumentation","src":"12800:154:165","text":" @dev Returns the address of the wrapped Vara implementation.\n @return wrappedVara The address of the wrapped Vara implementation."},"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"12968:11:165","parameters":{"id":79993,"nodeType":"ParameterList","parameters":[],"src":"12979:2:165"},"returnParameters":{"id":79996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80003,"src":"13003:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79994,"name":"address","nodeType":"ElementaryTypeName","src":"13003:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13002:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80015,"nodeType":"FunctionDefinition","src":"13231:110:165","nodes":[],"body":{"id":80014,"nodeType":"Block","src":"13283:58:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80009,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"13300:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13300:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13310:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"13300:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13324:10:165","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":87451,"src":"13300:34:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":80008,"id":80013,"nodeType":"Return","src":"13293:41:165"}]},"baseFunctions":[74685],"documentation":{"id":80004,"nodeType":"StructuredDocumentation","src":"13077:149:165","text":" @dev Returns the address of the middleware implementation.\n @return middleware The address of the middleware implementation."},"functionSelector":"f4f20ac0","implemented":true,"kind":"function","modifiers":[],"name":"middleware","nameLocation":"13240:10:165","parameters":{"id":80005,"nodeType":"ParameterList","parameters":[],"src":"13250:2:165"},"returnParameters":{"id":80008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80015,"src":"13274:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80006,"name":"address","nodeType":"ElementaryTypeName","src":"13274:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13273:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80030,"nodeType":"FunctionDefinition","src":"13534:175:165","nodes":[],"body":{"id":80029,"nodeType":"Block","src":"13629:80:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80024,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"13672:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13672:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80022,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"13646:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13651:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"13646:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13646:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13683:19:165","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"13646:56:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"functionReturnParameters":80021,"id":80028,"nodeType":"Return","src":"13639:63:165"}]},"baseFunctions":[74692],"documentation":{"id":80016,"nodeType":"StructuredDocumentation","src":"13347:182:165","text":" @dev Returns the aggregated public key of the current validators.\n @return validatorsAggregatedPublicKey The aggregated public key of the current validators."},"functionSelector":"3bd109fa","implemented":true,"kind":"function","modifiers":[],"name":"validatorsAggregatedPublicKey","nameLocation":"13543:29:165","parameters":{"id":80017,"nodeType":"ParameterList","parameters":[],"src":"13572:2:165"},"returnParameters":{"id":80021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80030,"src":"13596:31:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":80019,"nodeType":"UserDefinedTypeName","pathNode":{"id":80018,"name":"Gear.AggregatedPublicKey","nameLocations":["13596:4:165","13601:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"13596:24:165"},"referencedDeclaration":87408,"src":"13596:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"}],"src":"13595:33:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80047,"nodeType":"FunctionDefinition","src":"14175:207:165","nodes":[],"body":{"id":80046,"nodeType":"Block","src":"14267:115:165","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80040,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"14323:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14323:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80038,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"14297:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14302:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"14297:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14297:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14334:40:165","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":87416,"src":"14297:77:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":80036,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89044,"src":"14284:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SSTORE2_$89044_$","typeString":"type(library SSTORE2)"}},"id":80037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14292:4:165","memberName":"read","nodeType":"MemberAccess","referencedDeclaration":89017,"src":"14284:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (address) view returns (bytes memory)"}},"id":80044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14284:91:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":80035,"id":80045,"nodeType":"Return","src":"14277:98:165"}]},"baseFunctions":[74698],"documentation":{"id":80031,"nodeType":"StructuredDocumentation","src":"13715:455:165","text":" @dev Returns the verifiable secret sharing commitment of the current validators.\n This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct.\n See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.\n @return validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators."},"functionSelector":"a5d53a44","implemented":true,"kind":"function","modifiers":[],"name":"validatorsVerifiableSecretSharingCommitment","nameLocation":"14184:43:165","parameters":{"id":80032,"nodeType":"ParameterList","parameters":[],"src":"14227:2:165"},"returnParameters":{"id":80035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80047,"src":"14253:12:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":80033,"name":"bytes","nodeType":"ElementaryTypeName","src":"14253:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14252:14:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80094,"nodeType":"FunctionDefinition","src":"14554:375:165","nodes":[],"body":{"id":80093,"nodeType":"Block","src":"14636:293:165","nodes":[],"statements":[{"assignments":[80060],"declarations":[{"constant":false,"id":80060,"mutability":"mutable","name":"_currentValidators","nameLocation":"14670:18:165","nodeType":"VariableDeclaration","scope":80093,"src":"14646:42:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":80059,"nodeType":"UserDefinedTypeName","pathNode":{"id":80058,"name":"Gear.Validators","nameLocations":["14646:4:165","14651:10:165"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"14646:15:165"},"referencedDeclaration":87429,"src":"14646:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":80066,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80063,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"14717:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14717:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80061,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"14691:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14696:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"14691:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14691:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14646:81:165"},{"body":{"id":80089,"nodeType":"Block","src":"14787:114:165","statements":[{"condition":{"id":80084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14805:39:165","subExpression":{"baseExpression":{"expression":{"id":80078,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80060,"src":"14806:18:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14825:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"14806:22:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":80083,"indexExpression":{"baseExpression":{"id":80080,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80051,"src":"14829:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80082,"indexExpression":{"id":80081,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80068,"src":"14841:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14829:14:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14806:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80088,"nodeType":"IfStatement","src":"14801:90:165","trueBody":{"id":80087,"nodeType":"Block","src":"14846:45:165","statements":[{"expression":{"hexValue":"66616c7365","id":80085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14871:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":80055,"id":80086,"nodeType":"Return","src":"14864:12:165"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80071,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80068,"src":"14758:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80072,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80051,"src":"14762:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14774:6:165","memberName":"length","nodeType":"MemberAccess","src":"14762:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14758:22:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80090,"initializationExpression":{"assignments":[80068],"declarations":[{"constant":false,"id":80068,"mutability":"mutable","name":"i","nameLocation":"14751:1:165","nodeType":"VariableDeclaration","scope":80090,"src":"14743:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80067,"name":"uint256","nodeType":"ElementaryTypeName","src":"14743:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80070,"initialValue":{"hexValue":"30","id":80069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14755:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14743:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14782:3:165","subExpression":{"id":80075,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80068,"src":"14782:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80077,"nodeType":"ExpressionStatement","src":"14782:3:165"},"nodeType":"ForStatement","src":"14738:163:165"},{"expression":{"hexValue":"74727565","id":80091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14918:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":80055,"id":80092,"nodeType":"Return","src":"14911:11:165"}]},"baseFunctions":[74707],"documentation":{"id":80048,"nodeType":"StructuredDocumentation","src":"14388:161:165","text":" @dev Checks if the given addresses are all validators.\n @return areValidators `true` if all addresses are validators, `false` otherwise."},"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"14563:13:165","parameters":{"id":80052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80051,"mutability":"mutable","name":"_validators","nameLocation":"14596:11:165","nodeType":"VariableDeclaration","scope":80094,"src":"14577:30:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":80049,"name":"address","nodeType":"ElementaryTypeName","src":"14577:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80050,"nodeType":"ArrayTypeName","src":"14577:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14576:32:165"},"returnParameters":{"id":80055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80094,"src":"14630:4:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80053,"name":"bool","nodeType":"ElementaryTypeName","src":"14630:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14629:6:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80112,"nodeType":"FunctionDefinition","src":"15091:144:165","nodes":[],"body":{"id":80111,"nodeType":"Block","src":"15159:76:165","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80104,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"15202:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15202:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80102,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"15176:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15181:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"15176:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15176:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15213:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"15176:40:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":80109,"indexExpression":{"id":80108,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80097,"src":"15217:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15176:52:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":80101,"id":80110,"nodeType":"Return","src":"15169:59:165"}]},"baseFunctions":[74715],"documentation":{"id":80095,"nodeType":"StructuredDocumentation","src":"14935:151:165","text":" @dev Checks if the given address is a validator.\n @return isValidator `true` if the address is a validator, `false` otherwise."},"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"15100:11:165","parameters":{"id":80098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80097,"mutability":"mutable","name":"_validator","nameLocation":"15120:10:165","nodeType":"VariableDeclaration","scope":80112,"src":"15112:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80096,"name":"address","nodeType":"ElementaryTypeName","src":"15112:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15111:20:165"},"returnParameters":{"id":80101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80112,"src":"15153:4:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80099,"name":"bool","nodeType":"ElementaryTypeName","src":"15153:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15152:6:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80137,"nodeType":"FunctionDefinition","src":"15479:285:165","nodes":[],"body":{"id":80136,"nodeType":"Block","src":"15594:170:165","nodes":[],"statements":[{"assignments":[80124],"declarations":[{"constant":false,"id":80124,"mutability":"mutable","name":"router","nameLocation":"15628:6:165","nodeType":"VariableDeclaration","scope":80136,"src":"15604:30:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80123,"nodeType":"UserDefinedTypeName","pathNode":{"id":80122,"name":"IRouter.Storage","nameLocations":["15604:7:165","15612:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"15604:15:165"},"referencedDeclaration":74490,"src":"15604:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80127,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80125,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"15637:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15637:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15604:42:165"},{"expression":{"components":[{"expression":{"expression":{"id":80128,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80124,"src":"15664:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15671:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"15664:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15690:18:165","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"15664:44:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":80131,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80124,"src":"15710:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15717:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"15710:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15736:20:165","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"15710:46:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":80134,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15663:94:165","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"functionReturnParameters":80119,"id":80135,"nodeType":"Return","src":"15656:101:165"}]},"baseFunctions":[74723],"documentation":{"id":80113,"nodeType":"StructuredDocumentation","src":"15241:233:165","text":" @dev Returns the signing threshold fraction.\n @return thresholdNumerator The numerator of the signing threshold fraction.\n @return thresholdDenominator The denominator of the signing threshold fraction."},"functionSelector":"e3a6684f","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdFraction","nameLocation":"15488:24:165","parameters":{"id":80114,"nodeType":"ParameterList","parameters":[],"src":"15512:2:165"},"returnParameters":{"id":80119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80116,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15544:18:165","nodeType":"VariableDeclaration","scope":80137,"src":"15536:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":80115,"name":"uint128","nodeType":"ElementaryTypeName","src":"15536:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":80118,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15572:20:165","nodeType":"VariableDeclaration","scope":80137,"src":"15564:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":80117,"name":"uint128","nodeType":"ElementaryTypeName","src":"15564:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"15535:58:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80152,"nodeType":"FunctionDefinition","src":"15896:126:165","nodes":[],"body":{"id":80151,"nodeType":"Block","src":"15957:65:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80146,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"16000:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16000:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80144,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"15974:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15979:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"15974:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15974:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80149,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16011:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"15974:41:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":80143,"id":80150,"nodeType":"Return","src":"15967:48:165"}]},"baseFunctions":[74730],"documentation":{"id":80138,"nodeType":"StructuredDocumentation","src":"15770:121:165","text":" @dev Returns the list of current validators.\n @return validators The list of current validators."},"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"15905:10:165","parameters":{"id":80139,"nodeType":"ParameterList","parameters":[],"src":"15915:2:165"},"returnParameters":{"id":80143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80152,"src":"15939:16:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":80140,"name":"address","nodeType":"ElementaryTypeName","src":"15939:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80141,"nodeType":"ArrayTypeName","src":"15939:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"15938:18:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80167,"nodeType":"FunctionDefinition","src":"16161:129:165","nodes":[],"body":{"id":80166,"nodeType":"Block","src":"16218:72:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":80160,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"16261:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16261:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80158,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"16235:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16240:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"16235:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16235:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16272:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"16235:41:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":80164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16277:6:165","memberName":"length","nodeType":"MemberAccess","src":"16235:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80157,"id":80165,"nodeType":"Return","src":"16228:55:165"}]},"baseFunctions":[74736],"documentation":{"id":80153,"nodeType":"StructuredDocumentation","src":"16028:128:165","text":" @dev Returns the count of current validators.\n @return validatorsCount The count of current validators."},"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"16170:15:165","parameters":{"id":80154,"nodeType":"ParameterList","parameters":[],"src":"16185:2:165"},"returnParameters":{"id":80157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80167,"src":"16209:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80155,"name":"uint256","nodeType":"ElementaryTypeName","src":"16209:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16208:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80198,"nodeType":"FunctionDefinition","src":"16491:348:165","nodes":[],"body":{"id":80197,"nodeType":"Block","src":"16552:287:165","nodes":[],"statements":[{"assignments":[80177],"declarations":[{"constant":false,"id":80177,"mutability":"mutable","name":"router","nameLocation":"16586:6:165","nodeType":"VariableDeclaration","scope":80197,"src":"16562:30:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80176,"nodeType":"UserDefinedTypeName","pathNode":{"id":80175,"name":"IRouter.Storage","nameLocations":["16562:7:165","16570:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"16562:15:165"},"referencedDeclaration":74490,"src":"16562:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80180,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80178,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"16595:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16595:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16562:42:165"},{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":80185,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80177,"src":"16685:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":80183,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"16659:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16664:20:165","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"16659:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":80186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16659:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":80187,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16693:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"16659:38:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":80188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16698:6:165","memberName":"length","nodeType":"MemberAccess","src":"16659:45:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":80189,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80177,"src":"16718:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16725:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"16718:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16744:18:165","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"16718:44:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":80192,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80177,"src":"16776:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16783:18:165","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"16776:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":80194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16802:20:165","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"16776:46:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":80181,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"16621:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16626:19:165","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":88475,"src":"16621:24:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint128_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint256,uint128,uint128) pure returns (uint256)"}},"id":80195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16621:211:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80172,"id":80196,"nodeType":"Return","src":"16614:218:165"}]},"baseFunctions":[74742],"documentation":{"id":80168,"nodeType":"StructuredDocumentation","src":"16296:190:165","text":" @dev Returns the threshold number of validators required for a valid signature.\n @return threshold The threshold number of validators required for a valid signature."},"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"16500:19:165","parameters":{"id":80169,"nodeType":"ParameterList","parameters":[],"src":"16519:2:165"},"returnParameters":{"id":80172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80198,"src":"16543:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80170,"name":"uint256","nodeType":"ElementaryTypeName","src":"16543:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16542:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80212,"nodeType":"FunctionDefinition","src":"17011:122:165","nodes":[],"body":{"id":80211,"nodeType":"Block","src":"17095:38:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80207,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"17112:5:165","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Router_$82385_$","typeString":"type(contract super Router)"}},"id":80208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17118:6:165","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":43784,"src":"17112:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":80209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17112:14:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":80206,"id":80210,"nodeType":"Return","src":"17105:21:165"}]},"baseFunctions":[43784,74748],"documentation":{"id":80199,"nodeType":"StructuredDocumentation","src":"16845:161:165","text":" @dev Returns true if the contract is paused, and false otherwise.\n @return isPaused `true` if the contract is paused, `false` otherwise."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"17020:6:165","overrides":{"id":80203,"nodeType":"OverrideSpecifier","overrides":[{"id":80201,"name":"IRouter","nameLocations":["17050:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"17050:7:165"},{"id":80202,"name":"PausableUpgradeable","nameLocations":["17059:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":43858,"src":"17059:19:165"}],"src":"17041:38:165"},"parameters":{"id":80200,"nodeType":"ParameterList","parameters":[],"src":"17026:2:165"},"returnParameters":{"id":80206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80205,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80212,"src":"17089:4:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80204,"name":"bool","nodeType":"ElementaryTypeName","src":"17089:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17088:6:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80224,"nodeType":"FunctionDefinition","src":"17258:130:165","nodes":[],"body":{"id":80223,"nodeType":"Block","src":"17339:49:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80219,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"17356:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17356:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80221,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17366:15:165","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"17356:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":80218,"id":80222,"nodeType":"Return","src":"17349:32:165"}]},"baseFunctions":[74755],"documentation":{"id":80213,"nodeType":"StructuredDocumentation","src":"17139:114:165","text":" @dev Returns the computation settings.\n @return computeSettings The computation settings."},"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"17267:15:165","parameters":{"id":80214,"nodeType":"ParameterList","parameters":[],"src":"17282:2:165"},"returnParameters":{"id":80218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80224,"src":"17306:31:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":80216,"nodeType":"UserDefinedTypeName","pathNode":{"id":80215,"name":"Gear.ComputationSettings","nameLocations":["17306:4:165","17311:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":87568,"src":"17306:24:165"},"referencedDeclaration":87568,"src":"17306:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"17305:33:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80241,"nodeType":"FunctionDefinition","src":"17497:134:165","nodes":[],"body":{"id":80240,"nodeType":"Block","src":"17570:61:165","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80233,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"17587:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17587:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17597:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"17587:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17610:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"17587:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80238,"indexExpression":{"id":80237,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80227,"src":"17616:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17587:37:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"functionReturnParameters":80232,"id":80239,"nodeType":"Return","src":"17580:44:165"}]},"baseFunctions":[74764],"documentation":{"id":80225,"nodeType":"StructuredDocumentation","src":"17394:98:165","text":" @dev Returns the state of code.\n @return codeState The state of the code."},"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"17506:9:165","parameters":{"id":80228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80227,"mutability":"mutable","name":"_codeId","nameLocation":"17524:7:165","nodeType":"VariableDeclaration","scope":80241,"src":"17516:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17516:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17515:17:165"},"returnParameters":{"id":80232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80231,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80241,"src":"17554:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"typeName":{"id":80230,"nodeType":"UserDefinedTypeName","pathNode":{"id":80229,"name":"Gear.CodeState","nameLocations":["17554:4:165","17559:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17554:14:165"},"referencedDeclaration":87556,"src":"17554:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"17553:16:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80300,"nodeType":"FunctionDefinition","src":"17755:378:165","nodes":[],"body":{"id":80299,"nodeType":"Block","src":"17852:281:165","nodes":[],"statements":[{"assignments":[80254],"declarations":[{"constant":false,"id":80254,"mutability":"mutable","name":"router","nameLocation":"17878:6:165","nodeType":"VariableDeclaration","scope":80299,"src":"17862:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80253,"nodeType":"UserDefinedTypeName","pathNode":{"id":80252,"name":"Storage","nameLocations":["17862:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"17862:7:165"},"referencedDeclaration":74490,"src":"17862:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80257,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80255,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"17887:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17887:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17862:34:165"},{"assignments":[80263],"declarations":[{"constant":false,"id":80263,"mutability":"mutable","name":"res","nameLocation":"17931:3:165","nodeType":"VariableDeclaration","scope":80299,"src":"17907:27:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":80261,"nodeType":"UserDefinedTypeName","pathNode":{"id":80260,"name":"Gear.CodeState","nameLocations":["17907:4:165","17912:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17907:14:165"},"referencedDeclaration":87556,"src":"17907:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":80262,"nodeType":"ArrayTypeName","src":"17907:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":80271,"initialValue":{"arguments":[{"expression":{"id":80268,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80245,"src":"17958:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17968:6:165","memberName":"length","nodeType":"MemberAccess","src":"17958:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17937:20:165","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":80265,"nodeType":"UserDefinedTypeName","pathNode":{"id":80264,"name":"Gear.CodeState","nameLocations":["17941:4:165","17946:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17941:14:165"},"referencedDeclaration":87556,"src":"17941:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":80266,"nodeType":"ArrayTypeName","src":"17941:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":80270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17937:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17907:68:165"},{"body":{"id":80295,"nodeType":"Block","src":"18033:73:165","statements":[{"expression":{"id":80293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":80283,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80263,"src":"18047:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":80285,"indexExpression":{"id":80284,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80273,"src":"18051:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18047:6:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":80286,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80254,"src":"18056:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18063:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18056:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18076:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"18056:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80292,"indexExpression":{"baseExpression":{"id":80289,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80245,"src":"18082:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80291,"indexExpression":{"id":80290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80273,"src":"18092:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18082:12:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18056:39:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"18047:48:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":80294,"nodeType":"ExpressionStatement","src":"18047:48:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80276,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80273,"src":"18006:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80277,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80245,"src":"18010:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18020:6:165","memberName":"length","nodeType":"MemberAccess","src":"18010:16:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18006:20:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80296,"initializationExpression":{"assignments":[80273],"declarations":[{"constant":false,"id":80273,"mutability":"mutable","name":"i","nameLocation":"17999:1:165","nodeType":"VariableDeclaration","scope":80296,"src":"17991:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80272,"name":"uint256","nodeType":"ElementaryTypeName","src":"17991:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80275,"initialValue":{"hexValue":"30","id":80274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18003:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17991:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18028:3:165","subExpression":{"id":80280,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80273,"src":"18028:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80282,"nodeType":"ExpressionStatement","src":"18028:3:165"},"nodeType":"ForStatement","src":"17986:120:165"},{"expression":{"id":80297,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80263,"src":"18123:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":80251,"id":80298,"nodeType":"Return","src":"18116:10:165"}]},"baseFunctions":[74775],"documentation":{"id":80242,"nodeType":"StructuredDocumentation","src":"17637:113:165","text":" @dev Returns the states of multiple codes.\n @return codesStates The states of the codes."},"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"17764:11:165","parameters":{"id":80246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80245,"mutability":"mutable","name":"_codesIds","nameLocation":"17795:9:165","nodeType":"VariableDeclaration","scope":80300,"src":"17776:28:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17776:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80244,"nodeType":"ArrayTypeName","src":"17776:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"17775:30:165"},"returnParameters":{"id":80251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80300,"src":"17827:23:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":80248,"nodeType":"UserDefinedTypeName","pathNode":{"id":80247,"name":"Gear.CodeState","nameLocations":["17827:4:165","17832:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17827:14:165"},"referencedDeclaration":87556,"src":"17827:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":80249,"nodeType":"ArrayTypeName","src":"17827:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"17826:25:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80316,"nodeType":"FunctionDefinition","src":"18259:140:165","nodes":[],"body":{"id":80315,"nodeType":"Block","src":"18332:67:165","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80308,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"18349:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18349:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18359:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18349:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18372:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"18349:31:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":80313,"indexExpression":{"id":80312,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80303,"src":"18381:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18349:43:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":80307,"id":80314,"nodeType":"Return","src":"18342:50:165"}]},"baseFunctions":[74783],"documentation":{"id":80301,"nodeType":"StructuredDocumentation","src":"18139:115:165","text":" @dev Returns the code ID of the given program.\n @return codeId The code ID of the program."},"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"18268:13:165","parameters":{"id":80304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80303,"mutability":"mutable","name":"_programId","nameLocation":"18290:10:165","nodeType":"VariableDeclaration","scope":80316,"src":"18282:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80302,"name":"address","nodeType":"ElementaryTypeName","src":"18282:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18281:20:165"},"returnParameters":{"id":80307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80316,"src":"18323:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18323:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18322:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80372,"nodeType":"FunctionDefinition","src":"18531:376:165","nodes":[],"body":{"id":80371,"nodeType":"Block","src":"18628:279:165","nodes":[],"statements":[{"assignments":[80328],"declarations":[{"constant":false,"id":80328,"mutability":"mutable","name":"router","nameLocation":"18654:6:165","nodeType":"VariableDeclaration","scope":80371,"src":"18638:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80327,"nodeType":"UserDefinedTypeName","pathNode":{"id":80326,"name":"Storage","nameLocations":["18638:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"18638:7:165"},"referencedDeclaration":74490,"src":"18638:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80331,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80329,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"18663:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18663:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18638:34:165"},{"assignments":[80336],"declarations":[{"constant":false,"id":80336,"mutability":"mutable","name":"res","nameLocation":"18700:3:165","nodeType":"VariableDeclaration","scope":80371,"src":"18683:20:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80334,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18683:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80335,"nodeType":"ArrayTypeName","src":"18683:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":80343,"initialValue":{"arguments":[{"expression":{"id":80340,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80320,"src":"18720:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18733:6:165","memberName":"length","nodeType":"MemberAccess","src":"18720:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18706:13:165","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":80337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18710:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80338,"nodeType":"ArrayTypeName","src":"18710:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":80342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18706:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"18683:57:165"},{"body":{"id":80367,"nodeType":"Block","src":"18801:79:165","statements":[{"expression":{"id":80365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":80355,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80336,"src":"18815:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":80357,"indexExpression":{"id":80356,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80345,"src":"18819:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18815:6:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":80358,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80328,"src":"18824:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18831:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18824:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18844:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"18824:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":80364,"indexExpression":{"baseExpression":{"id":80361,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80320,"src":"18853:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80363,"indexExpression":{"id":80362,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80345,"src":"18866:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18853:15:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18824:45:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18815:54:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80366,"nodeType":"ExpressionStatement","src":"18815:54:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80345,"src":"18771:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80349,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80320,"src":"18775:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":80350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18788:6:165","memberName":"length","nodeType":"MemberAccess","src":"18775:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18771:23:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80368,"initializationExpression":{"assignments":[80345],"declarations":[{"constant":false,"id":80345,"mutability":"mutable","name":"i","nameLocation":"18764:1:165","nodeType":"VariableDeclaration","scope":80368,"src":"18756:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80344,"name":"uint256","nodeType":"ElementaryTypeName","src":"18756:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80347,"initialValue":{"hexValue":"30","id":80346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18768:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18756:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18796:3:165","subExpression":{"id":80352,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80345,"src":"18796:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80354,"nodeType":"ExpressionStatement","src":"18796:3:165"},"nodeType":"ForStatement","src":"18751:129:165"},{"expression":{"id":80369,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80336,"src":"18897:3:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":80325,"id":80370,"nodeType":"Return","src":"18890:10:165"}]},"baseFunctions":[74793],"documentation":{"id":80317,"nodeType":"StructuredDocumentation","src":"18405:121:165","text":" @dev Returns the code IDs of the given programs.\n @return codesIds The code IDs of the programs."},"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"18540:15:165","parameters":{"id":80321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80320,"mutability":"mutable","name":"_programsIds","nameLocation":"18575:12:165","nodeType":"VariableDeclaration","scope":80372,"src":"18556:31:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":80318,"name":"address","nodeType":"ElementaryTypeName","src":"18556:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80319,"nodeType":"ArrayTypeName","src":"18556:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"18555:33:165"},"returnParameters":{"id":80325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80372,"src":"18610:16:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80322,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18610:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80323,"nodeType":"ArrayTypeName","src":"18610:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"18609:18:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80384,"nodeType":"FunctionDefinition","src":"19024:115:165","nodes":[],"body":{"id":80383,"nodeType":"Block","src":"19079:60:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80378,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"19096:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19096:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19106:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19096:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80381,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19119:13:165","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":87612,"src":"19096:36:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80377,"id":80382,"nodeType":"Return","src":"19089:43:165"}]},"baseFunctions":[74799],"documentation":{"id":80373,"nodeType":"StructuredDocumentation","src":"18913:106:165","text":" @dev Returns the count of programs.\n @return programsCount The count of programs."},"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"19033:13:165","parameters":{"id":80374,"nodeType":"ParameterList","parameters":[],"src":"19046:2:165"},"returnParameters":{"id":80377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80384,"src":"19070:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80375,"name":"uint256","nodeType":"ElementaryTypeName","src":"19070:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19069:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80396,"nodeType":"FunctionDefinition","src":"19276:127:165","nodes":[],"body":{"id":80395,"nodeType":"Block","src":"19337:66:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80390,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"19354:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19354:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80392,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19364:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19354:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19377:19:165","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":87615,"src":"19354:42:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80389,"id":80394,"nodeType":"Return","src":"19347:49:165"}]},"baseFunctions":[74805],"documentation":{"id":80385,"nodeType":"StructuredDocumentation","src":"19145:126:165","text":" @dev Returns the count of validated codes.\n @return validatedCodesCount The count of validated codes."},"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"19285:19:165","parameters":{"id":80386,"nodeType":"ParameterList","parameters":[],"src":"19304:2:165"},"returnParameters":{"id":80389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80396,"src":"19328:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80387,"name":"uint256","nodeType":"ElementaryTypeName","src":"19328:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19327:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80408,"nodeType":"FunctionDefinition","src":"19600:147:165","nodes":[],"body":{"id":80407,"nodeType":"Block","src":"19672:75:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80402,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"19689:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19689:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19699:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19689:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19712:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"19689:51:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80401,"id":80406,"nodeType":"Return","src":"19682:58:165"}]},"baseFunctions":[74811],"documentation":{"id":80397,"nodeType":"StructuredDocumentation","src":"19409:186:165","text":" @dev Returns the base fee for requesting code validation in WVARA ERC20 token.\n @return requestCodeValidationBaseFee The base fee for requesting code validation."},"functionSelector":"188509e9","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidationBaseFee","nameLocation":"19609:28:165","parameters":{"id":80398,"nodeType":"ParameterList","parameters":[],"src":"19637:2:165"},"returnParameters":{"id":80401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80400,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80408,"src":"19663:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80399,"name":"uint256","nodeType":"ElementaryTypeName","src":"19663:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19662:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80420,"nodeType":"FunctionDefinition","src":"19999:149:165","nodes":[],"body":{"id":80419,"nodeType":"Block","src":"20072:76:165","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80414,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"20089:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20089:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20099:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"20089:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20112:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"20089:52:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80413,"id":80418,"nodeType":"Return","src":"20082:59:165"}]},"baseFunctions":[74817],"documentation":{"id":80409,"nodeType":"StructuredDocumentation","src":"19753:241:165","text":" @dev Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\n @return requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else."},"functionSelector":"f1ef31ec","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidationExtraFee","nameLocation":"20008:29:165","parameters":{"id":80410,"nodeType":"ParameterList","parameters":[],"src":"20037:2:165"},"returnParameters":{"id":80413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80420,"src":"20063:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80411,"name":"uint256","nodeType":"ElementaryTypeName","src":"20063:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20062:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80432,"nodeType":"FunctionDefinition","src":"20245:108:165","nodes":[],"body":{"id":80431,"nodeType":"Block","src":"20310:43:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80427,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"20327:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20327:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20337:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"20327:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"functionReturnParameters":80426,"id":80430,"nodeType":"Return","src":"20320:26:165"}]},"baseFunctions":[74824],"documentation":{"id":80421,"nodeType":"StructuredDocumentation","src":"20154:86:165","text":" @dev Returns the timelines.\n @return timelines The timelines."},"functionSelector":"9eb939a8","implemented":true,"kind":"function","modifiers":[],"name":"timelines","nameLocation":"20254:9:165","parameters":{"id":80422,"nodeType":"ParameterList","parameters":[],"src":"20263:2:165"},"returnParameters":{"id":80426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80425,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80432,"src":"20287:21:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_memory_ptr","typeString":"struct Gear.Timelines"},"typeName":{"id":80424,"nodeType":"UserDefinedTypeName","pathNode":{"id":80423,"name":"Gear.Timelines","nameLocations":["20287:4:165","20292:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":87671,"src":"20287:14:165"},"referencedDeclaration":87671,"src":"20287:14:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage_ptr","typeString":"struct Gear.Timelines"}},"visibility":"internal"}],"src":"20286:23:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80442,"nodeType":"FunctionDefinition","src":"20527:104:165","nodes":[],"body":{"id":80441,"nodeType":"Block","src":"20587:44:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80438,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44179,"src":"20604:18:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":80439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20604:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":80437,"id":80440,"nodeType":"Return","src":"20597:27:165"}]},"baseFunctions":[74830],"documentation":{"id":80433,"nodeType":"StructuredDocumentation","src":"20359:163:165","text":" @dev Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.\n @return domainSeparator The domain separator."},"functionSelector":"3644e515","implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"20536:16:165","parameters":{"id":80434,"nodeType":"ParameterList","parameters":[],"src":"20552:2:165"},"returnParameters":{"id":80437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80436,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80442,"src":"20578:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20578:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20577:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":80458,"nodeType":"FunctionDefinition","src":"20795:116:165","nodes":[],"body":{"id":80457,"nodeType":"Block","src":"20852:59:165","nodes":[],"statements":[{"expression":{"id":80455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80450,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"20862:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20862:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20872:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"20862:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20886:6:165","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":87445,"src":"20862:30:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":80454,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80445,"src":"20895:9:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20862:42:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80456,"nodeType":"ExpressionStatement","src":"20862:42:165"}]},"baseFunctions":[74836],"documentation":{"id":80443,"nodeType":"StructuredDocumentation","src":"20662:128:165","text":" @dev Sets the `Mirror` implementation address.\n @param newMirror The new mirror implementation address."},"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":80448,"kind":"modifierInvocation","modifierName":{"id":80447,"name":"onlyOwner","nameLocations":["20842:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"20842:9:165"},"nodeType":"ModifierInvocation","src":"20842:9:165"}],"name":"setMirror","nameLocation":"20804:9:165","parameters":{"id":80446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80445,"mutability":"mutable","name":"newMirror","nameLocation":"20822:9:165","nodeType":"VariableDeclaration","scope":80458,"src":"20814:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80444,"name":"address","nodeType":"ElementaryTypeName","src":"20814:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20813:19:165"},"returnParameters":{"id":80449,"nodeType":"ParameterList","parameters":[],"src":"20852:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80474,"nodeType":"FunctionDefinition","src":"21090:161:165","nodes":[],"body":{"id":80473,"nodeType":"Block","src":"21170:81:165","nodes":[],"statements":[{"expression":{"id":80471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80466,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"21180:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21180:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21190:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"21180:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80469,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21203:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"21180:51:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":80470,"name":"newBaseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80461,"src":"21234:10:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21180:64:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80472,"nodeType":"ExpressionStatement","src":"21180:64:165"}]},"baseFunctions":[74842],"documentation":{"id":80459,"nodeType":"StructuredDocumentation","src":"20917:168:165","text":" @dev Sets the base fee for requesting code validation in WVARA ERC20 token.\n @param newBaseFee The new base fee for requesting code validation."},"functionSelector":"11bec80d","implemented":true,"kind":"function","modifiers":[{"id":80464,"kind":"modifierInvocation","modifierName":{"id":80463,"name":"onlyOwner","nameLocations":["21160:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21160:9:165"},"nodeType":"ModifierInvocation","src":"21160:9:165"}],"name":"setRequestCodeValidationBaseFee","nameLocation":"21099:31:165","parameters":{"id":80462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80461,"mutability":"mutable","name":"newBaseFee","nameLocation":"21139:10:165","nodeType":"VariableDeclaration","scope":80474,"src":"21131:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80460,"name":"uint256","nodeType":"ElementaryTypeName","src":"21131:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21130:20:165"},"returnParameters":{"id":80465,"nodeType":"ParameterList","parameters":[],"src":"21170:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80490,"nodeType":"FunctionDefinition","src":"21485:165:165","nodes":[],"body":{"id":80489,"nodeType":"Block","src":"21567:83:165","nodes":[],"statements":[{"expression":{"id":80487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80482,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"21577:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21577:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21587:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"21577:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21600:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"21577:52:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":80486,"name":"newExtraFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80477,"src":"21632:11:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21577:66:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80488,"nodeType":"ExpressionStatement","src":"21577:66:165"}]},"baseFunctions":[74848],"documentation":{"id":80475,"nodeType":"StructuredDocumentation","src":"21257:223:165","text":" @dev Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\n @param newExtraFee The new extra fee for requesting code validation on behalf of someone else."},"functionSelector":"0b9737ce","implemented":true,"kind":"function","modifiers":[{"id":80480,"kind":"modifierInvocation","modifierName":{"id":80479,"name":"onlyOwner","nameLocations":["21557:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21557:9:165"},"nodeType":"ModifierInvocation","src":"21557:9:165"}],"name":"setRequestCodeValidationExtraFee","nameLocation":"21494:32:165","parameters":{"id":80478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80477,"mutability":"mutable","name":"newExtraFee","nameLocation":"21535:11:165","nodeType":"VariableDeclaration","scope":80490,"src":"21527:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80476,"name":"uint256","nodeType":"ElementaryTypeName","src":"21527:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21526:21:165"},"returnParameters":{"id":80481,"nodeType":"ParameterList","parameters":[],"src":"21567:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80500,"nodeType":"FunctionDefinition","src":"21705:59:165","nodes":[],"body":{"id":80499,"nodeType":"Block","src":"21739:25:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80496,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43833,"src":"21749:6:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":80497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21749:8:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80498,"nodeType":"ExpressionStatement","src":"21749:8:165"}]},"baseFunctions":[74852],"documentation":{"id":80491,"nodeType":"StructuredDocumentation","src":"21656:44:165","text":" @dev Pauses the contract."},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":80494,"kind":"modifierInvocation","modifierName":{"id":80493,"name":"onlyOwner","nameLocations":["21729:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21729:9:165"},"nodeType":"ModifierInvocation","src":"21729:9:165"}],"name":"pause","nameLocation":"21714:5:165","parameters":{"id":80492,"nodeType":"ParameterList","parameters":[],"src":"21719:2:165"},"returnParameters":{"id":80495,"nodeType":"ParameterList","parameters":[],"src":"21739:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":80510,"nodeType":"FunctionDefinition","src":"21821:63:165","nodes":[],"body":{"id":80509,"nodeType":"Block","src":"21857:27:165","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":80506,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43857,"src":"21867:8:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":80507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21867:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80508,"nodeType":"ExpressionStatement","src":"21867:10:165"}]},"baseFunctions":[74856],"documentation":{"id":80501,"nodeType":"StructuredDocumentation","src":"21770:46:165","text":" @dev Unpauses the contract."},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":80504,"kind":"modifierInvocation","modifierName":{"id":80503,"name":"onlyOwner","nameLocations":["21847:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21847:9:165"},"nodeType":"ModifierInvocation","src":"21847:9:165"}],"name":"unpause","nameLocation":"21830:7:165","parameters":{"id":80502,"nodeType":"ParameterList","parameters":[],"src":"21837:2:165"},"returnParameters":{"id":80505,"nodeType":"ParameterList","parameters":[],"src":"21857:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":80565,"nodeType":"FunctionDefinition","src":"21985:385:165","nodes":[],"body":{"id":80564,"nodeType":"Block","src":"22023:347:165","nodes":[],"statements":[{"assignments":[80516],"declarations":[{"constant":false,"id":80516,"mutability":"mutable","name":"router","nameLocation":"22049:6:165","nodeType":"VariableDeclaration","scope":80564,"src":"22033:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80515,"nodeType":"UserDefinedTypeName","pathNode":{"id":80514,"name":"Storage","nameLocations":["22033:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"22033:7:165"},"referencedDeclaration":74490,"src":"22033:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80519,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80517,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"22058:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22058:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"22033:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80521,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80516,"src":"22086:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22093:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22086:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22106:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"22086:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":80526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22122:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22114:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80524,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22114:7:165","typeDescriptions":{}}},"id":80527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22114:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22086:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80529,"name":"GenesisHashAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74553,"src":"22126:21:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22126:23:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80520,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"22078:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22078:72:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80532,"nodeType":"ExpressionStatement","src":"22078:72:165"},{"assignments":[80534],"declarations":[{"constant":false,"id":80534,"mutability":"mutable","name":"genesisHash","nameLocation":"22169:11:165","nodeType":"VariableDeclaration","scope":80564,"src":"22161:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22161:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80540,"initialValue":{"arguments":[{"expression":{"expression":{"id":80536,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80516,"src":"22193:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80537,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22200:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22193:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22213:6:165","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":87573,"src":"22193:26:165","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":80535,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22183:9:165","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22183:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"22161:59:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80542,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80534,"src":"22239:11:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22262:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22254:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22254:7:165","typeDescriptions":{}}},"id":80546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22254:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22239:25:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80548,"name":"GenesisHashNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74556,"src":"22266:19:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22266:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80541,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"22231:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22231:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80551,"nodeType":"ExpressionStatement","src":"22231:57:165"},{"expression":{"id":80562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":80552,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80516,"src":"22299:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22306:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22299:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22319:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"22299:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":80558,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80516,"src":"22336:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22343:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22336:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22356:6:165","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":87573,"src":"22336:26:165","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":80557,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22326:9:165","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22326:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22299:64:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80563,"nodeType":"ExpressionStatement","src":"22299:64:165"}]},"baseFunctions":[74860],"documentation":{"id":80511,"nodeType":"StructuredDocumentation","src":"21909:71:165","text":" @dev Looks up the genesis hash from previous blocks."},"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"21994:17:165","parameters":{"id":80512,"nodeType":"ParameterList","parameters":[],"src":"22011:2:165"},"returnParameters":{"id":80513,"nodeType":"ParameterList","parameters":[],"src":"22023:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80694,"nodeType":"FunctionDefinition","src":"23232:986:165","nodes":[],"body":{"id":80693,"nodeType":"Block","src":"23376:842:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":80583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23403:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80582,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"23394:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23394:11:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":80585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23409:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23394:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80587,"name":"BlobNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"23412:12:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23412:14:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80581,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23386:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23386:41:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80590,"nodeType":"ExpressionStatement","src":"23386:41:165"},{"assignments":[80593],"declarations":[{"constant":false,"id":80593,"mutability":"mutable","name":"router","nameLocation":"23454:6:165","nodeType":"VariableDeclaration","scope":80693,"src":"23438:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80592,"nodeType":"UserDefinedTypeName","pathNode":{"id":80591,"name":"Storage","nameLocations":["23438:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"23438:7:165"},"referencedDeclaration":74490,"src":"23438:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80596,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80594,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"23463:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23463:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"23438:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80598,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80593,"src":"23490:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80599,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23497:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"23490:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80600,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23510:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"23490:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23526:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23518:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23518:7:165","typeDescriptions":{}}},"id":80604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23518:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23490:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80606,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"23530:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23530:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80597,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23482:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23482:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80609,"nodeType":"ExpressionStatement","src":"23482:82:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":80619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":80611,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80593,"src":"23583:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23590:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23583:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80613,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23603:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"23583:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80615,"indexExpression":{"id":80614,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80568,"src":"23609:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23583:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":80616,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"23621:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23626:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"23621:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":80618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23636:7:165","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":87551,"src":"23621:22:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"23583:60:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80620,"name":"CodeAlreadyOnValidationOrValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74565,"src":"23645:34:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23645:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80610,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23575:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23575:107:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80623,"nodeType":"ExpressionStatement","src":"23575:107:165"},{"assignments":[80626],"declarations":[{"constant":false,"id":80626,"mutability":"mutable","name":"_wrappedVara","nameLocation":"23706:12:165","nodeType":"VariableDeclaration","scope":80693,"src":"23693:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":80625,"nodeType":"UserDefinedTypeName","pathNode":{"id":80624,"name":"IWrappedVara","nameLocations":["23693:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"23693:12:165"},"referencedDeclaration":75001,"src":"23693:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":80632,"initialValue":{"arguments":[{"expression":{"expression":{"id":80628,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80593,"src":"23734:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23741:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"23734:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23755:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"23734:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80627,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"23721:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":80631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23721:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"23693:74:165"},{"assignments":[80634],"declarations":[{"constant":false,"id":80634,"mutability":"mutable","name":"baseFee","nameLocation":"23786:7:165","nodeType":"VariableDeclaration","scope":80693,"src":"23778:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80633,"name":"uint256","nodeType":"ElementaryTypeName","src":"23778:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80638,"initialValue":{"expression":{"expression":{"id":80635,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80593,"src":"23796:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23803:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23796:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23816:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"23796:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23778:66:165"},{"clauses":[{"block":{"id":80653,"nodeType":"Block","src":"23937:2:165","statements":[]},"errorName":"","id":80654,"nodeType":"TryCatchClause","src":"23937:2:165"},{"block":{"id":80655,"nodeType":"Block","src":"23946:2:165","statements":[]},"errorName":"","id":80656,"nodeType":"TryCatchClause","src":"23940:8:165"}],"externalCall":{"arguments":[{"expression":{"id":80641,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23878:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23882:6:165","memberName":"sender","nodeType":"MemberAccess","src":"23878:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80645,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23898:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":80644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23890:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80643,"name":"address","nodeType":"ElementaryTypeName","src":"23890:7:165","typeDescriptions":{}}},"id":80646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23890:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80647,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80634,"src":"23905:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80648,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80570,"src":"23914:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80649,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80572,"src":"23925:2:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80650,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80574,"src":"23929:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80651,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80576,"src":"23933:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80639,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80626,"src":"23858:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23871:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"23858:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":80652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23858:78:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80657,"nodeType":"TryStatement","src":"23854:94:165"},{"assignments":[80659],"declarations":[{"constant":false,"id":80659,"mutability":"mutable","name":"success","nameLocation":"23962:7:165","nodeType":"VariableDeclaration","scope":80693,"src":"23957:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80658,"name":"bool","nodeType":"ElementaryTypeName","src":"23957:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":80670,"initialValue":{"arguments":[{"expression":{"id":80662,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23998:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24002:6:165","memberName":"sender","nodeType":"MemberAccess","src":"23998:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80666,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24018:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":80665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24010:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80664,"name":"address","nodeType":"ElementaryTypeName","src":"24010:7:165","typeDescriptions":{}}},"id":80667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24010:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80668,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80634,"src":"24025:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80660,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80626,"src":"23972:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23985:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"23972:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":80669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23972:61:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"23957:76:165"},{"expression":{"arguments":[{"id":80672,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80659,"src":"24051:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80673,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"24060:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24060:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24043:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24043:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80676,"nodeType":"ExpressionStatement","src":"24043:38:165"},{"expression":{"id":80687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":80677,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80593,"src":"24092:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24099:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"24092:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24112:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"24092:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80683,"indexExpression":{"id":80680,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80568,"src":"24118:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24092:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":80684,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"24129:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24134:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"24129:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":80686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24144:19:165","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":87553,"src":"24129:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"24092:71:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":80688,"nodeType":"ExpressionStatement","src":"24092:71:165"},{"eventCall":{"arguments":[{"id":80690,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80568,"src":"24203:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80689,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74512,"src":"24179:23:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":80691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24179:32:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80692,"nodeType":"EmitStatement","src":"24174:37:165"}]},"baseFunctions":[74874],"documentation":{"id":80566,"nodeType":"StructuredDocumentation","src":"22376:851:165","text":" @dev Requests code validation for the given code ID.\n This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar\n attached to it containing WASM bytecode. On EVM, we can only verify that there was\n at least 1 blobhash in a transaction.\n Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()`\n in the WVARA ERC20 token.\n @param _codeId The expected code ID for which the validation is requested.\n It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter."},"functionSelector":"8c4ace6a","implemented":true,"kind":"function","modifiers":[{"id":80579,"kind":"modifierInvocation","modifierName":{"id":80578,"name":"whenNotPaused","nameLocations":["23358:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"23358:13:165"},"nodeType":"ModifierInvocation","src":"23358:13:165"}],"name":"requestCodeValidation","nameLocation":"23241:21:165","parameters":{"id":80577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80568,"mutability":"mutable","name":"_codeId","nameLocation":"23271:7:165","nodeType":"VariableDeclaration","scope":80694,"src":"23263:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23263:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80570,"mutability":"mutable","name":"_deadline","nameLocation":"23288:9:165","nodeType":"VariableDeclaration","scope":80694,"src":"23280:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80569,"name":"uint256","nodeType":"ElementaryTypeName","src":"23280:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80572,"mutability":"mutable","name":"_v","nameLocation":"23305:2:165","nodeType":"VariableDeclaration","scope":80694,"src":"23299:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80571,"name":"uint8","nodeType":"ElementaryTypeName","src":"23299:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80574,"mutability":"mutable","name":"_r","nameLocation":"23317:2:165","nodeType":"VariableDeclaration","scope":80694,"src":"23309:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80573,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23309:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80576,"mutability":"mutable","name":"_s","nameLocation":"23329:2:165","nodeType":"VariableDeclaration","scope":80694,"src":"23321:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23321:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23262:70:165"},"returnParameters":{"id":80580,"nodeType":"ParameterList","parameters":[],"src":"23376:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80960,"nodeType":"FunctionDefinition","src":"25725:2418:165","nodes":[],"body":{"id":80959,"nodeType":"Block","src":"26035:2108:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":80723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26062:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80722,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26053:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26053:11:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":80725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26068:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26053:16:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80727,"name":"BlobNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"26071:12:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26071:14:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80721,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26045:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26045:41:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80730,"nodeType":"ExpressionStatement","src":"26045:41:165"},{"assignments":[80733],"declarations":[{"constant":false,"id":80733,"mutability":"mutable","name":"router","nameLocation":"26113:6:165","nodeType":"VariableDeclaration","scope":80959,"src":"26097:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":80732,"nodeType":"UserDefinedTypeName","pathNode":{"id":80731,"name":"Storage","nameLocations":["26097:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"26097:7:165"},"referencedDeclaration":74490,"src":"26097:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":80736,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":80734,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"26122:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":80735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26122:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"26097:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80738,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80733,"src":"26149:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26156:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"26149:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":80740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26169:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"26149:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26185:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26177:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80741,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26177:7:165","typeDescriptions":{}}},"id":80744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26177:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26149:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80746,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"26189:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26189:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80737,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26141:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26141:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80749,"nodeType":"ExpressionStatement","src":"26141:82:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":80759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":80751,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80733,"src":"26242:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26249:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"26242:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26262:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"26242:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80755,"indexExpression":{"id":80754,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"26268:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26242:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":80756,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"26280:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26285:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"26280:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":80758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26295:7:165","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":87551,"src":"26280:22:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"26242:60:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80760,"name":"CodeAlreadyOnValidationOrValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74565,"src":"26304:34:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26304:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80750,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26234:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26234:107:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80763,"nodeType":"ExpressionStatement","src":"26234:107:165"},{"assignments":[80765],"declarations":[{"constant":false,"id":80765,"mutability":"mutable","name":"_blobHashesLength","nameLocation":"26360:17:165","nodeType":"VariableDeclaration","scope":80959,"src":"26352:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80764,"name":"uint256","nodeType":"ElementaryTypeName","src":"26352:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80767,"initialValue":{"hexValue":"30","id":80766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26380:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26352:29:165"},{"body":{"id":80783,"nodeType":"Block","src":"26404:142:165","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80770,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80765,"src":"26431:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80769,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26422:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26422:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":80774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26461:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26453:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":80772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26453:7:165","typeDescriptions":{}}},"id":80775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26453:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26422:41:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80779,"nodeType":"IfStatement","src":"26418:85:165","trueBody":{"id":80778,"nodeType":"Block","src":"26465:38:165","statements":[{"id":80777,"nodeType":"Break","src":"26483:5:165"}]}},{"expression":{"id":80781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26516:19:165","subExpression":{"id":80780,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80765,"src":"26516:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80782,"nodeType":"ExpressionStatement","src":"26516:19:165"}]},"condition":{"hexValue":"74727565","id":80768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26398:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":80784,"nodeType":"WhileStatement","src":"26391:155:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80786,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80702,"src":"26564:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26576:6:165","memberName":"length","nodeType":"MemberAccess","src":"26564:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80788,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80765,"src":"26586:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26564:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":80791,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80702,"src":"26629:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26641:6:165","memberName":"length","nodeType":"MemberAccess","src":"26629:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80793,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80765,"src":"26649:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80790,"name":"InvalidBlobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74572,"src":"26605:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":80794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:62:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80785,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26556:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26556:112:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80796,"nodeType":"ExpressionStatement","src":"26556:112:165"},{"body":{"id":80829,"nodeType":"Block","src":"26728:174:165","statements":[{"assignments":[80809],"declarations":[{"constant":false,"id":80809,"mutability":"mutable","name":"expectedBlobHash","nameLocation":"26750:16:165","nodeType":"VariableDeclaration","scope":80829,"src":"26742:24:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26742:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80813,"initialValue":{"arguments":[{"id":80811,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80798,"src":"26778:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80810,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26769:8:165","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":80812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26769:11:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"26742:38:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":80819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":80815,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80702,"src":"26802:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80817,"indexExpression":{"id":80816,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80798,"src":"26814:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26802:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80818,"name":"expectedBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80809,"src":"26820:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26802:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":80821,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80798,"src":"26854:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":80822,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80702,"src":"26857:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80824,"indexExpression":{"id":80823,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80798,"src":"26869:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26857:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80825,"name":"expectedBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80809,"src":"26873:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80820,"name":"InvalidBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74581,"src":"26838:15:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_error_$","typeString":"function (uint256,bytes32,bytes32) pure returns (error)"}},"id":80826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26838:52:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80814,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26794:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26794:97:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80828,"nodeType":"ExpressionStatement","src":"26794:97:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80801,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80798,"src":"26699:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":80802,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80702,"src":"26703:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":80803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26715:6:165","memberName":"length","nodeType":"MemberAccess","src":"26703:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26699:22:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80830,"initializationExpression":{"assignments":[80798],"declarations":[{"constant":false,"id":80798,"mutability":"mutable","name":"i","nameLocation":"26692:1:165","nodeType":"VariableDeclaration","scope":80830,"src":"26684:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80797,"name":"uint256","nodeType":"ElementaryTypeName","src":"26684:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80800,"initialValue":{"hexValue":"30","id":80799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26696:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26684:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":80806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26723:3:165","subExpression":{"id":80805,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80798,"src":"26723:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80807,"nodeType":"ExpressionStatement","src":"26723:3:165"},"nodeType":"ForStatement","src":"26679:223:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80832,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26978:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":80833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26984:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"26978:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":80834,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"26997:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26978:28:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":80837,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"27025:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80836,"name":"ExpiredSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74586,"src":"27008:16:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":80838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27008:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80831,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26970:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26970:66:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80840,"nodeType":"ExpressionStatement","src":"26970:66:165"},{"assignments":[80842],"declarations":[{"constant":false,"id":80842,"mutability":"mutable","name":"structHash","nameLocation":"27055:10:165","nodeType":"VariableDeclaration","scope":80959,"src":"27047:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80841,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27047:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80861,"initialValue":{"arguments":[{"arguments":[{"id":80846,"name":"REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79550,"src":"27119:42:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80847,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80697,"src":"27179:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80848,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"27207:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":80852,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80702,"src":"27259:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}],"expression":{"id":80850,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27242:3:165","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":80851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27246:12:165","memberName":"encodePacked","nodeType":"MemberAccess","src":"27242:16:165","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":80853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27242:29:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":80849,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"27232:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":80854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27232:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":80856,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80697,"src":"27300:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80855,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43672,"src":"27290:9:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":80857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27290:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80858,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"27329:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80844,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27091:3:165","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":80845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27095:6:165","memberName":"encode","nodeType":"MemberAccess","src":"27091:10:165","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":80859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27091:261:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":80843,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"27068:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":80860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27068:294:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27047:315:165"},{"assignments":[80863],"declarations":[{"constant":false,"id":80863,"mutability":"mutable","name":"hash","nameLocation":"27381:4:165","nodeType":"VariableDeclaration","scope":80959,"src":"27373:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80862,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27373:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":80867,"initialValue":{"arguments":[{"id":80865,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80842,"src":"27405:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80864,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44218,"src":"27388:16:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":80866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27388:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27373:43:165"},{"assignments":[80869],"declarations":[{"constant":false,"id":80869,"mutability":"mutable","name":"signer","nameLocation":"27435:6:165","nodeType":"VariableDeclaration","scope":80959,"src":"27427:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80868,"name":"address","nodeType":"ElementaryTypeName","src":"27427:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":80877,"initialValue":{"arguments":[{"id":80872,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80863,"src":"27458:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80873,"name":"_v1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80706,"src":"27464:3:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80874,"name":"_r1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80708,"src":"27469:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80875,"name":"_s1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80710,"src":"27474:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80870,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"27444:5:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$51038_$","typeString":"type(library ECDSA)"}},"id":80871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27450:7:165","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":50988,"src":"27444:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":80876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27444:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"27427:51:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":80881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80879,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"27496:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80880,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80697,"src":"27506:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27496:20:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":80883,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80869,"src":"27532:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80884,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80697,"src":"27540:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":80882,"name":"InvalidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74593,"src":"27518:13:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":80885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27518:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80878,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"27488:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27488:64:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80887,"nodeType":"ExpressionStatement","src":"27488:64:165"},{"assignments":[80890],"declarations":[{"constant":false,"id":80890,"mutability":"mutable","name":"_wrappedVara","nameLocation":"27576:12:165","nodeType":"VariableDeclaration","scope":80959,"src":"27563:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":80889,"nodeType":"UserDefinedTypeName","pathNode":{"id":80888,"name":"IWrappedVara","nameLocations":["27563:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"27563:12:165"},"referencedDeclaration":75001,"src":"27563:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":80896,"initialValue":{"arguments":[{"expression":{"expression":{"id":80892,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80733,"src":"27604:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27611:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"27604:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":80894,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27625:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"27604:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80891,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"27591:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":80895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27591:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"27563:74:165"},{"assignments":[80898],"declarations":[{"constant":false,"id":80898,"mutability":"mutable","name":"fee","nameLocation":"27656:3:165","nodeType":"VariableDeclaration","scope":80959,"src":"27648:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80897,"name":"uint256","nodeType":"ElementaryTypeName","src":"27648:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80906,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":80899,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80733,"src":"27674:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27681:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27674:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27694:28:165","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"27674:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":80902,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80733,"src":"27725:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27732:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27725:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27745:29:165","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"27725:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27674:100:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27648:126:165"},{"clauses":[{"block":{"id":80920,"nodeType":"Block","src":"27866:2:165","statements":[]},"errorName":"","id":80921,"nodeType":"TryCatchClause","src":"27866:2:165"},{"block":{"id":80922,"nodeType":"Block","src":"27875:2:165","statements":[]},"errorName":"","id":80923,"nodeType":"TryCatchClause","src":"27869:8:165"}],"externalCall":{"arguments":[{"id":80909,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80697,"src":"27808:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80912,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27828:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":80911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27820:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80910,"name":"address","nodeType":"ElementaryTypeName","src":"27820:7:165","typeDescriptions":{}}},"id":80913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27820:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80914,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80898,"src":"27835:3:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80915,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80704,"src":"27840:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80916,"name":"_v2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80712,"src":"27851:3:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":80917,"name":"_r2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80714,"src":"27856:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80918,"name":"_s2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80716,"src":"27861:3:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":80907,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80890,"src":"27788:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27801:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"27788:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":80919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27788:77:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80924,"nodeType":"TryStatement","src":"27784:93:165"},{"assignments":[80926],"declarations":[{"constant":false,"id":80926,"mutability":"mutable","name":"success","nameLocation":"27891:7:165","nodeType":"VariableDeclaration","scope":80959,"src":"27886:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80925,"name":"bool","nodeType":"ElementaryTypeName","src":"27886:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":80936,"initialValue":{"arguments":[{"id":80929,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80697,"src":"27927:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":80932,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27947:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":80931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27939:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80930,"name":"address","nodeType":"ElementaryTypeName","src":"27939:7:165","typeDescriptions":{}}},"id":80933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27939:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80934,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80898,"src":"27954:3:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80927,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80890,"src":"27901:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":80928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27914:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"27901:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":80935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27901:57:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"27886:72:165"},{"expression":{"arguments":[{"id":80938,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80926,"src":"27976:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80939,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"27985:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":80940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27985:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":80937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"27968:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":80941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27968:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80942,"nodeType":"ExpressionStatement","src":"27968:38:165"},{"expression":{"id":80953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":80943,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80733,"src":"28017:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":80947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28024:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"28017:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":80948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28037:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"28017:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":80949,"indexExpression":{"id":80946,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"28043:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"28017:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":80950,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"28054:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":80951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28059:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"28054:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":80952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28069:19:165","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":87553,"src":"28054:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"28017:71:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":80954,"nodeType":"ExpressionStatement","src":"28017:71:165"},{"eventCall":{"arguments":[{"id":80956,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"28128:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":80955,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74512,"src":"28104:23:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":80957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28104:32:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80958,"nodeType":"EmitStatement","src":"28099:37:165"}]},"baseFunctions":[74899],"documentation":{"id":80695,"nodeType":"StructuredDocumentation","src":"24224:1496:165","text":" @dev Requests code validation for the given code ID on behalf of someone else.\n This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar\n attached to it containing WASM bytecode. On EVM, we can only verify that there was\n at least 1 blobhash in a transaction.\n Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()`\n in the WVARA ERC20 token.\n @param _requester The address of the requester on behalf of whom the code validation is requested.\n @param _codeId The expected code ID for which the validation is requested.\n It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\n @param _blobHashes The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`.\n This is needed to verify that the transaction has expected blobs attached.\n @param _deadline Deadline for the transaction to be executed.\n @param _v1 ECDSA signature parameter (for requestCodeValidation).\n @param _r1 ECDSA signature parameter (for requestCodeValidation).\n @param _s1 ECDSA signature parameter (for requestCodeValidation).\n @param _v2 ECDSA signature parameter (for permit).\n @param _r2 ECDSA signature parameter (for permit).\n @param _s2 ECDSA signature parameter (for permit)."},"functionSelector":"f0fd702a","implemented":true,"kind":"function","modifiers":[{"id":80719,"kind":"modifierInvocation","modifierName":{"id":80718,"name":"whenNotPaused","nameLocations":["26021:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"26021:13:165"},"nodeType":"ModifierInvocation","src":"26021:13:165"}],"name":"requestCodeValidationOnBehalf","nameLocation":"25734:29:165","parameters":{"id":80717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80697,"mutability":"mutable","name":"_requester","nameLocation":"25781:10:165","nodeType":"VariableDeclaration","scope":80960,"src":"25773:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80696,"name":"address","nodeType":"ElementaryTypeName","src":"25773:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80699,"mutability":"mutable","name":"_codeId","nameLocation":"25809:7:165","nodeType":"VariableDeclaration","scope":80960,"src":"25801:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80698,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25801:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80702,"mutability":"mutable","name":"_blobHashes","nameLocation":"25845:11:165","nodeType":"VariableDeclaration","scope":80960,"src":"25826:30:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":80700,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25826:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":80701,"nodeType":"ArrayTypeName","src":"25826:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":80704,"mutability":"mutable","name":"_deadline","nameLocation":"25874:9:165","nodeType":"VariableDeclaration","scope":80960,"src":"25866:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80703,"name":"uint256","nodeType":"ElementaryTypeName","src":"25866:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80706,"mutability":"mutable","name":"_v1","nameLocation":"25899:3:165","nodeType":"VariableDeclaration","scope":80960,"src":"25893:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80705,"name":"uint8","nodeType":"ElementaryTypeName","src":"25893:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80708,"mutability":"mutable","name":"_r1","nameLocation":"25920:3:165","nodeType":"VariableDeclaration","scope":80960,"src":"25912:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25912:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80710,"mutability":"mutable","name":"_s1","nameLocation":"25941:3:165","nodeType":"VariableDeclaration","scope":80960,"src":"25933:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80709,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25933:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80712,"mutability":"mutable","name":"_v2","nameLocation":"25960:3:165","nodeType":"VariableDeclaration","scope":80960,"src":"25954:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":80711,"name":"uint8","nodeType":"ElementaryTypeName","src":"25954:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":80714,"mutability":"mutable","name":"_r2","nameLocation":"25981:3:165","nodeType":"VariableDeclaration","scope":80960,"src":"25973:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25973:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80716,"mutability":"mutable","name":"_s2","nameLocation":"26002:3:165","nodeType":"VariableDeclaration","scope":80960,"src":"25994:11:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25994:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"25763:248:165"},"returnParameters":{"id":80720,"nodeType":"ParameterList","parameters":[],"src":"26035:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81005,"nodeType":"FunctionDefinition","src":"29223:396:165","nodes":[],"body":{"id":81004,"nodeType":"Block","src":"29377:242:165","nodes":[],"statements":[{"assignments":[80975,null],"declarations":[{"constant":false,"id":80975,"mutability":"mutable","name":"mirror","nameLocation":"29396:6:165","nodeType":"VariableDeclaration","scope":81004,"src":"29388:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80974,"name":"address","nodeType":"ElementaryTypeName","src":"29388:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":80981,"initialValue":{"arguments":[{"id":80977,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80963,"src":"29422:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":80978,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80965,"src":"29431:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":80979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29438:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":80976,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81532,"src":"29407:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":80980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29407:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"29387:56:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":80991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80986,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"29494:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":80989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29526:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":80988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29518:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80987,"name":"address","nodeType":"ElementaryTypeName","src":"29518:7:165","typeDescriptions":{}}},"id":80990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29518:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29494:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":80994,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80967,"src":"29544:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":80995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"29494:70:165","trueExpression":{"expression":{"id":80992,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29531:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29535:6:165","memberName":"sender","nodeType":"MemberAccess","src":"29531:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":80996,"name":"mirrorImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79991,"src":"29566:10:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":80997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29566:12:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":80998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29580:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":80999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29586:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":80983,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80975,"src":"29462:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":80982,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"29454:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":80984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29454:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":80985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29483:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"29454:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29454:134:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81001,"nodeType":"ExpressionStatement","src":"29454:134:165"},{"expression":{"id":81002,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80975,"src":"29606:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":80973,"id":81003,"nodeType":"Return","src":"29599:13:165"}]},"baseFunctions":[74911],"documentation":{"id":80961,"nodeType":"StructuredDocumentation","src":"28149:1069:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, and initializer.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support,\n so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"3683c4d2","implemented":true,"kind":"function","modifiers":[{"id":80970,"kind":"modifierInvocation","modifierName":{"id":80969,"name":"whenNotPaused","nameLocations":["29333:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"29333:13:165"},"nodeType":"ModifierInvocation","src":"29333:13:165"}],"name":"createProgram","nameLocation":"29232:13:165","parameters":{"id":80968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80963,"mutability":"mutable","name":"_codeId","nameLocation":"29254:7:165","nodeType":"VariableDeclaration","scope":81005,"src":"29246:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80962,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29246:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80965,"mutability":"mutable","name":"_salt","nameLocation":"29271:5:165","nodeType":"VariableDeclaration","scope":81005,"src":"29263:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80964,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29263:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":80967,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"29286:20:165","nodeType":"VariableDeclaration","scope":81005,"src":"29278:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80966,"name":"address","nodeType":"ElementaryTypeName","src":"29278:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29245:62:165"},"returnParameters":{"id":80973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81005,"src":"29364:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80971,"name":"address","nodeType":"ElementaryTypeName","src":"29364:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29363:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81110,"nodeType":"FunctionDefinition","src":"31092:1031:165","nodes":[],"body":{"id":81109,"nodeType":"Block","src":"31397:726:165","nodes":[],"statements":[{"assignments":[81030,81033],"declarations":[{"constant":false,"id":81030,"mutability":"mutable","name":"mirror","nameLocation":"31416:6:165","nodeType":"VariableDeclaration","scope":81109,"src":"31408:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81029,"name":"address","nodeType":"ElementaryTypeName","src":"31408:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81033,"mutability":"mutable","name":"router","nameLocation":"31440:6:165","nodeType":"VariableDeclaration","scope":81109,"src":"31424:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81032,"nodeType":"UserDefinedTypeName","pathNode":{"id":81031,"name":"Storage","nameLocations":["31424:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31424:7:165"},"referencedDeclaration":74490,"src":"31424:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81039,"initialValue":{"arguments":[{"id":81035,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81008,"src":"31465:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81036,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81010,"src":"31474:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":81037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31481:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81034,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81532,"src":"31450:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":81038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31450:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"31407:79:165"},{"assignments":[81042],"declarations":[{"constant":false,"id":81042,"mutability":"mutable","name":"_wrappedVara","nameLocation":"31510:12:165","nodeType":"VariableDeclaration","scope":81109,"src":"31497:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":81041,"nodeType":"UserDefinedTypeName","pathNode":{"id":81040,"name":"IWrappedVara","nameLocations":["31497:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"31497:12:165"},"referencedDeclaration":75001,"src":"31497:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":81048,"initialValue":{"arguments":[{"expression":{"expression":{"id":81044,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81033,"src":"31538:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31545:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"31538:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31559:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"31538:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81043,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"31525:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":81047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31525:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"31497:74:165"},{"clauses":[{"block":{"id":81063,"nodeType":"Block","src":"31683:2:165","statements":[]},"errorName":"","id":81064,"nodeType":"TryCatchClause","src":"31683:2:165"},{"block":{"id":81065,"nodeType":"Block","src":"31692:2:165","statements":[]},"errorName":"","id":81066,"nodeType":"TryCatchClause","src":"31686:8:165"}],"externalCall":{"arguments":[{"expression":{"id":81051,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31606:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31610:6:165","memberName":"sender","nodeType":"MemberAccess","src":"31606:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81055,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31626:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":81054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31618:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81053,"name":"address","nodeType":"ElementaryTypeName","src":"31618:7:165","typeDescriptions":{}}},"id":81056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31618:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81057,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81014,"src":"31633:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":81058,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81016,"src":"31660:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81059,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81018,"src":"31671:2:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":81060,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81020,"src":"31675:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81061,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81022,"src":"31679:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81049,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81042,"src":"31586:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31599:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"31586:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":81062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31586:96:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81067,"nodeType":"TryStatement","src":"31582:112:165"},{"assignments":[81069],"declarations":[{"constant":false,"id":81069,"mutability":"mutable","name":"success","nameLocation":"31708:7:165","nodeType":"VariableDeclaration","scope":81109,"src":"31703:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81068,"name":"bool","nodeType":"ElementaryTypeName","src":"31703:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":81080,"initialValue":{"arguments":[{"expression":{"id":81072,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31744:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31748:6:165","memberName":"sender","nodeType":"MemberAccess","src":"31744:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81076,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31764:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":81075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31756:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81074,"name":"address","nodeType":"ElementaryTypeName","src":"31756:7:165","typeDescriptions":{}}},"id":81077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31756:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81078,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81014,"src":"31771:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":81070,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81042,"src":"31718:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31731:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"31718:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":81079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31718:79:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"31703:94:165"},{"expression":{"arguments":[{"id":81082,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81069,"src":"31815:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81083,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"31824:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31824:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"31807:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31807:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81086,"nodeType":"ExpressionStatement","src":"31807:38:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81091,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81012,"src":"31913:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":81094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31945:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31937:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81092,"name":"address","nodeType":"ElementaryTypeName","src":"31937:7:165","typeDescriptions":{}}},"id":81095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31937:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"31913:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":81099,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81012,"src":"31963:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31913:70:165","trueExpression":{"expression":{"id":81097,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31950:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31954:6:165","memberName":"sender","nodeType":"MemberAccess","src":"31950:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81101,"name":"mirrorImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79991,"src":"32001:10:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":81102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32001:12:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":81103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32031:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":81104,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81014,"src":"32053:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":81088,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81030,"src":"31864:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81087,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"31856:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":81089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31856:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":81090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31885:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"31856:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31856:236:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81106,"nodeType":"ExpressionStatement","src":"31856:236:165"},{"expression":{"id":81107,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81030,"src":"32110:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":81028,"id":81108,"nodeType":"Return","src":"32103:13:165"}]},"baseFunctions":[74933],"documentation":{"id":81006,"nodeType":"StructuredDocumentation","src":"29625:1462:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance\n in WVARA ERC20 token.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support,\n so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"0d91bf2a","implemented":true,"kind":"function","modifiers":[{"id":81025,"kind":"modifierInvocation","modifierName":{"id":81024,"name":"whenNotPaused","nameLocations":["31365:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"31365:13:165"},"nodeType":"ModifierInvocation","src":"31365:13:165"}],"name":"createProgramWithExecutableBalance","nameLocation":"31101:34:165","parameters":{"id":81023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81008,"mutability":"mutable","name":"_codeId","nameLocation":"31153:7:165","nodeType":"VariableDeclaration","scope":81110,"src":"31145:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81007,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31145:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81010,"mutability":"mutable","name":"_salt","nameLocation":"31178:5:165","nodeType":"VariableDeclaration","scope":81110,"src":"31170:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31170:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81012,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"31201:20:165","nodeType":"VariableDeclaration","scope":81110,"src":"31193:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81011,"name":"address","nodeType":"ElementaryTypeName","src":"31193:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81014,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"31239:25:165","nodeType":"VariableDeclaration","scope":81110,"src":"31231:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":81013,"name":"uint128","nodeType":"ElementaryTypeName","src":"31231:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":81016,"mutability":"mutable","name":"_deadline","nameLocation":"31282:9:165","nodeType":"VariableDeclaration","scope":81110,"src":"31274:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81015,"name":"uint256","nodeType":"ElementaryTypeName","src":"31274:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81018,"mutability":"mutable","name":"_v","nameLocation":"31307:2:165","nodeType":"VariableDeclaration","scope":81110,"src":"31301:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":81017,"name":"uint8","nodeType":"ElementaryTypeName","src":"31301:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":81020,"mutability":"mutable","name":"_r","nameLocation":"31327:2:165","nodeType":"VariableDeclaration","scope":81110,"src":"31319:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81019,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31319:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81022,"mutability":"mutable","name":"_s","nameLocation":"31347:2:165","nodeType":"VariableDeclaration","scope":81110,"src":"31339:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31339:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"31135:220:165"},"returnParameters":{"id":81028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81110,"src":"31388:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81026,"name":"address","nodeType":"ElementaryTypeName","src":"31388:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31387:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81156,"nodeType":"FunctionDefinition","src":"33285:448:165","nodes":[],"body":{"id":81155,"nodeType":"Block","src":"33488:245:165","nodes":[],"statements":[{"assignments":[81127,null],"declarations":[{"constant":false,"id":81127,"mutability":"mutable","name":"mirror","nameLocation":"33507:6:165","nodeType":"VariableDeclaration","scope":81155,"src":"33499:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81126,"name":"address","nodeType":"ElementaryTypeName","src":"33499:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":81133,"initialValue":{"arguments":[{"id":81129,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81113,"src":"33533:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81130,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81115,"src":"33542:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":81131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33549:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81128,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81532,"src":"33518:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":81132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33518:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"33498:57:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81138,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81117,"src":"33606:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":81141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33638:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33630:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81139,"name":"address","nodeType":"ElementaryTypeName","src":"33630:7:165","typeDescriptions":{}}},"id":81142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33630:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"33606:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":81146,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81117,"src":"33656:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33606:70:165","trueExpression":{"expression":{"id":81144,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33643:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33647:6:165","memberName":"sender","nodeType":"MemberAccess","src":"33643:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81148,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81119,"src":"33678:13:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":81149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33693:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":81150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33700:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":81135,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81127,"src":"33574:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81134,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"33566:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":81136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33566:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":81137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33595:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"33566:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33566:136:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81152,"nodeType":"ExpressionStatement","src":"33566:136:165"},{"expression":{"id":81153,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81127,"src":"33720:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":81125,"id":81154,"nodeType":"Return","src":"33713:13:165"}]},"baseFunctions":[74947],"documentation":{"id":81111,"nodeType":"StructuredDocumentation","src":"32129:1151:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support,\n so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _abiInterface The ABI interface address for the program.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"0c18d277","implemented":true,"kind":"function","modifiers":[{"id":81122,"kind":"modifierInvocation","modifierName":{"id":81121,"name":"whenNotPaused","nameLocations":["33456:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"33456:13:165"},"nodeType":"ModifierInvocation","src":"33456:13:165"}],"name":"createProgramWithAbiInterface","nameLocation":"33294:29:165","parameters":{"id":81120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81113,"mutability":"mutable","name":"_codeId","nameLocation":"33341:7:165","nodeType":"VariableDeclaration","scope":81156,"src":"33333:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81112,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33333:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81115,"mutability":"mutable","name":"_salt","nameLocation":"33366:5:165","nodeType":"VariableDeclaration","scope":81156,"src":"33358:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33358:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81117,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"33389:20:165","nodeType":"VariableDeclaration","scope":81156,"src":"33381:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81116,"name":"address","nodeType":"ElementaryTypeName","src":"33381:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81119,"mutability":"mutable","name":"_abiInterface","nameLocation":"33427:13:165","nodeType":"VariableDeclaration","scope":81156,"src":"33419:21:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81118,"name":"address","nodeType":"ElementaryTypeName","src":"33419:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33323:123:165"},"returnParameters":{"id":81125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81156,"src":"33479:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81123,"name":"address","nodeType":"ElementaryTypeName","src":"33479:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33478:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81262,"nodeType":"FunctionDefinition","src":"35289:1080:165","nodes":[],"body":{"id":81261,"nodeType":"Block","src":"35640:729:165","nodes":[],"statements":[{"assignments":[81183,81186],"declarations":[{"constant":false,"id":81183,"mutability":"mutable","name":"mirror","nameLocation":"35659:6:165","nodeType":"VariableDeclaration","scope":81261,"src":"35651:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81182,"name":"address","nodeType":"ElementaryTypeName","src":"35651:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81186,"mutability":"mutable","name":"router","nameLocation":"35683:6:165","nodeType":"VariableDeclaration","scope":81261,"src":"35667:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81185,"nodeType":"UserDefinedTypeName","pathNode":{"id":81184,"name":"Storage","nameLocations":["35667:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"35667:7:165"},"referencedDeclaration":74490,"src":"35667:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81192,"initialValue":{"arguments":[{"id":81188,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81159,"src":"35708:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81189,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81161,"src":"35717:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":81190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35724:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81187,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81532,"src":"35693:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":81191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35693:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"35650:80:165"},{"assignments":[81195],"declarations":[{"constant":false,"id":81195,"mutability":"mutable","name":"_wrappedVara","nameLocation":"35754:12:165","nodeType":"VariableDeclaration","scope":81261,"src":"35741:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":81194,"nodeType":"UserDefinedTypeName","pathNode":{"id":81193,"name":"IWrappedVara","nameLocations":["35741:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"35741:12:165"},"referencedDeclaration":75001,"src":"35741:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":81201,"initialValue":{"arguments":[{"expression":{"expression":{"id":81197,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81186,"src":"35782:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81198,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35789:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"35782:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35803:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"35782:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81196,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"35769:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":81200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35769:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"35741:74:165"},{"clauses":[{"block":{"id":81216,"nodeType":"Block","src":"35927:2:165","statements":[]},"errorName":"","id":81217,"nodeType":"TryCatchClause","src":"35927:2:165"},{"block":{"id":81218,"nodeType":"Block","src":"35936:2:165","statements":[]},"errorName":"","id":81219,"nodeType":"TryCatchClause","src":"35930:8:165"}],"externalCall":{"arguments":[{"expression":{"id":81204,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"35850:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35854:6:165","memberName":"sender","nodeType":"MemberAccess","src":"35850:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81208,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"35870:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":81207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35862:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81206,"name":"address","nodeType":"ElementaryTypeName","src":"35862:7:165","typeDescriptions":{}}},"id":81209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35862:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81210,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81167,"src":"35877:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":81211,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81169,"src":"35904:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81212,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81171,"src":"35915:2:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":81213,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81173,"src":"35919:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81214,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81175,"src":"35923:2:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81202,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81195,"src":"35830:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35843:6:165","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"35830:19:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":81215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35830:96:165","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81220,"nodeType":"TryStatement","src":"35826:112:165"},{"assignments":[81222],"declarations":[{"constant":false,"id":81222,"mutability":"mutable","name":"success","nameLocation":"35952:7:165","nodeType":"VariableDeclaration","scope":81261,"src":"35947:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81221,"name":"bool","nodeType":"ElementaryTypeName","src":"35947:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":81233,"initialValue":{"arguments":[{"expression":{"id":81225,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"35988:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35992:6:165","memberName":"sender","nodeType":"MemberAccess","src":"35988:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":81229,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"36008:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":81228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36000:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81227,"name":"address","nodeType":"ElementaryTypeName","src":"36000:7:165","typeDescriptions":{}}},"id":81230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36000:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81231,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81167,"src":"36015:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":81223,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81195,"src":"35962:12:165","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35975:12:165","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"35962:25:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":81232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35962:79:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"35947:94:165"},{"expression":{"arguments":[{"id":81235,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81222,"src":"36059:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81236,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"36068:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36068:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81234,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"36051:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36051:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81239,"nodeType":"ExpressionStatement","src":"36051:38:165"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":81249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81244,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81163,"src":"36157:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":81247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36189:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36181:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81245,"name":"address","nodeType":"ElementaryTypeName","src":"36181:7:165","typeDescriptions":{}}},"id":81248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36181:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36157:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":81252,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81163,"src":"36207:20:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"36157:70:165","trueExpression":{"expression":{"id":81250,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36194:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":81251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36198:6:165","memberName":"sender","nodeType":"MemberAccess","src":"36194:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81254,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81165,"src":"36245:13:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":81255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"36276:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":81256,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81167,"src":"36299:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":81241,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81183,"src":"36108:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81240,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"36100:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":81242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36100:15:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":81243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36129:10:165","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"36100:39:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":81257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36100:238:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81258,"nodeType":"ExpressionStatement","src":"36100:238:165"},{"expression":{"id":81259,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81183,"src":"36356:6:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":81181,"id":81260,"nodeType":"Return","src":"36349:13:165"}]},"baseFunctions":[74971],"documentation":{"id":81157,"nodeType":"StructuredDocumentation","src":"33739:1545:165","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance\n in WVARA ERC20 token.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support,\n so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _abiInterface The ABI interface address for the program.\n @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"ee32004f","implemented":true,"kind":"function","modifiers":[{"id":81178,"kind":"modifierInvocation","modifierName":{"id":81177,"name":"whenNotPaused","nameLocations":["35608:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"35608:13:165"},"nodeType":"ModifierInvocation","src":"35608:13:165"}],"name":"createProgramWithAbiInterfaceAndExecutableBalance","nameLocation":"35298:49:165","parameters":{"id":81176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81159,"mutability":"mutable","name":"_codeId","nameLocation":"35365:7:165","nodeType":"VariableDeclaration","scope":81262,"src":"35357:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35357:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81161,"mutability":"mutable","name":"_salt","nameLocation":"35390:5:165","nodeType":"VariableDeclaration","scope":81262,"src":"35382:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35382:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81163,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"35413:20:165","nodeType":"VariableDeclaration","scope":81262,"src":"35405:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81162,"name":"address","nodeType":"ElementaryTypeName","src":"35405:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81165,"mutability":"mutable","name":"_abiInterface","nameLocation":"35451:13:165","nodeType":"VariableDeclaration","scope":81262,"src":"35443:21:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81164,"name":"address","nodeType":"ElementaryTypeName","src":"35443:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81167,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"35482:25:165","nodeType":"VariableDeclaration","scope":81262,"src":"35474:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":81166,"name":"uint128","nodeType":"ElementaryTypeName","src":"35474:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":81169,"mutability":"mutable","name":"_deadline","nameLocation":"35525:9:165","nodeType":"VariableDeclaration","scope":81262,"src":"35517:17:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81168,"name":"uint256","nodeType":"ElementaryTypeName","src":"35517:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":81171,"mutability":"mutable","name":"_v","nameLocation":"35550:2:165","nodeType":"VariableDeclaration","scope":81262,"src":"35544:8:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":81170,"name":"uint8","nodeType":"ElementaryTypeName","src":"35544:5:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":81173,"mutability":"mutable","name":"_r","nameLocation":"35570:2:165","nodeType":"VariableDeclaration","scope":81262,"src":"35562:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35562:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81175,"mutability":"mutable","name":"_s","nameLocation":"35590:2:165","nodeType":"VariableDeclaration","scope":81262,"src":"35582:10:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35582:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"35347:251:165"},"returnParameters":{"id":81181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81180,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81262,"src":"35631:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81179,"name":"address","nodeType":"ElementaryTypeName","src":"35631:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35630:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81429,"nodeType":"FunctionDefinition","src":"36837:2276:165","nodes":[],"body":{"id":81428,"nodeType":"Block","src":"37013:2100:165","nodes":[],"statements":[{"assignments":[81279],"declarations":[{"constant":false,"id":81279,"mutability":"mutable","name":"router","nameLocation":"37039:6:165","nodeType":"VariableDeclaration","scope":81428,"src":"37023:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81278,"nodeType":"UserDefinedTypeName","pathNode":{"id":81277,"name":"Storage","nameLocations":["37023:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"37023:7:165"},"referencedDeclaration":74490,"src":"37023:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81282,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":81280,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"37048:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":81281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37048:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"37023:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":81291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81284,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"37076:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37083:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"37076:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81286,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37096:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"37076:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37112:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37104:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":81287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37104:7:165","typeDescriptions":{}}},"id":81290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37104:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"37076:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81292,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"37116:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37116:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37068:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37068:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81295,"nodeType":"ExpressionStatement","src":"37068:82:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81296,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"37314:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37321:8:165","memberName":"reserved","nodeType":"MemberAccess","referencedDeclaration":74461,"src":"37314:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37333:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37314:20:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81323,"nodeType":"IfStatement","src":"37310:295:165","trueBody":{"id":81322,"nodeType":"Block","src":"37336:269:165","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":81303,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"37382:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37389:9:165","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":87486,"src":"37382:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81305,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"37400:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37407:6:165","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":87495,"src":"37400:13:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":81301,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"37358:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37363:18:165","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":88004,"src":"37358:23:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint8_$returns$_t_bool_$","typeString":"function (bytes32,uint8) view returns (bool)"}},"id":81307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37358:56:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81308,"name":"PredecessorBlockNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74600,"src":"37416:24:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37416:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81300,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37350:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37350:93:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81311,"nodeType":"ExpressionStatement","src":"37350:93:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81313,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"37527:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37533:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"37527:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":81315,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"37545:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37552:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"37545:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"37527:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81318,"name":"BatchTimestampNotInPast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74602,"src":"37568:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37568:25:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81312,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37519:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37519:75:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81321,"nodeType":"ExpressionStatement","src":"37519:75:165"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":81330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81325,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"37718:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37725:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"37718:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37746:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87559,"src":"37718:32:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":81328,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"37754:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37761:26:165","memberName":"previousCommittedBatchHash","nodeType":"MemberAccess","referencedDeclaration":87492,"src":"37754:33:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"37718:69:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81331,"name":"InvalidPreviousCommittedBatchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74604,"src":"37789:33:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37789:35:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81324,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37697:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37697:137:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81334,"nodeType":"ExpressionStatement","src":"37697:137:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":81341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81336,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"37853:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37860:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"37853:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37881:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87561,"src":"37853:37:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":81339,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"37894:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37901:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"37894:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"37853:62:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81342,"name":"BatchTimestampTooEarly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74606,"src":"37917:22:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37917:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81335,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37845:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37845:97:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81345,"nodeType":"ExpressionStatement","src":"37845:97:165"},{"assignments":[81347],"declarations":[{"constant":false,"id":81347,"mutability":"mutable","name":"_chainCommitmentHash","nameLocation":"37961:20:165","nodeType":"VariableDeclaration","scope":81428,"src":"37953:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81346,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37953:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81352,"initialValue":{"arguments":[{"id":81349,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"37997:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81350,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38005:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81348,"name":"_commitChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81595,"src":"37984:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37984:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"37953:59:165"},{"assignments":[81354],"declarations":[{"constant":false,"id":81354,"mutability":"mutable","name":"_codeCommitmentsHash","nameLocation":"38093:20:165","nodeType":"VariableDeclaration","scope":81428,"src":"38085:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38085:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81359,"initialValue":{"arguments":[{"id":81356,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"38129:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81357,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38137:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81355,"name":"_commitCodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81737,"src":"38116:12:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38116:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38085:59:165"},{"assignments":[81361],"declarations":[{"constant":false,"id":81361,"mutability":"mutable","name":"_rewardsCommitmentHash","nameLocation":"38224:22:165","nodeType":"VariableDeclaration","scope":81428,"src":"38216:30:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38216:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81366,"initialValue":{"arguments":[{"id":81363,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"38264:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81364,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38272:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81362,"name":"_commitRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81894,"src":"38249:14:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38249:30:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38216:63:165"},{"assignments":[81368],"declarations":[{"constant":false,"id":81368,"mutability":"mutable","name":"_validatorsCommitmentHash","nameLocation":"38297:25:165","nodeType":"VariableDeclaration","scope":81428,"src":"38289:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81367,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38289:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81373,"initialValue":{"arguments":[{"id":81370,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"38343:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81371,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38351:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":81369,"name":"_commitValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82040,"src":"38325:17:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":81372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38325:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38289:69:165"},{"assignments":[81375],"declarations":[{"constant":false,"id":81375,"mutability":"mutable","name":"_batchHash","nameLocation":"38377:10:165","nodeType":"VariableDeclaration","scope":81428,"src":"38369:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38369:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81391,"initialValue":{"arguments":[{"expression":{"id":81378,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38428:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38435:9:165","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":87486,"src":"38428:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81380,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38458:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38465:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"38458:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":81382,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38493:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38500:26:165","memberName":"previousCommittedBatchHash","nodeType":"MemberAccess","referencedDeclaration":87492,"src":"38493:33:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81384,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38540:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38547:6:165","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":87495,"src":"38540:13:165","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":81386,"name":"_chainCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81347,"src":"38567:20:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81387,"name":"_codeCommitmentsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81354,"src":"38601:20:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81388,"name":"_rewardsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81361,"src":"38635:22:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81389,"name":"_validatorsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81368,"src":"38671:25:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81376,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"38390:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38395:19:165","memberName":"batchCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87848,"src":"38390:24:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,uint8,bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":81390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38390:316:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38369:337:165"},{"expression":{"id":81398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":81392,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"38717:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81395,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38724:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"38717:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38745:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87559,"src":"38717:32:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81397,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81375,"src":"38752:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"38717:45:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":81399,"nodeType":"ExpressionStatement","src":"38717:45:165"},{"expression":{"id":81407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":81400,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"38772:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38779:20:165","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"38772:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":81404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38800:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87561,"src":"38772:37:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":81405,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"38812:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38819:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"38812:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"38772:61:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":81408,"nodeType":"ExpressionStatement","src":"38772:61:165"},{"eventCall":{"arguments":[{"id":81410,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81375,"src":"38864:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":81409,"name":"BatchCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74495,"src":"38849:14:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":81411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38849:26:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81412,"nodeType":"EmitStatement","src":"38844:31:165"},{"expression":{"arguments":[{"arguments":[{"id":81416,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81279,"src":"38950:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":81417,"name":"TRANSIENT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79535,"src":"38958:17:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81418,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81375,"src":"38977:10:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81419,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81269,"src":"38989:14:165","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},{"id":81420,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81272,"src":"39005:11:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},{"expression":{"id":81421,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81266,"src":"39018:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39025:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"39018:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81414,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"38907:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38912:20:165","memberName":"validateSignaturesAt","nodeType":"MemberAccess","referencedDeclaration":88290,"src":"38907:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_bytes32_$_t_bytes32_$_t_enum$_SignatureType_$87729_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes32,enum Gear.SignatureType,bytes calldata[] calldata,uint256) returns (bool)"}},"id":81423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38907:146:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81424,"name":"SignatureVerificationFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74634,"src":"39067:27:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39067:29:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81413,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"38886:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38886:220:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81427,"nodeType":"ExpressionStatement","src":"38886:220:165"}]},"baseFunctions":[74984],"documentation":{"id":81263,"nodeType":"StructuredDocumentation","src":"36375:457:165","text":" @dev Commits new batch of changes to `Router` state.\n `CodeGotValidated` event is emitted for each code in commitment.\n `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.\n @param _batch The batch commitment data.\n @param _signatureType The type of signature to validate.\n @param _signatures The signatures for the batch commitment."},"functionSelector":"b24fcac0","implemented":true,"kind":"function","modifiers":[{"id":81275,"kind":"modifierInvocation","modifierName":{"id":81274,"name":"nonReentrant","nameLocations":["37000:12:165"],"nodeType":"IdentifierPath","referencedDeclaration":43886,"src":"37000:12:165"},"nodeType":"ModifierInvocation","src":"37000:12:165"}],"name":"commitBatch","nameLocation":"36846:11:165","parameters":{"id":81273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81266,"mutability":"mutable","name":"_batch","nameLocation":"36897:6:165","nodeType":"VariableDeclaration","scope":81429,"src":"36867:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81265,"nodeType":"UserDefinedTypeName","pathNode":{"id":81264,"name":"Gear.BatchCommitment","nameLocations":["36867:4:165","36872:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"36867:20:165"},"referencedDeclaration":87516,"src":"36867:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"},{"constant":false,"id":81269,"mutability":"mutable","name":"_signatureType","nameLocation":"36932:14:165","nodeType":"VariableDeclaration","scope":81429,"src":"36913:33:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},"typeName":{"id":81268,"nodeType":"UserDefinedTypeName","pathNode":{"id":81267,"name":"Gear.SignatureType","nameLocations":["36913:4:165","36918:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":87729,"src":"36913:18:165"},"referencedDeclaration":87729,"src":"36913:18:165","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"visibility":"internal"},{"constant":false,"id":81272,"mutability":"mutable","name":"_signatures","nameLocation":"36973:11:165","nodeType":"VariableDeclaration","scope":81429,"src":"36956:28:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":81270,"name":"bytes","nodeType":"ElementaryTypeName","src":"36956:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":81271,"nodeType":"ArrayTypeName","src":"36956:7:165","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"36857:133:165"},"returnParameters":{"id":81276,"nodeType":"ParameterList","parameters":[],"src":"37013:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":81532,"nodeType":"FunctionDefinition","src":"39157:934:165","nodes":[],"body":{"id":81531,"nodeType":"Block","src":"39271:820:165","nodes":[],"statements":[{"assignments":[81445],"declarations":[{"constant":false,"id":81445,"mutability":"mutable","name":"router","nameLocation":"39297:6:165","nodeType":"VariableDeclaration","scope":81531,"src":"39281:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81444,"nodeType":"UserDefinedTypeName","pathNode":{"id":81443,"name":"Storage","nameLocations":["39281:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"39281:7:165"},"referencedDeclaration":74490,"src":"39281:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":81448,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":81446,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"39306:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":81447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39306:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"39281:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":81457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81450,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81445,"src":"39333:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39340:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"39333:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39353:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"39333:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":81455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39369:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":81454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39361:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":81453,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39361:7:165","typeDescriptions":{}}},"id":81456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39361:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"39333:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81458,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"39373:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39373:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81449,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39325:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39325:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81461,"nodeType":"ExpressionStatement","src":"39325:82:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":81471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":81463,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81445,"src":"39426:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39433:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39426:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39446:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"39426:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81467,"indexExpression":{"id":81466,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81431,"src":"39452:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39426:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":81468,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"39464:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39469:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"39464:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":81470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39479:9:165","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":87555,"src":"39464:24:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"39426:62:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81472,"name":"CodeNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74596,"src":"39490:16:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39490:18:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81462,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39418:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39418:91:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81475,"nodeType":"ExpressionStatement","src":"39418:91:165"},{"assignments":[81477],"declarations":[{"constant":false,"id":81477,"mutability":"mutable","name":"salt","nameLocation":"39678:4:165","nodeType":"VariableDeclaration","scope":81531,"src":"39670:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39670:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81483,"initialValue":{"arguments":[{"id":81480,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81431,"src":"39720:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81481,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81433,"src":"39729:5:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81478,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"39685:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":81479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39692:27:165","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41482,"src":"39685:34:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":81482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39685:50:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"39670:65:165"},{"assignments":[81485],"declarations":[{"constant":false,"id":81485,"mutability":"mutable","name":"actorId","nameLocation":"39753:7:165","nodeType":"VariableDeclaration","scope":81531,"src":"39745:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81484,"name":"address","nodeType":"ElementaryTypeName","src":"39745:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":81504,"initialValue":{"condition":{"id":81486,"name":"_isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81435,"src":"39763:8:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":81499,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"39886:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":81498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39878:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81497,"name":"address","nodeType":"ElementaryTypeName","src":"39878:7:165","typeDescriptions":{}}},"id":81500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39878:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81501,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"39893:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81495,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87250,"src":"39852:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$87250_$","typeString":"type(library Clones)"}},"id":81496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39859:18:165","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":87019,"src":"39852:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":81502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39852:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":81503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"39763:135:165","trueExpression":{"arguments":[{"arguments":[{"id":81491,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"39825:4:165","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$82385","typeString":"contract Router"}],"id":81490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39817:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":81489,"name":"address","nodeType":"ElementaryTypeName","src":"39817:7:165","typeDescriptions":{}}},"id":81492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39817:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81493,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81477,"src":"39832:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81487,"name":"ClonesSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87334,"src":"39786:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ClonesSmall_$87334_$","typeString":"type(library ClonesSmall)"}},"id":81488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39798:18:165","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":87272,"src":"39786:30:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":81494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39786:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39745:153:165"},{"expression":{"id":81513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":81505,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81445,"src":"39909:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39916:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39909:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81510,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39929:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"39909:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":81511,"indexExpression":{"id":81508,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81485,"src":"39938:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"39909:37:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":81512,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81431,"src":"39949:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"39909:47:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":81514,"nodeType":"ExpressionStatement","src":"39909:47:165"},{"expression":{"id":81520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"39966:35:165","subExpression":{"expression":{"expression":{"id":81515,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81445,"src":"39966:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39973:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39966:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"39986:13:165","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":87612,"src":"39966:33:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81521,"nodeType":"ExpressionStatement","src":"39966:35:165"},{"eventCall":{"arguments":[{"id":81523,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81485,"src":"40032:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81524,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81431,"src":"40041:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":81522,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74531,"src":"40017:14:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":81525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40017:32:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81526,"nodeType":"EmitStatement","src":"40012:37:165"},{"expression":{"components":[{"id":81527,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81485,"src":"40068:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":81528,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81445,"src":"40077:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"id":81529,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"40067:17:165","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"functionReturnParameters":81442,"id":81530,"nodeType":"Return","src":"40060:24:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"39166:14:165","parameters":{"id":81436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81431,"mutability":"mutable","name":"_codeId","nameLocation":"39189:7:165","nodeType":"VariableDeclaration","scope":81532,"src":"39181:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81430,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39181:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81433,"mutability":"mutable","name":"_salt","nameLocation":"39206:5:165","nodeType":"VariableDeclaration","scope":81532,"src":"39198:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81432,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39198:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":81435,"mutability":"mutable","name":"_isSmall","nameLocation":"39218:8:165","nodeType":"VariableDeclaration","scope":81532,"src":"39213:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81434,"name":"bool","nodeType":"ElementaryTypeName","src":"39213:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39180:47:165"},"returnParameters":{"id":81442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81438,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81532,"src":"39245:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81437,"name":"address","nodeType":"ElementaryTypeName","src":"39245:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":81441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81532,"src":"39254:15:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81440,"nodeType":"UserDefinedTypeName","pathNode":{"id":81439,"name":"Storage","nameLocations":["39254:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"39254:7:165"},"referencedDeclaration":74490,"src":"39254:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"39244:26:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81595,"nodeType":"FunctionDefinition","src":"40097:683:165","nodes":[],"body":{"id":81594,"nodeType":"Block","src":"40207:573:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81544,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81538,"src":"40225:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40232:15:165","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":87500,"src":"40225:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":81546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40248:6:165","memberName":"length","nodeType":"MemberAccess","src":"40225:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":81547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40258:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"40225:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81549,"name":"TooManyChainCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74608,"src":"40261:23:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40261:25:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81543,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"40217:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40217:70:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81552,"nodeType":"ExpressionStatement","src":"40217:70:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81553,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81538,"src":"40302:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40309:15:165","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":87500,"src":"40302:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":81555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40325:6:165","memberName":"length","nodeType":"MemberAccess","src":"40302:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40335:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"40302:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81563,"nodeType":"IfStatement","src":"40298:177:165","trueBody":{"id":81562,"nodeType":"Block","src":"40338:137:165","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":81559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40461:2:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":81558,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"40451:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":81560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40451:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81542,"id":81561,"nodeType":"Return","src":"40444:20:165"}]}},{"assignments":[81568],"declarations":[{"constant":false,"id":81568,"mutability":"mutable","name":"_commitment","nameLocation":"40515:11:165","nodeType":"VariableDeclaration","scope":81594,"src":"40485:41:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment"},"typeName":{"id":81567,"nodeType":"UserDefinedTypeName","pathNode":{"id":81566,"name":"Gear.ChainCommitment","nameLocations":["40485:4:165","40490:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87470,"src":"40485:20:165"},"referencedDeclaration":87470,"src":"40485:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_storage_ptr","typeString":"struct Gear.ChainCommitment"}},"visibility":"internal"}],"id":81573,"initialValue":{"baseExpression":{"expression":{"id":81569,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81538,"src":"40529:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40536:15:165","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":87500,"src":"40529:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":81572,"indexExpression":{"hexValue":"30","id":81571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40552:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40529:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"40485:69:165"},{"assignments":[81575],"declarations":[{"constant":false,"id":81575,"mutability":"mutable","name":"_transitionsHash","nameLocation":"40573:16:165","nodeType":"VariableDeclaration","scope":81594,"src":"40565:24:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81574,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40565:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81581,"initialValue":{"arguments":[{"id":81577,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81535,"src":"40611:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":81578,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81568,"src":"40619:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":81579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40631:11:165","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":87466,"src":"40619:23:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":81576,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82160,"src":"40592:18:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":81580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40592:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"40565:78:165"},{"eventCall":{"arguments":[{"expression":{"id":81583,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81568,"src":"40678:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":81584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40690:4:165","memberName":"head","nodeType":"MemberAccess","referencedDeclaration":87469,"src":"40678:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":81582,"name":"AnnouncesCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74500,"src":"40659:18:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":81585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40659:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81586,"nodeType":"EmitStatement","src":"40654:41:165"},{"expression":{"arguments":[{"id":81589,"name":"_transitionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81575,"src":"40738:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81590,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81568,"src":"40756:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":81591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40768:4:165","memberName":"head","nodeType":"MemberAccess","referencedDeclaration":87469,"src":"40756:16:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81587,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"40713:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40718:19:165","memberName":"chainCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87746,"src":"40713:24:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":81592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40713:60:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81542,"id":81593,"nodeType":"Return","src":"40706:67:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitChain","nameLocation":"40106:12:165","parameters":{"id":81539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81535,"mutability":"mutable","name":"router","nameLocation":"40135:6:165","nodeType":"VariableDeclaration","scope":81595,"src":"40119:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81534,"nodeType":"UserDefinedTypeName","pathNode":{"id":81533,"name":"Storage","nameLocations":["40119:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"40119:7:165"},"referencedDeclaration":74490,"src":"40119:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81538,"mutability":"mutable","name":"_batch","nameLocation":"40173:6:165","nodeType":"VariableDeclaration","scope":81595,"src":"40143:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81537,"nodeType":"UserDefinedTypeName","pathNode":{"id":81536,"name":"Gear.BatchCommitment","nameLocations":["40143:4:165","40148:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"40143:20:165"},"referencedDeclaration":87516,"src":"40143:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"40118:62:165"},"returnParameters":{"id":81542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81595,"src":"40198:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81540,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40198:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"40197:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81737,"nodeType":"FunctionDefinition","src":"40786:1402:165","nodes":[],"body":{"id":81736,"nodeType":"Block","src":"40896:1292:165","nodes":[],"statements":[{"assignments":[81607],"declarations":[{"constant":false,"id":81607,"mutability":"mutable","name":"codeCommitmentsLen","nameLocation":"40914:18:165","nodeType":"VariableDeclaration","scope":81736,"src":"40906:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81606,"name":"uint256","nodeType":"ElementaryTypeName","src":"40906:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81611,"initialValue":{"expression":{"expression":{"id":81608,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81601,"src":"40935:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40942:15:165","memberName":"codeCommitments","nodeType":"MemberAccess","referencedDeclaration":87505,"src":"40935:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$87460_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":81610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40958:6:165","memberName":"length","nodeType":"MemberAccess","src":"40935:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40906:58:165"},{"assignments":[81613],"declarations":[{"constant":false,"id":81613,"mutability":"mutable","name":"codeCommitmentsHashSize","nameLocation":"40982:23:165","nodeType":"VariableDeclaration","scope":81736,"src":"40974:31:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81612,"name":"uint256","nodeType":"ElementaryTypeName","src":"40974:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81617,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81614,"name":"codeCommitmentsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81607,"src":"41008:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":81615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41029:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"41008:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40974:57:165"},{"assignments":[81619],"declarations":[{"constant":false,"id":81619,"mutability":"mutable","name":"codeCommitmentsPtr","nameLocation":"41049:18:165","nodeType":"VariableDeclaration","scope":81736,"src":"41041:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81618,"name":"uint256","nodeType":"ElementaryTypeName","src":"41041:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81624,"initialValue":{"arguments":[{"id":81622,"name":"codeCommitmentsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81613,"src":"41086:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":81620,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41070:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":81621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41077:8:165","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"41070:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":81623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41070:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41041:69:165"},{"assignments":[81626],"declarations":[{"constant":false,"id":81626,"mutability":"mutable","name":"offset","nameLocation":"41128:6:165","nodeType":"VariableDeclaration","scope":81736,"src":"41120:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81625,"name":"uint256","nodeType":"ElementaryTypeName","src":"41120:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81628,"initialValue":{"hexValue":"30","id":81627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41137:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41120:18:165"},{"body":{"id":81727,"nodeType":"Block","src":"41198:884:165","statements":[{"assignments":[81643],"declarations":[{"constant":false,"id":81643,"mutability":"mutable","name":"_commitment","nameLocation":"41241:11:165","nodeType":"VariableDeclaration","scope":81727,"src":"41212:40:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":81642,"nodeType":"UserDefinedTypeName","pathNode":{"id":81641,"name":"Gear.CodeCommitment","nameLocations":["41212:4:165","41217:14:165"],"nodeType":"IdentifierPath","referencedDeclaration":87460,"src":"41212:19:165"},"referencedDeclaration":87460,"src":"41212:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":81648,"initialValue":{"baseExpression":{"expression":{"id":81644,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81601,"src":"41255:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41262:15:165","memberName":"codeCommitments","nodeType":"MemberAccess","referencedDeclaration":87505,"src":"41255:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$87460_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":81647,"indexExpression":{"id":81646,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81630,"src":"41278:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41255:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"41212:68:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":81659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":81650,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81598,"src":"41320:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41327:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41320:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81652,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41340:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"41320:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81655,"indexExpression":{"expression":{"id":81653,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41346:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41358:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41346:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41320:41:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":81656,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41365:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41370:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"41365:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":81658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41380:19:165","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":87553,"src":"41365:34:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"41320:79:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81660,"name":"CodeValidationNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"41417:26:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41417:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81649,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"41295:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41295:164:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81663,"nodeType":"ExpressionStatement","src":"41295:164:165"},{"condition":{"expression":{"id":81664,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41478:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41490:5:165","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":87459,"src":"41478:17:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":81695,"nodeType":"Block","src":"41663:81:165","statements":[{"expression":{"id":81693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"41681:48:165","subExpression":{"baseExpression":{"expression":{"expression":{"id":81687,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81598,"src":"41688:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41695:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41688:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41708:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"41688:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81692,"indexExpression":{"expression":{"id":81690,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41714:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41726:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41714:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41688:41:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81694,"nodeType":"ExpressionStatement","src":"41681:48:165"}]},"id":81696,"nodeType":"IfStatement","src":"41474:270:165","trueBody":{"id":81686,"nodeType":"Block","src":"41497:160:165","statements":[{"expression":{"id":81677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":81666,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81598,"src":"41515:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41522:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41515:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41535:5:165","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"41515:25:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":81673,"indexExpression":{"expression":{"id":81669,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41541:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41553:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41541:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41515:41:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":81674,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41559:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41564:9:165","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"41559:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":81676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41574:9:165","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":87555,"src":"41559:24:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"41515:68:165","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":81678,"nodeType":"ExpressionStatement","src":"41515:68:165"},{"expression":{"id":81684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41601:41:165","subExpression":{"expression":{"expression":{"id":81679,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81598,"src":"41601:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81682,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41608:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41601:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":81683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41621:19:165","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":87615,"src":"41601:39:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81685,"nodeType":"ExpressionStatement","src":"41601:41:165"}]}},{"eventCall":{"arguments":[{"expression":{"id":81698,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41780:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41792:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41780:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81700,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41796:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41808:5:165","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":87459,"src":"41796:17:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":81697,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74507,"src":"41763:16:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":81702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41763:51:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81703,"nodeType":"EmitStatement","src":"41758:56:165"},{"assignments":[81705],"declarations":[{"constant":false,"id":81705,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"41837:18:165","nodeType":"VariableDeclaration","scope":81727,"src":"41829:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41829:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81713,"initialValue":{"arguments":[{"expression":{"id":81708,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41882:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41894:2:165","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41882:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81710,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81643,"src":"41898:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":81711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41910:5:165","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":87459,"src":"41898:17:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":81706,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41858:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41863:18:165","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87763,"src":"41858:23:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes32,bool) pure returns (bytes32)"}},"id":81712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41858:58:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"41829:87:165"},{"expression":{"arguments":[{"id":81717,"name":"codeCommitmentsPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81619,"src":"41956:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81718,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81626,"src":"41976:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":81719,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81705,"src":"41984:18:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":81714,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41930:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":81716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41937:18:165","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"41930:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":81720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41930:73:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81721,"nodeType":"ExpressionStatement","src":"41930:73:165"},{"id":81726,"nodeType":"UncheckedBlock","src":"42017:55:165","statements":[{"expression":{"id":81724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":81722,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81626,"src":"42045:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":81723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42055:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"42045:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81725,"nodeType":"ExpressionStatement","src":"42045:12:165"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81630,"src":"41169:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":81634,"name":"codeCommitmentsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81607,"src":"41173:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41169:22:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81728,"initializationExpression":{"assignments":[81630],"declarations":[{"constant":false,"id":81630,"mutability":"mutable","name":"i","nameLocation":"41162:1:165","nodeType":"VariableDeclaration","scope":81728,"src":"41154:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81629,"name":"uint256","nodeType":"ElementaryTypeName","src":"41154:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81632,"initialValue":{"hexValue":"30","id":81631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41166:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41154:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":81637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41193:3:165","subExpression":{"id":81636,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81630,"src":"41193:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":81638,"nodeType":"ExpressionStatement","src":"41193:3:165"},"nodeType":"ForStatement","src":"41149:933:165"},{"expression":{"arguments":[{"id":81731,"name":"codeCommitmentsPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81619,"src":"42134:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":81732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42154:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":81733,"name":"codeCommitmentsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81613,"src":"42157:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":81729,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"42099:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":81730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42106:27:165","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"42099:34:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":81734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42099:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81605,"id":81735,"nodeType":"Return","src":"42092:89:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitCodes","nameLocation":"40795:12:165","parameters":{"id":81602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81598,"mutability":"mutable","name":"router","nameLocation":"40824:6:165","nodeType":"VariableDeclaration","scope":81737,"src":"40808:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81597,"nodeType":"UserDefinedTypeName","pathNode":{"id":81596,"name":"Storage","nameLocations":["40808:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"40808:7:165"},"referencedDeclaration":74490,"src":"40808:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81601,"mutability":"mutable","name":"_batch","nameLocation":"40862:6:165","nodeType":"VariableDeclaration","scope":81737,"src":"40832:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81600,"nodeType":"UserDefinedTypeName","pathNode":{"id":81599,"name":"Gear.BatchCommitment","nameLocations":["40832:4:165","40837:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"40832:20:165"},"referencedDeclaration":87516,"src":"40832:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"40807:62:165"},"returnParameters":{"id":81605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81737,"src":"40887:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40887:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"40886:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":81894,"nodeType":"FunctionDefinition","src":"42230:1705:165","nodes":[],"body":{"id":81893,"nodeType":"Block","src":"42342:1593:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81749,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81743,"src":"42360:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42367:17:165","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":87510,"src":"42360:24:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":81751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42385:6:165","memberName":"length","nodeType":"MemberAccess","src":"42360:31:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":81752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42395:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"42360:36:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81754,"name":"TooManyRewardsCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"42398:25:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42398:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81748,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42352:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42352:74:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81757,"nodeType":"ExpressionStatement","src":"42352:74:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81758,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81743,"src":"42441:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42448:17:165","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":87510,"src":"42441:24:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":81760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42466:6:165","memberName":"length","nodeType":"MemberAccess","src":"42441:31:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42476:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42441:36:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81768,"nodeType":"IfStatement","src":"42437:179:165","trueBody":{"id":81767,"nodeType":"Block","src":"42479:137:165","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":81764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"42602:2:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":81763,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"42592:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":81765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42592:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81747,"id":81766,"nodeType":"Return","src":"42585:20:165"}]}},{"assignments":[81773],"declarations":[{"constant":false,"id":81773,"mutability":"mutable","name":"_commitment","nameLocation":"42658:11:165","nodeType":"VariableDeclaration","scope":81893,"src":"42626:43:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment"},"typeName":{"id":81772,"nodeType":"UserDefinedTypeName","pathNode":{"id":81771,"name":"Gear.RewardsCommitment","nameLocations":["42626:4:165","42631:17:165"],"nodeType":"IdentifierPath","referencedDeclaration":87526,"src":"42626:22:165"},"referencedDeclaration":87526,"src":"42626:22:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_storage_ptr","typeString":"struct Gear.RewardsCommitment"}},"visibility":"internal"}],"id":81778,"initialValue":{"baseExpression":{"expression":{"id":81774,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81743,"src":"42672:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42679:17:165","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":87510,"src":"42672:24:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":81777,"indexExpression":{"hexValue":"30","id":81776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42697:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42672:27:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"42626:73:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":81784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81780,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"42718:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42730:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"42718:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":81782,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81743,"src":"42742:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42749:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"42742:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"42718:45:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81785,"name":"RewardsCommitmentTimestampNotInPast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74616,"src":"42765:35:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42765:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81779,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42710:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42710:93:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81788,"nodeType":"ExpressionStatement","src":"42710:93:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":81795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81790,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"42821:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42833:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"42821:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"expression":{"id":81792,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"42846:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42853:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"42846:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42866:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"42846:29:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"42821:54:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81796,"name":"RewardsCommitmentPredatesGenesis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74618,"src":"42877:32:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42877:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81789,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42813:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42813:99:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81799,"nodeType":"ExpressionStatement","src":"42813:99:165"},{"assignments":[81801],"declarations":[{"constant":false,"id":81801,"mutability":"mutable","name":"commitmentEraIndex","nameLocation":"42931:18:165","nodeType":"VariableDeclaration","scope":81893,"src":"42923:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81800,"name":"uint256","nodeType":"ElementaryTypeName","src":"42923:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81808,"initialValue":{"arguments":[{"id":81804,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"42968:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":81805,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"42976:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42988:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"42976:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81802,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"42952:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42957:10:165","memberName":"eraIndexAt","nodeType":"MemberAccess","referencedDeclaration":88498,"src":"42952:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":81807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42952:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"42923:75:165"},{"assignments":[81810],"declarations":[{"constant":false,"id":81810,"mutability":"mutable","name":"batchEraIndex","nameLocation":"43016:13:165","nodeType":"VariableDeclaration","scope":81893,"src":"43008:21:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81809,"name":"uint256","nodeType":"ElementaryTypeName","src":"43008:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81817,"initialValue":{"arguments":[{"id":81813,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"43048:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":81814,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81743,"src":"43056:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43063:14:165","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"43056:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81811,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"43032:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43037:10:165","memberName":"eraIndexAt","nodeType":"MemberAccess","referencedDeclaration":88498,"src":"43032:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":81816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43032:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"43008:70:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81819,"name":"commitmentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81801,"src":"43097:18:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":81820,"name":"batchEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81810,"src":"43118:13:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43097:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81822,"name":"RewardsCommitmentEraNotPrevious","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74620,"src":"43133:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43133:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81818,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"43089:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43089:78:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81825,"nodeType":"ExpressionStatement","src":"43089:78:165"},{"assignments":[81827],"declarations":[{"constant":false,"id":81827,"mutability":"mutable","name":"_middleware","nameLocation":"43186:11:165","nodeType":"VariableDeclaration","scope":81893,"src":"43178:19:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81826,"name":"address","nodeType":"ElementaryTypeName","src":"43178:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":81831,"initialValue":{"expression":{"expression":{"id":81828,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"43200:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81829,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43207:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43200:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81830,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43221:10:165","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":87451,"src":"43200:31:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"43178:53:165"},{"assignments":[81833],"declarations":[{"constant":false,"id":81833,"mutability":"mutable","name":"success","nameLocation":"43246:7:165","nodeType":"VariableDeclaration","scope":81893,"src":"43241:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":81832,"name":"bool","nodeType":"ElementaryTypeName","src":"43241:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":81849,"initialValue":{"arguments":[{"id":81840,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81827,"src":"43324:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81841,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43337:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43349:9:165","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":87520,"src":"43337:21:165","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":81843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43359:6:165","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":87529,"src":"43337:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":81844,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43368:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43380:7:165","memberName":"stakers","nodeType":"MemberAccess","referencedDeclaration":87523,"src":"43368:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"}},"id":81846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43388:11:165","memberName":"totalAmount","nodeType":"MemberAccess","referencedDeclaration":87539,"src":"43368:31:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43337:62:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"expression":{"id":81835,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"43269:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81836,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43276:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43269:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43290:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"43269:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81834,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"43256:12:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":81838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43256:46:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":81839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43316:7:165","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":46823,"src":"43256:67:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":81848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43256:144:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"43241:159:165"},{"expression":{"arguments":[{"id":81851,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81833,"src":"43418:7:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81852,"name":"ApproveERC20Failed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74622,"src":"43427:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43427:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81850,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"43410:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43410:38:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81855,"nodeType":"ExpressionStatement","src":"43410:38:165"},{"assignments":[81857],"declarations":[{"constant":false,"id":81857,"mutability":"mutable","name":"_operatorRewardsHash","nameLocation":"43467:20:165","nodeType":"VariableDeclaration","scope":81893,"src":"43459:28:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81856,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43459:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81872,"initialValue":{"arguments":[{"expression":{"expression":{"id":81862,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81740,"src":"43571:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43578:13:165","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43571:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":81864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43592:11:165","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"43571:32:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":81865,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43605:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43617:9:165","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":87520,"src":"43605:21:165","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":81867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43627:6:165","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":87529,"src":"43605:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":81868,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43635:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43647:9:165","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":87520,"src":"43635:21:165","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":81870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43657:4:165","memberName":"root","nodeType":"MemberAccess","referencedDeclaration":87531,"src":"43635:26:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":81859,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81827,"src":"43502:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81858,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"43490:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$74131_$","typeString":"type(contract IMiddleware)"}},"id":81860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43490:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$74131","typeString":"contract IMiddleware"}},"id":81861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43528:25:165","memberName":"distributeOperatorRewards","nodeType":"MemberAccess","referencedDeclaration":74119,"src":"43490:63:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) external returns (bytes32)"}},"id":81871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43490:185:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43459:216:165"},{"assignments":[81874],"declarations":[{"constant":false,"id":81874,"mutability":"mutable","name":"_stakerRewardsHash","nameLocation":"43694:18:165","nodeType":"VariableDeclaration","scope":81893,"src":"43686:26:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81873,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43686:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":81884,"initialValue":{"arguments":[{"expression":{"id":81879,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43776:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43788:7:165","memberName":"stakers","nodeType":"MemberAccess","referencedDeclaration":87523,"src":"43776:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"}},{"expression":{"id":81881,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43797:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43809:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"43797:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"arguments":[{"id":81876,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81827,"src":"43739:11:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":81875,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"43727:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$74131_$","typeString":"type(contract IMiddleware)"}},"id":81877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43727:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$74131","typeString":"contract IMiddleware"}},"id":81878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43752:23:165","memberName":"distributeStakerRewards","nodeType":"MemberAccess","referencedDeclaration":74130,"src":"43727:48:165","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StakerRewardsCommitment_$87542_memory_ptr_$_t_uint48_$returns$_t_bytes32_$","typeString":"function (struct Gear.StakerRewardsCommitment memory,uint48) external returns (bytes32)"}},"id":81883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43727:92:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43686:133:165"},{"expression":{"arguments":[{"id":81887,"name":"_operatorRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81857,"src":"43864:20:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":81888,"name":"_stakerRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81874,"src":"43886:18:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":81889,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81773,"src":"43906:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":81890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43918:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"43906:21:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":81885,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"43837:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":81886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43842:21:165","memberName":"rewardsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87785,"src":"43837:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint48_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,uint48) pure returns (bytes32)"}},"id":81891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43837:91:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81747,"id":81892,"nodeType":"Return","src":"43830:98:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitRewards","nameLocation":"42239:14:165","parameters":{"id":81744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81740,"mutability":"mutable","name":"router","nameLocation":"42270:6:165","nodeType":"VariableDeclaration","scope":81894,"src":"42254:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81739,"nodeType":"UserDefinedTypeName","pathNode":{"id":81738,"name":"Storage","nameLocations":["42254:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"42254:7:165"},"referencedDeclaration":74490,"src":"42254:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81743,"mutability":"mutable","name":"_batch","nameLocation":"42308:6:165","nodeType":"VariableDeclaration","scope":81894,"src":"42278:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81742,"nodeType":"UserDefinedTypeName","pathNode":{"id":81741,"name":"Gear.BatchCommitment","nameLocations":["42278:4:165","42283:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"42278:20:165"},"referencedDeclaration":87516,"src":"42278:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"42253:62:165"},"returnParameters":{"id":81747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81894,"src":"42333:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81745,"name":"bytes32","nodeType":"ElementaryTypeName","src":"42333:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"42332:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82040,"nodeType":"FunctionDefinition","src":"44002:1657:165","nodes":[],"body":{"id":82039,"nodeType":"Block","src":"44117:1542:165","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81907,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81901,"src":"44135:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44142:20:165","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":87515,"src":"44135:27:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":81909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44163:6:165","memberName":"length","nodeType":"MemberAccess","src":"44135:34:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":81910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44173:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44135:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81912,"name":"TooManyValidatorsCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74624,"src":"44176:28:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44176:30:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81906,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44127:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44127:80:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81915,"nodeType":"ExpressionStatement","src":"44127:80:165"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81916,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81901,"src":"44222:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44229:20:165","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":87515,"src":"44222:27:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":81918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44250:6:165","memberName":"length","nodeType":"MemberAccess","src":"44222:34:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":81919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44260:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44222:39:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":81926,"nodeType":"IfStatement","src":"44218:182:165","trueBody":{"id":81925,"nodeType":"Block","src":"44263:137:165","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":81922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"44386:2:165","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":81921,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"44376:9:165","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":81923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44376:13:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81905,"id":81924,"nodeType":"Return","src":"44369:20:165"}]}},{"assignments":[81931],"declarations":[{"constant":false,"id":81931,"mutability":"mutable","name":"_commitment","nameLocation":"44445:11:165","nodeType":"VariableDeclaration","scope":82039,"src":"44410:46:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":81930,"nodeType":"UserDefinedTypeName","pathNode":{"id":81929,"name":"Gear.ValidatorsCommitment","nameLocations":["44410:4:165","44415:20:165"],"nodeType":"IdentifierPath","referencedDeclaration":87482,"src":"44410:25:165"},"referencedDeclaration":87482,"src":"44410:25:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"}],"id":81936,"initialValue":{"baseExpression":{"expression":{"id":81932,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81901,"src":"44459:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":81933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44466:20:165","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":87515,"src":"44459:27:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":81935,"indexExpression":{"hexValue":"30","id":81934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44487:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"44459:30:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"44410:79:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81938,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"44508:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44520:10:165","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":87479,"src":"44508:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":81940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44531:6:165","memberName":"length","nodeType":"MemberAccess","src":"44508:29:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":81941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44540:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44508:33:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81943,"name":"EmptyValidatorsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74626,"src":"44543:19:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44543:21:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44500:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44500:65:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81946,"nodeType":"ExpressionStatement","src":"44500:65:165"},{"assignments":[81948],"declarations":[{"constant":false,"id":81948,"mutability":"mutable","name":"currentEraIndex","nameLocation":"44638:15:165","nodeType":"VariableDeclaration","scope":82039,"src":"44630:23:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81947,"name":"uint256","nodeType":"ElementaryTypeName","src":"44630:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81960,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81949,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44657:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44663:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"44657:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":81951,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81898,"src":"44675:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44682:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"44675:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44695:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"44675:29:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"44657:47:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":81955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"44656:49:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":81956,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81898,"src":"44708:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44715:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44708:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":81958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44725:3:165","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"44708:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44656:72:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44630:98:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81962,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"44747:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44759:8:165","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"44747:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81964,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81948,"src":"44771:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":81965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44789:1:165","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44771:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44747:43:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81968,"name":"CommitmentEraNotNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74628,"src":"44792:20:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44792:22:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81961,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44739:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44739:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81971,"nodeType":"ExpressionStatement","src":"44739:76:165"},{"assignments":[81973],"declarations":[{"constant":false,"id":81973,"mutability":"mutable","name":"nextEraStart","nameLocation":"44834:12:165","nodeType":"VariableDeclaration","scope":82039,"src":"44826:20:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81972,"name":"uint256","nodeType":"ElementaryTypeName","src":"44826:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":81984,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81974,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81898,"src":"44849:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44856:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"44849:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":81976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44869:9:165","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"44849:29:165","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":81977,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81898,"src":"44881:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44888:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44881:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":81979,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44898:3:165","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"44881:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":81980,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"44904:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":81981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44916:8:165","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"44904:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44881:43:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44849:75:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44826:98:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":81986,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44942:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":81987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44948:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"44942:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":81992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":81988,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81973,"src":"44961:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":81989,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81898,"src":"44976:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":81990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44983:9:165","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44976:16:165","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":81991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44993:8:165","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":87668,"src":"44976:25:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44961:40:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44942:59:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":81994,"name":"ElectionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74630,"src":"45003:18:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":81995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45003:20:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":81985,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44934:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":81996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44934:90:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":81997,"nodeType":"ExpressionStatement","src":"44934:90:165"},{"assignments":[82002],"declarations":[{"constant":false,"id":82002,"mutability":"mutable","name":"_validators","nameLocation":"45106:11:165","nodeType":"VariableDeclaration","scope":82039,"src":"45082:35:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":82001,"nodeType":"UserDefinedTypeName","pathNode":{"id":82000,"name":"Gear.Validators","nameLocations":["45082:4:165","45087:10:165"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"45082:15:165"},"referencedDeclaration":87429,"src":"45082:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":82007,"initialValue":{"arguments":[{"id":82005,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81898,"src":"45147:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":82003,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"45120:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":82004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45125:21:165","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":88334,"src":"45120:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":82006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45120:34:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"45082:72:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82009,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"45172:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45184:16:165","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"45172:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":82011,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"45203:5:165","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":82012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45209:9:165","memberName":"timestamp","nodeType":"MemberAccess","src":"45203:15:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45172:46:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82014,"name":"ValidatorsAlreadyScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74632,"src":"45220:26:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45220:28:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82008,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"45164:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45164:85:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82017,"nodeType":"ExpressionStatement","src":"45164:85:165"},{"expression":{"arguments":[{"id":82019,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82002,"src":"45342:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":82020,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"45367:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":82021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45379:19:165","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87474,"src":"45367:31:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"}},{"expression":{"id":82022,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"45412:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":82023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45424:33:165","memberName":"verifiableSecretSharingCommitment","nodeType":"MemberAccess","referencedDeclaration":87476,"src":"45412:45:165","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":82024,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"45471:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":82025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45483:10:165","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":87479,"src":"45471:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":82026,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81973,"src":"45507:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"},{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82018,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82272,"src":"45312:16:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$87429_storage_ptr_$_t_struct$_AggregatedPublicKey_$87408_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,struct Gear.AggregatedPublicKey memory,bytes memory,address[] memory,uint256)"}},"id":82027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45312:217:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82028,"nodeType":"ExpressionStatement","src":"45312:217:165"},{"eventCall":{"arguments":[{"expression":{"id":82030,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"45571:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":82031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45583:8:165","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"45571:20:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82029,"name":"ValidatorsCommittedForEra","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74517,"src":"45545:25:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":82032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45545:47:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82033,"nodeType":"EmitStatement","src":"45540:52:165"},{"expression":{"arguments":[{"id":82036,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81931,"src":"45640:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":82034,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"45610:4:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":82035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45615:24:165","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87811,"src":"45610:29:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$87482_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":82037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45610:42:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":81905,"id":82038,"nodeType":"Return","src":"45603:49:165"}]},"documentation":{"id":81895,"nodeType":"StructuredDocumentation","src":"43941:56:165","text":" @dev Set validators for the next era."},"implemented":true,"kind":"function","modifiers":[],"name":"_commitValidators","nameLocation":"44011:17:165","parameters":{"id":81902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81898,"mutability":"mutable","name":"router","nameLocation":"44045:6:165","nodeType":"VariableDeclaration","scope":82040,"src":"44029:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":81897,"nodeType":"UserDefinedTypeName","pathNode":{"id":81896,"name":"Storage","nameLocations":["44029:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"44029:7:165"},"referencedDeclaration":74490,"src":"44029:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":81901,"mutability":"mutable","name":"_batch","nameLocation":"44083:6:165","nodeType":"VariableDeclaration","scope":82040,"src":"44053:36:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":81900,"nodeType":"UserDefinedTypeName","pathNode":{"id":81899,"name":"Gear.BatchCommitment","nameLocations":["44053:4:165","44058:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"44053:20:165"},"referencedDeclaration":87516,"src":"44053:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"44028:62:165"},"returnParameters":{"id":81905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82040,"src":"44108:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":81903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"44108:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"44107:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82160,"nodeType":"FunctionDefinition","src":"45665:1168:165","nodes":[],"body":{"id":82159,"nodeType":"Block","src":"45809:1024:165","nodes":[],"statements":[{"assignments":[82053],"declarations":[{"constant":false,"id":82053,"mutability":"mutable","name":"transitionsLen","nameLocation":"45827:14:165","nodeType":"VariableDeclaration","scope":82159,"src":"45819:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82052,"name":"uint256","nodeType":"ElementaryTypeName","src":"45819:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82056,"initialValue":{"expression":{"id":82054,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82047,"src":"45844:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":82055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45857:6:165","memberName":"length","nodeType":"MemberAccess","src":"45844:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45819:44:165"},{"assignments":[82058],"declarations":[{"constant":false,"id":82058,"mutability":"mutable","name":"transitionsHashSize","nameLocation":"45881:19:165","nodeType":"VariableDeclaration","scope":82159,"src":"45873:27:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82057,"name":"uint256","nodeType":"ElementaryTypeName","src":"45873:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82062,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82059,"name":"transitionsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82053,"src":"45903:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":82060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45920:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"45903:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45873:49:165"},{"assignments":[82064],"declarations":[{"constant":false,"id":82064,"mutability":"mutable","name":"transitionsHashesMemPtr","nameLocation":"45940:23:165","nodeType":"VariableDeclaration","scope":82159,"src":"45932:31:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82063,"name":"uint256","nodeType":"ElementaryTypeName","src":"45932:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82069,"initialValue":{"arguments":[{"id":82067,"name":"transitionsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82058,"src":"45982:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82065,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"45966:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":82066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45973:8:165","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"45966:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":82068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45966:36:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45932:70:165"},{"assignments":[82071],"declarations":[{"constant":false,"id":82071,"mutability":"mutable","name":"offset","nameLocation":"46020:6:165","nodeType":"VariableDeclaration","scope":82159,"src":"46012:14:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82070,"name":"uint256","nodeType":"ElementaryTypeName","src":"46012:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82073,"initialValue":{"hexValue":"30","id":82072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46029:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46012:18:165"},{"body":{"id":82150,"nodeType":"Block","src":"46086:640:165","statements":[{"assignments":[82088],"declarations":[{"constant":false,"id":82088,"mutability":"mutable","name":"transition","nameLocation":"46130:10:165","nodeType":"VariableDeclaration","scope":82150,"src":"46100:40:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":82087,"nodeType":"UserDefinedTypeName","pathNode":{"id":82086,"name":"Gear.StateTransition","nameLocations":["46100:4:165","46105:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"46100:20:165"},"referencedDeclaration":87663,"src":"46100:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":82092,"initialValue":{"baseExpression":{"id":82089,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82047,"src":"46143:12:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":82091,"indexExpression":{"id":82090,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82075,"src":"46156:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46143:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"46100:58:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":82101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":82094,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82043,"src":"46181:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":82095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46188:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"46181:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":82096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46201:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"46181:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":82099,"indexExpression":{"expression":{"id":82097,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82088,"src":"46210:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46221:7:165","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"46210:18:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46181:48:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46233:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"46181:53:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82102,"name":"UnknownProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"46236:14:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46236:16:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82093,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"46173:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46173:80:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82105,"nodeType":"ExpressionStatement","src":"46173:80:165"},{"assignments":[82107],"declarations":[{"constant":false,"id":82107,"mutability":"mutable","name":"value","nameLocation":"46276:5:165","nodeType":"VariableDeclaration","scope":82150,"src":"46268:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82106,"name":"uint128","nodeType":"ElementaryTypeName","src":"46268:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":82109,"initialValue":{"hexValue":"30","id":82108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46284:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46268:17:165"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":82117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":82113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":82110,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82088,"src":"46304:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46315:14:165","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"46304:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46333:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"46304:30:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":82116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"46338:38:165","subExpression":{"expression":{"id":82114,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82088,"src":"46339:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46350:26:165","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":87652,"src":"46339:37:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"46304:72:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82124,"nodeType":"IfStatement","src":"46300:144:165","trueBody":{"id":82123,"nodeType":"Block","src":"46378:66:165","statements":[{"expression":{"id":82121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82118,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82107,"src":"46396:5:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":82119,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82088,"src":"46404:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46415:14:165","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"46404:25:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"46396:33:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":82122,"nodeType":"ExpressionStatement","src":"46396:33:165"}]}},{"assignments":[82126],"declarations":[{"constant":false,"id":82126,"mutability":"mutable","name":"transitionHash","nameLocation":"46466:14:165","nodeType":"VariableDeclaration","scope":82150,"src":"46458:22:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82125,"name":"bytes32","nodeType":"ElementaryTypeName","src":"46458:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":82136,"initialValue":{"arguments":[{"id":82134,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82088,"src":"46548:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":82128,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82088,"src":"46491:10:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":82129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46502:7:165","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"46491:18:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82127,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"46483:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":82130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46483:27:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":82131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46511:22:165","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":74394,"src":"46483:50:165","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_StateTransition_$87663_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) payable external returns (bytes32)"}},"id":82133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":82132,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82107,"src":"46541:5:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"46483:64:165","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_StateTransition_$87663_memory_ptr_$returns$_t_bytes32_$value","typeString":"function (struct Gear.StateTransition memory) payable external returns (bytes32)"}},"id":82135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46483:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"46458:101:165"},{"expression":{"arguments":[{"id":82140,"name":"transitionsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82064,"src":"46599:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82141,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82071,"src":"46624:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":82142,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82126,"src":"46632:14:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":82137,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"46573:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":82139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46580:18:165","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"46573:25:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":82143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46573:74:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82144,"nodeType":"ExpressionStatement","src":"46573:74:165"},{"id":82149,"nodeType":"UncheckedBlock","src":"46661:55:165","statements":[{"expression":{"id":82147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":82145,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82071,"src":"46689:6:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":82146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46699:2:165","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"46689:12:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82148,"nodeType":"ExpressionStatement","src":"46689:12:165"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82078,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82075,"src":"46061:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":82079,"name":"transitionsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82053,"src":"46065:14:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46061:18:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82151,"initializationExpression":{"assignments":[82075],"declarations":[{"constant":false,"id":82075,"mutability":"mutable","name":"i","nameLocation":"46054:1:165","nodeType":"VariableDeclaration","scope":82151,"src":"46046:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82074,"name":"uint256","nodeType":"ElementaryTypeName","src":"46046:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82077,"initialValue":{"hexValue":"30","id":82076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46058:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46046:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":82082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"46081:3:165","subExpression":{"id":82081,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82075,"src":"46081:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82083,"nodeType":"ExpressionStatement","src":"46081:3:165"},"nodeType":"ForStatement","src":"46041:685:165"},{"expression":{"arguments":[{"id":82154,"name":"transitionsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82064,"src":"46778:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":82155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46803:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":82156,"name":"transitionsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82058,"src":"46806:19:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82152,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"46743:6:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":82153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46750:27:165","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"46743:34:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":82157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46743:83:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":82051,"id":82158,"nodeType":"Return","src":"46736:90:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"45674:18:165","parameters":{"id":82048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82043,"mutability":"mutable","name":"router","nameLocation":"45709:6:165","nodeType":"VariableDeclaration","scope":82160,"src":"45693:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":82042,"nodeType":"UserDefinedTypeName","pathNode":{"id":82041,"name":"Storage","nameLocations":["45693:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"45693:7:165"},"referencedDeclaration":74490,"src":"45693:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":82047,"mutability":"mutable","name":"_transitions","nameLocation":"45749:12:165","nodeType":"VariableDeclaration","scope":82160,"src":"45717:44:165","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":82045,"nodeType":"UserDefinedTypeName","pathNode":{"id":82044,"name":"Gear.StateTransition","nameLocations":["45717:4:165","45722:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"45717:20:165"},"referencedDeclaration":87663,"src":"45717:20:165","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":82046,"nodeType":"ArrayTypeName","src":"45717:22:165","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"45692:70:165"},"returnParameters":{"id":82051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82160,"src":"45796:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82049,"name":"bytes32","nodeType":"ElementaryTypeName","src":"45796:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"45795:9:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82272,"nodeType":"FunctionDefinition","src":"46839:1421:165","nodes":[],"body":{"id":82271,"nodeType":"Block","src":"47122:1138:165","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":82179,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82166,"src":"47512:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":82180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47536:1:165","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":87405,"src":"47512:25:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":82181,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82166,"src":"47539:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":82182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47563:1:165","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":87407,"src":"47539:25:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":82177,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"47489:5:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FROST_$40965_$","typeString":"type(library FROST)"}},"id":82178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47495:16:165","memberName":"isValidPublicKey","nodeType":"MemberAccess","referencedDeclaration":40634,"src":"47489:22:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}},"id":82183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47489:76:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82184,"name":"InvalidFROSTAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74547,"src":"47579:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47579:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82176,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"47468:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47468:154:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82187,"nodeType":"ExpressionStatement","src":"47468:154:165"},{"expression":{"id":82192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82188,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"47632:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47644:19:165","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"47632:31:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82191,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82166,"src":"47666:23:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"src":"47632:57:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":82193,"nodeType":"ExpressionStatement","src":"47632:57:165"},{"expression":{"id":82201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82194,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"47699:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47711:40:165","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":87416,"src":"47699:52:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":82199,"name":"_verifiableSecretSharingCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82168,"src":"47768:34:165","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":82197,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89044,"src":"47754:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SSTORE2_$89044_$","typeString":"type(library SSTORE2)"}},"id":82198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47762:5:165","memberName":"write","nodeType":"MemberAccess","referencedDeclaration":88900,"src":"47754:13:165","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":82200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47754:49:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47699:104:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82202,"nodeType":"ExpressionStatement","src":"47699:104:165"},{"body":{"id":82230,"nodeType":"Block","src":"47867:114:165","statements":[{"assignments":[82216],"declarations":[{"constant":false,"id":82216,"mutability":"mutable","name":"_validator","nameLocation":"47889:10:165","nodeType":"VariableDeclaration","scope":82230,"src":"47881:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82215,"name":"address","nodeType":"ElementaryTypeName","src":"47881:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":82221,"initialValue":{"baseExpression":{"expression":{"id":82217,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"47902:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47914:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"47902:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":82220,"indexExpression":{"id":82219,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82204,"src":"47919:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47902:19:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47881:40:165"},{"expression":{"id":82228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":82222,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"47935:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47947:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"47935:15:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":82226,"indexExpression":{"id":82224,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82216,"src":"47951:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"47935:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":82227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"47965:5:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"47935:35:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82229,"nodeType":"ExpressionStatement","src":"47935:35:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82204,"src":"47833:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":82208,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"47837:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47849:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"47837:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":82210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47854:6:165","memberName":"length","nodeType":"MemberAccess","src":"47837:23:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47833:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82231,"initializationExpression":{"assignments":[82204],"declarations":[{"constant":false,"id":82204,"mutability":"mutable","name":"i","nameLocation":"47826:1:165","nodeType":"VariableDeclaration","scope":82231,"src":"47818:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82203,"name":"uint256","nodeType":"ElementaryTypeName","src":"47818:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82206,"initialValue":{"hexValue":"30","id":82205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47830:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"47818:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":82213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"47862:3:165","subExpression":{"id":82212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82204,"src":"47862:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82214,"nodeType":"ExpressionStatement","src":"47862:3:165"},"nodeType":"ForStatement","src":"47813:168:165"},{"body":{"id":82257,"nodeType":"Block","src":"48042:111:165","statements":[{"assignments":[82244],"declarations":[{"constant":false,"id":82244,"mutability":"mutable","name":"_validator","nameLocation":"48064:10:165","nodeType":"VariableDeclaration","scope":82257,"src":"48056:18:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82243,"name":"address","nodeType":"ElementaryTypeName","src":"48056:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":82248,"initialValue":{"baseExpression":{"id":82245,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82171,"src":"48077:14:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":82247,"indexExpression":{"id":82246,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82233,"src":"48092:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"48077:17:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"48056:38:165"},{"expression":{"id":82255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":82249,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"48108:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48120:3:165","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"48108:15:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":82253,"indexExpression":{"id":82251,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82244,"src":"48124:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"48108:27:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":82254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"48138:4:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"48108:34:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82256,"nodeType":"ExpressionStatement","src":"48108:34:165"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82236,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82233,"src":"48010:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":82237,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82171,"src":"48014:14:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":82238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48029:6:165","memberName":"length","nodeType":"MemberAccess","src":"48014:21:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"48010:25:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":82258,"initializationExpression":{"assignments":[82233],"declarations":[{"constant":false,"id":82233,"mutability":"mutable","name":"i","nameLocation":"48003:1:165","nodeType":"VariableDeclaration","scope":82258,"src":"47995:9:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82232,"name":"uint256","nodeType":"ElementaryTypeName","src":"47995:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":82235,"initialValue":{"hexValue":"30","id":82234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"48007:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"47995:13:165"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":82241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"48037:3:165","subExpression":{"id":82240,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82233,"src":"48037:1:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82242,"nodeType":"ExpressionStatement","src":"48037:3:165"},"nodeType":"ForStatement","src":"47990:163:165"},{"expression":{"id":82263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82259,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"48162:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48174:4:165","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"48162:16:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82262,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82171,"src":"48181:14:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"48162:33:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":82264,"nodeType":"ExpressionStatement","src":"48162:33:165"},{"expression":{"id":82269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":82265,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82163,"src":"48205:11:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":82267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48217:16:165","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"48205:28:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82268,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82173,"src":"48236:17:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"48205:48:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":82270,"nodeType":"ExpressionStatement","src":"48205:48:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"46848:16:165","parameters":{"id":82174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82163,"mutability":"mutable","name":"_validators","nameLocation":"46898:11:165","nodeType":"VariableDeclaration","scope":82272,"src":"46874:35:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":82162,"nodeType":"UserDefinedTypeName","pathNode":{"id":82161,"name":"Gear.Validators","nameLocations":["46874:4:165","46879:10:165"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"46874:15:165"},"referencedDeclaration":87429,"src":"46874:15:165","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":82166,"mutability":"mutable","name":"_newAggregatedPublicKey","nameLocation":"46951:23:165","nodeType":"VariableDeclaration","scope":82272,"src":"46919:55:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":82165,"nodeType":"UserDefinedTypeName","pathNode":{"id":82164,"name":"Gear.AggregatedPublicKey","nameLocations":["46919:4:165","46924:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"46919:24:165"},"referencedDeclaration":87408,"src":"46919:24:165","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":82168,"mutability":"mutable","name":"_verifiableSecretSharingCommitment","nameLocation":"46997:34:165","nodeType":"VariableDeclaration","scope":82272,"src":"46984:47:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":82167,"name":"bytes","nodeType":"ElementaryTypeName","src":"46984:5:165","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":82171,"mutability":"mutable","name":"_newValidators","nameLocation":"47058:14:165","nodeType":"VariableDeclaration","scope":82272,"src":"47041:31:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":82169,"name":"address","nodeType":"ElementaryTypeName","src":"47041:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":82170,"nodeType":"ArrayTypeName","src":"47041:9:165","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":82173,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"47090:17:165","nodeType":"VariableDeclaration","scope":82272,"src":"47082:25:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82172,"name":"uint256","nodeType":"ElementaryTypeName","src":"47082:7:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46864:249:165"},"returnParameters":{"id":82175,"nodeType":"ParameterList","parameters":[],"src":"47122:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82285,"nodeType":"FunctionDefinition","src":"48266:192:165","nodes":[],"body":{"id":82284,"nodeType":"Block","src":"48331:127:165","nodes":[],"statements":[{"assignments":[82279],"declarations":[{"constant":false,"id":82279,"mutability":"mutable","name":"slot","nameLocation":"48349:4:165","nodeType":"VariableDeclaration","scope":82284,"src":"48341:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82278,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48341:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":82282,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":82280,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82297,"src":"48356:15:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":82281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48356:17:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"48341:32:165"},{"AST":{"nativeSrc":"48409:43:165","nodeType":"YulBlock","src":"48409:43:165","statements":[{"nativeSrc":"48423:19:165","nodeType":"YulAssignment","src":"48423:19:165","value":{"name":"slot","nativeSrc":"48438:4:165","nodeType":"YulIdentifier","src":"48438:4:165"},"variableNames":[{"name":"router.slot","nativeSrc":"48423:11:165","nodeType":"YulIdentifier","src":"48423:11:165"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":82276,"isOffset":false,"isSlot":true,"src":"48423:11:165","suffix":"slot","valueSize":1},{"declaration":82279,"isOffset":false,"isSlot":false,"src":"48438:4:165","valueSize":1}],"flags":["memory-safe"],"id":82283,"nodeType":"InlineAssembly","src":"48384:68:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"48275:7:165","parameters":{"id":82273,"nodeType":"ParameterList","parameters":[],"src":"48282:2:165"},"returnParameters":{"id":82277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82276,"mutability":"mutable","name":"router","nameLocation":"48323:6:165","nodeType":"VariableDeclaration","scope":82285,"src":"48307:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":82275,"nodeType":"UserDefinedTypeName","pathNode":{"id":82274,"name":"Storage","nameLocations":["48307:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"48307:7:165"},"referencedDeclaration":74490,"src":"48307:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"48306:24:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":82297,"nodeType":"FunctionDefinition","src":"48464:128:165","nodes":[],"body":{"id":82296,"nodeType":"Block","src":"48522:70:165","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":82292,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79532,"src":"48566:12:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":82290,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"48539:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":82291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48551:14:165","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"48539:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":82293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48539:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":82294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48580:5:165","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"48539:46:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":82289,"id":82295,"nodeType":"Return","src":"48532:53:165"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"48473:15:165","parameters":{"id":82286,"nodeType":"ParameterList","parameters":[],"src":"48488:2:165"},"returnParameters":{"id":82289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82288,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82297,"src":"48513:7:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48513:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"48512:9:165"},"scope":82385,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":82325,"nodeType":"FunctionDefinition","src":"48598:240:165","nodes":[],"body":{"id":82324,"nodeType":"Block","src":"48666:172:165","nodes":[],"statements":[{"assignments":[82305],"declarations":[{"constant":false,"id":82305,"mutability":"mutable","name":"slot","nameLocation":"48684:4:165","nodeType":"VariableDeclaration","scope":82324,"src":"48676:12:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":82304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48676:7:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":82310,"initialValue":{"arguments":[{"id":82308,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82299,"src":"48718:9:165","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":82306,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"48691:14:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":82307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48706:11:165","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"48691:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":82309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48691:37:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"48676:52:165"},{"expression":{"id":82318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":82314,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79532,"src":"48765:12:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":82311,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"48738:11:165","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":82313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48750:14:165","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"48738:26:165","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":82315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48738:40:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":82316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48779:5:165","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"48738:46:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":82317,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82305,"src":"48787:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"48738:53:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":82319,"nodeType":"ExpressionStatement","src":"48738:53:165"},{"eventCall":{"arguments":[{"id":82321,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82305,"src":"48826:4:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":82320,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74536,"src":"48807:18:165","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":82322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48807:24:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82323,"nodeType":"EmitStatement","src":"48802:29:165"}]},"implemented":true,"kind":"function","modifiers":[{"id":82302,"kind":"modifierInvocation","modifierName":{"id":82301,"name":"onlyOwner","nameLocations":["48656:9:165"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"48656:9:165"},"nodeType":"ModifierInvocation","src":"48656:9:165"}],"name":"_setStorageSlot","nameLocation":"48607:15:165","parameters":{"id":82300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82299,"mutability":"mutable","name":"namespace","nameLocation":"48637:9:165","nodeType":"VariableDeclaration","scope":82325,"src":"48623:23:165","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":82298,"name":"string","nodeType":"ElementaryTypeName","src":"48623:6:165","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"48622:25:165"},"returnParameters":{"id":82303,"nodeType":"ParameterList","parameters":[],"src":"48666:0:165"},"scope":82385,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":82384,"nodeType":"FunctionDefinition","src":"48986:396:165","nodes":[],"body":{"id":82383,"nodeType":"Block","src":"49027:355:165","nodes":[],"statements":[{"assignments":[82333],"declarations":[{"constant":false,"id":82333,"mutability":"mutable","name":"router","nameLocation":"49053:6:165","nodeType":"VariableDeclaration","scope":82383,"src":"49037:22:165","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":82332,"nodeType":"UserDefinedTypeName","pathNode":{"id":82331,"name":"Storage","nameLocations":["49037:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"49037:7:165"},"referencedDeclaration":74490,"src":"49037:7:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":82336,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":82334,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82285,"src":"49062:7:165","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":82335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49062:9:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"49037:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":82345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":82338,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82333,"src":"49089:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":82339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49096:12:165","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"49089:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":82340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49109:4:165","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"49089:24:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":82343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49125:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":82342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49117:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":82341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"49117:7:165","typeDescriptions":{}}},"id":82344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49117:10:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"49089:38:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82346,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"49129:31:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49129:33:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82337,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49081:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49081:82:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82349,"nodeType":"ExpressionStatement","src":"49081:82:165"},{"assignments":[82351],"declarations":[{"constant":false,"id":82351,"mutability":"mutable","name":"value","nameLocation":"49182:5:165","nodeType":"VariableDeclaration","scope":82383,"src":"49174:13:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":82350,"name":"uint128","nodeType":"ElementaryTypeName","src":"49174:7:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":82357,"initialValue":{"arguments":[{"expression":{"id":82354,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"49198:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49202:5:165","memberName":"value","nodeType":"MemberAccess","src":"49198:9:165","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49190:7:165","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":82352,"name":"uint128","nodeType":"ElementaryTypeName","src":"49190:7:165","typeDescriptions":{}}},"id":82356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49190:18:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"49174:34:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":82361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82351,"src":"49226:5:165","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":82360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49234:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"49226:9:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82362,"name":"ZeroValueTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74636,"src":"49237:17:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49237:19:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82358,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49218:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49218:39:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82365,"nodeType":"ExpressionStatement","src":"49218:39:165"},{"assignments":[82367],"declarations":[{"constant":false,"id":82367,"mutability":"mutable","name":"actorId","nameLocation":"49276:7:165","nodeType":"VariableDeclaration","scope":82383,"src":"49268:15:165","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82366,"name":"address","nodeType":"ElementaryTypeName","src":"49268:7:165","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":82370,"initialValue":{"expression":{"id":82368,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"49286:3:165","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":82369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49290:6:165","memberName":"sender","nodeType":"MemberAccess","src":"49286:10:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"49268:28:165"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":82378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":82372,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82333,"src":"49314:6:165","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":82373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49321:12:165","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"49314:19:165","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":82374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49334:8:165","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"49314:28:165","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":82376,"indexExpression":{"id":82375,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82367,"src":"49343:7:165","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"49314:37:165","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":82377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49355:1:165","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"49314:42:165","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":82379,"name":"UnknownProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"49358:14:165","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":82380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49358:16:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":82371,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49306:7:165","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":82381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49306:69:165","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82382,"nodeType":"ExpressionStatement","src":"49306:69:165"}]},"documentation":{"id":82326,"nodeType":"StructuredDocumentation","src":"48844:137:165","text":" @dev Receives Ether from the `Mirror` instances when they\n perform state transitions with `valueToReceive`."},"implemented":true,"kind":"receive","modifiers":[{"id":82329,"kind":"modifierInvocation","modifierName":{"id":82328,"name":"whenNotPaused","nameLocations":["49013:13:165"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"49013:13:165"},"nodeType":"ModifierInvocation","src":"49013:13:165"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":82327,"nodeType":"ParameterList","parameters":[],"src":"48993:2:165"},"returnParameters":{"id":82330,"nodeType":"ParameterList","parameters":[],"src":"49027:0:165"},"scope":82385,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":79516,"name":"IRouter","nameLocations":["1576:7:165"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"1576:7:165"},"id":79517,"nodeType":"InheritanceSpecifier","src":"1576:7:165"},{"baseName":{"id":79518,"name":"OwnableUpgradeable","nameLocations":["1589:18:165"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"1589:18:165"},"id":79519,"nodeType":"InheritanceSpecifier","src":"1589:18:165"},{"baseName":{"id":79520,"name":"PausableUpgradeable","nameLocations":["1613:19:165"],"nodeType":"IdentifierPath","referencedDeclaration":43858,"src":"1613:19:165"},"id":79521,"nodeType":"InheritanceSpecifier","src":"1613:19:165"},{"baseName":{"id":79522,"name":"EIP712Upgradeable","nameLocations":["1638:17:165"],"nodeType":"IdentifierPath","referencedDeclaration":44416,"src":"1638:17:165"},"id":79523,"nodeType":"InheritanceSpecifier","src":"1638:17:165"},{"baseName":{"id":79524,"name":"NoncesUpgradeable","nameLocations":["1661:17:165"],"nodeType":"IdentifierPath","referencedDeclaration":43698,"src":"1661:17:165"},"id":79525,"nodeType":"InheritanceSpecifier","src":"1661:17:165"},{"baseName":{"id":79526,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["1684:35:165"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"1684:35:165"},"id":79527,"nodeType":"InheritanceSpecifier","src":"1684:35:165"},{"baseName":{"id":79528,"name":"UUPSUpgradeable","nameLocations":["1725:15:165"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"1725:15:165"},"id":79529,"nodeType":"InheritanceSpecifier","src":"1725:15:165"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[82385,46243,44833,43943,43698,44416,44823,43858,42322,43484,42590,74985],"name":"Router","nameLocation":"1562:6:165","scope":82386,"usedErrors":[42158,42163,42339,42342,43601,43737,43740,43875,45427,45440,46100,46105,47372,48774,50701,50706,50711,53880,74539,74542,74545,74547,74550,74553,74556,74559,74562,74565,74572,74581,74586,74593,74596,74598,74600,74602,74604,74606,74608,74610,74612,74614,74616,74618,74620,74622,74624,74626,74628,74630,74632,74634,74636,87384,87387,87390,87393,87396,87399,87402],"usedEvents":[42169,42347,43729,43734,44781,44803,74495,74500,74507,74512,74517,74524,74531,74536,79560]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":165} \ No newline at end of file diff --git a/ethexe/ethereum/abi/RouterWithInstrumentation.json b/ethexe/ethereum/abi/RouterWithInstrumentation.json new file mode 100644 index 00000000000..9a77fa7b30f --- /dev/null +++ b/ethexe/ethereum/abi/RouterWithInstrumentation.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"COMMIT_BATCH_AFTER_COMMIT_CODES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"areValidators","inputs":[{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Gear.CodeState"}],"stateMutability":"view"},{"type":"function","name":"codesStates","inputs":[{"name":"_codesIds","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"uint8[]","internalType":"enum Gear.CodeState[]"}],"stateMutability":"view"},{"type":"function","name":"commitBatch","inputs":[{"name":"_batch","type":"tuple","internalType":"struct Gear.BatchCommitment","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"blockTimestamp","type":"uint48","internalType":"uint48"},{"name":"previousCommittedBatchHash","type":"bytes32","internalType":"bytes32"},{"name":"expiry","type":"uint8","internalType":"uint8"},{"name":"chainCommitment","type":"tuple[]","internalType":"struct Gear.ChainCommitment[]","components":[{"name":"transitions","type":"tuple[]","internalType":"struct Gear.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"exited","type":"bool","internalType":"bool"},{"name":"inheritor","type":"address","internalType":"address"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueToReceiveNegativeSign","type":"bool","internalType":"bool"},{"name":"valueClaims","type":"tuple[]","internalType":"struct Gear.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct Gear.Message[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct Gear.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]},{"name":"call","type":"bool","internalType":"bool"}]}]},{"name":"head","type":"bytes32","internalType":"bytes32"}]},{"name":"codeCommitments","type":"tuple[]","internalType":"struct Gear.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"rewardsCommitment","type":"tuple[]","internalType":"struct Gear.RewardsCommitment[]","components":[{"name":"operators","type":"tuple","internalType":"struct Gear.OperatorRewardsCommitment","components":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"root","type":"bytes32","internalType":"bytes32"}]},{"name":"stakers","type":"tuple","internalType":"struct Gear.StakerRewardsCommitment","components":[{"name":"distribution","type":"tuple[]","internalType":"struct Gear.StakerRewards[]","components":[{"name":"vault","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"totalAmount","type":"uint256","internalType":"uint256"},{"name":"token","type":"address","internalType":"address"}]},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"validatorsCommitment","type":"tuple[]","internalType":"struct Gear.ValidatorsCommitment[]","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitment","type":"bytes","internalType":"bytes"},{"name":"validators","type":"address[]","internalType":"address[]"},{"name":"eraIndex","type":"uint256","internalType":"uint256"}]}]},{"name":"_signatureType","type":"uint8","internalType":"enum Gear.SignatureType"},{"name":"_signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeSettings","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"createProgram","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithAbiInterface","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithAbiInterfaceAndExecutableBalance","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_abiInterface","type":"address","internalType":"address"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createProgramWithExecutableBalance","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_salt","type":"bytes32","internalType":"bytes32"},{"name":"_overrideInitializer","type":"address","internalType":"address"},{"name":"_initialExecutableBalance","type":"uint128","internalType":"uint128"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"genesisTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_middleware","type":"address","internalType":"address"},{"name":"_eraDuration","type":"uint256","internalType":"uint256"},{"name":"_electionDuration","type":"uint256","internalType":"uint256"},{"name":"_validationDelay","type":"uint256","internalType":"uint256"},{"name":"_aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"_verifiableSecretSharingCommitment","type":"bytes","internalType":"bytes"},{"name":"_validators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isValidator","inputs":[{"name":"_validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBatchHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"latestCommittedBatchTimestamp","inputs":[],"outputs":[{"name":"","type":"uint48","internalType":"uint48"}],"stateMutability":"view"},{"type":"function","name":"lookupGenesisHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"middleware","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorImpl","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"_programId","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCodeIds","inputs":[{"name":"_programsIds","type":"address[]","internalType":"address[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v","type":"uint8","internalType":"uint8"},{"name":"_r","type":"bytes32","internalType":"bytes32"},{"name":"_s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidationBaseFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestCodeValidationExtraFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestCodeValidationOnBehalf","inputs":[{"name":"_requester","type":"address","internalType":"address"},{"name":"_codeId","type":"bytes32","internalType":"bytes32"},{"name":"_blobHashes","type":"bytes32[]","internalType":"bytes32[]"},{"name":"_deadline","type":"uint256","internalType":"uint256"},{"name":"_v1","type":"uint8","internalType":"uint8"},{"name":"_r1","type":"bytes32","internalType":"bytes32"},{"name":"_s1","type":"bytes32","internalType":"bytes32"},{"name":"_v2","type":"uint8","internalType":"uint8"},{"name":"_r2","type":"bytes32","internalType":"bytes32"},{"name":"_s2","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"newMirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCodeValidationBaseFee","inputs":[{"name":"newBaseFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRequestCodeValidationExtraFee","inputs":[{"name":"newExtraFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdFraction","inputs":[],"outputs":[{"name":"thresholdNumerator","type":"uint128","internalType":"uint128"},{"name":"thresholdDenominator","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"storageView","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IRouter.StorageView","components":[{"name":"genesisBlock","type":"tuple","internalType":"struct Gear.GenesisBlockInfo","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"number","type":"uint32","internalType":"uint32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"latestCommittedBatch","type":"tuple","internalType":"struct Gear.CommittedBatchInfo","components":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint48","internalType":"uint48"}]},{"name":"implAddresses","type":"tuple","internalType":"struct Gear.AddressBook","components":[{"name":"mirror","type":"address","internalType":"address"},{"name":"wrappedVara","type":"address","internalType":"address"},{"name":"middleware","type":"address","internalType":"address"}]},{"name":"validationSettings","type":"tuple","internalType":"struct Gear.ValidationSettingsView","components":[{"name":"thresholdNumerator","type":"uint128","internalType":"uint128"},{"name":"thresholdDenominator","type":"uint128","internalType":"uint128"},{"name":"validators0","type":"tuple","internalType":"struct Gear.ValidatorsView","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitmentPointer","type":"address","internalType":"address"},{"name":"list","type":"address[]","internalType":"address[]"},{"name":"useFromTimestamp","type":"uint256","internalType":"uint256"}]},{"name":"validators1","type":"tuple","internalType":"struct Gear.ValidatorsView","components":[{"name":"aggregatedPublicKey","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]},{"name":"verifiableSecretSharingCommitmentPointer","type":"address","internalType":"address"},{"name":"list","type":"address[]","internalType":"address[]"},{"name":"useFromTimestamp","type":"uint256","internalType":"uint256"}]}]},{"name":"computeSettings","type":"tuple","internalType":"struct Gear.ComputationSettings","components":[{"name":"threshold","type":"uint64","internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","internalType":"uint128"}]},{"name":"timelines","type":"tuple","internalType":"struct Gear.Timelines","components":[{"name":"era","type":"uint256","internalType":"uint256"},{"name":"election","type":"uint256","internalType":"uint256"},{"name":"validationDelay","type":"uint256","internalType":"uint256"}]},{"name":"programsCount","type":"uint256","internalType":"uint256"},{"name":"validatedCodesCount","type":"uint256","internalType":"uint256"},{"name":"maxValidators","type":"uint16","internalType":"uint16"},{"name":"requestCodeValidationBaseFee","type":"uint256","internalType":"uint256"},{"name":"requestCodeValidationExtraFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"timelines","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.Timelines","components":[{"name":"era","type":"uint256","internalType":"uint256"},{"name":"election","type":"uint256","internalType":"uint256"},{"name":"validationDelay","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsAggregatedPublicKey","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Gear.AggregatedPublicKey","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsVerifiableSecretSharingCommitment","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"AnnouncesCommitted","inputs":[{"name":"head","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BatchCommitted","inputs":[{"name":"hash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ComputationSettingsChanged","inputs":[{"name":"threshold","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"wvaraPerSecond","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"DebugEvent","inputs":[{"name":"topic0","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":true},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[{"name":"slot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ValidatorsCommittedForEra","inputs":[{"name":"eraIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ApproveERC20Failed","inputs":[]},{"type":"error","name":"BatchTimestampNotInPast","inputs":[]},{"type":"error","name":"BatchTimestampTooEarly","inputs":[]},{"type":"error","name":"BlobNotFound","inputs":[]},{"type":"error","name":"CodeAlreadyOnValidationOrValidated","inputs":[]},{"type":"error","name":"CodeNotValidated","inputs":[]},{"type":"error","name":"CodeValidationNotRequested","inputs":[]},{"type":"error","name":"CommitmentEraNotNext","inputs":[]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ElectionNotStarted","inputs":[]},{"type":"error","name":"EmptyValidatorsList","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"EraDurationTooShort","inputs":[]},{"type":"error","name":"ErasTimestampMustNotBeEqual","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisHashAlreadySet","inputs":[]},{"type":"error","name":"GenesisHashNotFound","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidBlobHash","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"providedBlobHash","type":"bytes32","internalType":"bytes32"},{"name":"expectedBlobHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidBlobHashesLength","inputs":[{"name":"providedLength","type":"uint256","internalType":"uint256"},{"name":"expectedLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidElectionDuration","inputs":[]},{"type":"error","name":"InvalidFROSTAggregatedPublicKey","inputs":[]},{"type":"error","name":"InvalidFrostSignatureCount","inputs":[]},{"type":"error","name":"InvalidFrostSignatureLength","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidPreviousCommittedBatchHash","inputs":[]},{"type":"error","name":"InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"requester","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidTimestamp","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"PredecessorBlockNotFound","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RewardsCommitmentEraNotPrevious","inputs":[]},{"type":"error","name":"RewardsCommitmentPredatesGenesis","inputs":[]},{"type":"error","name":"RewardsCommitmentTimestampNotInPast","inputs":[]},{"type":"error","name":"RouterGenesisHashNotInitialized","inputs":[]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SignatureVerificationFailed","inputs":[]},{"type":"error","name":"TimestampInFuture","inputs":[]},{"type":"error","name":"TimestampOlderThanPreviousEra","inputs":[]},{"type":"error","name":"TooManyChainCommitments","inputs":[]},{"type":"error","name":"TooManyRewardsCommitments","inputs":[]},{"type":"error","name":"TooManyValidatorsCommitments","inputs":[]},{"type":"error","name":"TransferFromFailed","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnknownProgram","inputs":[]},{"type":"error","name":"ValidationBeforeGenesis","inputs":[]},{"type":"error","name":"ValidationDelayTooBig","inputs":[]},{"type":"error","name":"ValidatorsAlreadyScheduled","inputs":[]},{"type":"error","name":"ValidatorsNotFoundForTimestamp","inputs":[]},{"type":"error","name":"ZeroValueTransfer","inputs":[]}],"bytecode":{"object":"0x60a080604052346100c257306080525f516020615a365f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b60405161596f90816100c78239608051818181612b300152612bc30152f35b6001600160401b0319166001600160401b039081175f516020615a365f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080806040526004361015610091575b50361561001a575f80fd5b610022613a64565b5f5160206158ef5f395f51905f5254600181015415610082576001600160801b0334161561007357335f908152601a9190910160205260409020541561006457005b63821a62f560e01b5f5260045ffd5b63a1a7c6eb60e01b5f5260045ffd5b63580683f360e01b5f5260045ffd5b5f905f3560e01c9081627a32e71461330a575080630b9737ce146132d75780630c18d2771461320c5780630d91bf2a1461303e57806311bec80d1461300b578063188509e914612fdd57806328e24b3d14612faf5780633644e51514612f945780633683c4d214612ed75780633bd109fa14612e885780633d43b41814612e345780633f4ba83a14612db45780634429e24b14612d985780634f1ef28614612b8457806352d1902d14612b1d57806353f7fd48146122fa5780635c975abb146122cb5780636c2eb35014611d5c578063715018a614611cf357806371a8cf2d14611cc55780637ecebe0014611c6d57806382bdeaad14611b555780638456cb5914611ae257806384b0196e146119ba57806384d22a4f1461195c57806388f50cf0146119235780638b1edf1e146118c45780638c4ace6a146117645780638da5cb5b1461172f5780638f381dbe146116e95780639067088e146116a057806396a2ddfa146116725780639eb939a81461161b578063a5d53a441461159b578063ad2b3d9a1461157f578063ad3cb1cc14611536578063b24fcac014611096578063baaf020114610f99578063c13911e814610f55578063c2eb812f14610bce578063ca1e781914610b7e578063cacf66ab14610b46578063d456fd5114610b10578063e3a6684f14610ad1578063e6fabc0914610a98578063ed612f8c14610a60578063edc8722514610a0b578063ee32004f14610825578063f0fd702a146103cd578063f1ef31ec1461039f578063f2fde38b14610372578063f4f20ac0146103395763facd743b0361000f5734610336576020366003190112610336576102f8613360565b60036103135f5160206158ef5f395f51905f525442906152f7565b019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346103365780600319360112610336575f5160206158ef5f395f51905f5254600701546040516001600160a01b039091168152602090f35b50346103365760203660031901126103365761039c61038f613360565b610397613a31565b6139c0565b80f35b50346103365780600319360112610336576020601f5f5160206158ef5f395f51905f52540154604051908152f35b503461033657610140366003190112610336576103e8613360565b602435906044356001600160401b0381116108215761040b9036906004016134af565b90916064359060843560ff8116810361081d5760e4359060ff8216820361081957610434613a64565b87491561080a575f5160206158ef5f395f51905f5254946001860154156107fb576019860196888a528760205260ff60408b20541660038110156107e7576107d857895b80496107ca578083036107b35750895b82811061076c57508542116107585760405160208101906001600160fb1b038411610754576104d360208261059e956105a79760051b8091873781010301601f19810183528261341f565b5190209260018060a01b03861693848c527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408c208054906001820190556040519060208201927f375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b809784528760408401528d6060840152608083015260a08201528860c082015260c0815261056c60e08261341f565b519020610577615296565b906040519161190160f01b83526002830152602282015260c43591604260a43592206155c8565b9092919261564a565b6001600160a01b031681810361073f57505086906105dc60018060a01b0360068701541695601f601e820154910154906139b3565b93853b1561073b5760405163d505accf60e01b81526001600160a01b038516600482015230602482015260448101869052606481019190915260ff9190911660848201526101043560a48201526101243560c4820152818160e48183895af161071e575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482019290925291602091839190829081606481015b03925af19081156107135784916106e4575b50156106d55781835260209081526040808420805460ff19166001179055519182527f5c261a095dd5720475295dc06379921c003c22164ee6cae5cf83e76ce0a1b98591a180f35b631e4e7d0960e21b8352600483fd5b610706915060203d60201161070c575b6106fe818361341f565b8101906135f1565b5f61068d565b503d6106f4565b6040513d86823e3d90fd5b8161072b9194939461341f565b6107375790855f610640565b8580fd5b8280fd5b637ba5ffb560e01b8952600452602452604487fd5b8b80fd5b632f4aa44f60e21b8a52600486905260248afd5b80498061077a83868661379a565b351461078783868661379a565b359015610798575050600101610488565b606493508c926306f2f0e760e21b8452600452602452604452fd5b635cfa404d60e11b8b52600483905260245260448afd5b6107d3906139a5565b610478565b6304c51a3360e31b8a5260048afd5b634e487b7160e01b8b52602160045260248bfd5b63580683f360e01b8952600489fd5b637bb2fa2f60e11b8852600488fd5b8780fd5b8680fd5b8380fd5b50346103365761012036600319011261033657610840613334565b61084861334a565b6084356001600160801b038116908181036109b3578460c43560ff811681036109a457610873613a64565b610881602435600435613a8b565b6006015490936001600160a01b0390911691823b15610821576108c98480926040518093819263d505accf60e01b8352610104359060e4359060a4358a3033600489016135a7565b038183885af16109f6575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156109eb5786916109cc575b50156109bd576001600160a01b03908116939081166109b7575033915b833b156109b357604051635fd142bb60e11b81526001600160a01b03938416600482015292166024830152604482018490526064820152828160848183865af180156109a85761098f575b602082604051908152f35b61099a83809261341f565b6109a45781610984565b5080fd5b6040513d85823e3d90fd5b8480fd5b91610939565b631e4e7d0960e21b8552600485fd5b6109e5915060203d60201161070c576106fe818361341f565b5f61091c565b6040513d88823e3d90fd5b81610a009161341f565b61073b57825f6108d4565b50346103365780600319360112610336576020610a585f5160206158ef5f395f51905f525460086004610a3e42846152f7565b0154910154906001600160801b038260801c92169061526b565b604051908152f35b503461033657806003193601126103365760206004610a8e5f5160206158ef5f395f51905f525442906152f7565b0154604051908152f35b50346103365780600319360112610336575f5160206158ef5f395f51905f5254600501546040516001600160a01b039091168152602090f35b5034610336578060031936011261033657604060085f5160206158ef5f395f51905f525401548151906001600160801b038116825260801c6020820152f35b5034610336578060031936011261033657602065ffffffffffff60045f5160206158ef5f395f51905f5254015416604051908152f35b5034610336578060031936011261033657602065ffffffffffff60025f5160206158ef5f395f51905f52540154821c16604051908152f35b5034610336578060031936011261033657610bca610bb66004610bb05f5160206158ef5f395f51905f525442906152f7565b01613952565b604051918291602083526020830190613524565b0390f35b5034610336578060031936011261033657604051610beb816133e8565b610bf3613880565b8152604051610c01816133cd565b5f8152602081015f90526020820152610c18613880565b6040820152610c2561391f565b6060820152604051610c36816133cd565b5f80825260208201526080820152610c4c613880565b60a08201528160c08201528160e0820152816101008201528161012082015261014001525f5160206158ef5f395f51905f5254610c8761391f565b50610c9460098201615573565b90610ca1600f8201615573565b60088201549260405193610cb485613404565b6001600160801b038116855260801c602085015260408401526060830152601b81015490601c810154601d82015461ffff16601e83015490601f8401549260405195610cff876133e8565b604051610d0b8161339e565b60018701548152600287015463ffffffff8116602083015260201c65ffffffffffff166040820152875260405197610d42896133cd565b60038701548952600487015465ffffffffffff1660208a01526020880198895260405190610d6f8261339e565b60058801546001600160a01b039081168352600689015481166020840152600789015416604080840191909152890191825260608901908152610db4601589016137d2565b9760808a01988952601601610dc89061389e565b9160a08a0192835260c08a0193845260e08a019485526101008a019586526101208a019687526101408a019788526040519a8b9a60208c5251805160208d0152602081015163ffffffff1660408d01526040015165ffffffffffff1660608c015251805160808c01526020015165ffffffffffff1660a08b015251600160a01b6001900381511660c08b0152600160a01b6001900360208201511660e08b0152600160a01b600190039060400151166101008a0152516101208901610260905280516001600160801b03166102808a015260208101516001600160801b03166102a08a015260408101516102c08a01608090526103008a01610ec991613560565b90606001519061027f198a8203016102e08b0152610ee691613560565b965180516001600160401b03166101408a0152602001516001600160801b031661016089015251805161018089015260208101516101a0890152604001516101c0880152516101e0870152516102008601525161ffff1661022085015251610240840152516102608301520390f35b50346103365760203660031901126103365760ff604060209260195f5160206158ef5f395f51905f52540160043582528452205416610f9760405180926134df565bf35b5034610336576020366003190112610336576004356001600160401b0381116109a457610fca9036906004016134af565b905f5160206158ef5f395f51905f525490610fe48361372f565b91610ff2604051938461341f565b838352610ffe8461372f565b602084019490601f1901368637601a869201915b81811061105d57868587604051928392602084019060208552518091526040840192915b818110611044575050500390f35b8251845285945060209384019390920191600101611036565b8061107361106e600193858861379a565b613800565b828060a01b03165f528360205260405f205461108f82886137be565b5201611012565b5034610336576060366003190112610336576001600160401b036004351161033657610100600435360360031901126103365760026024351015610336576044356001600160401b0381116109a4576110f39036906004016134af565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6115275760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206158ef5f395f51905f525490600182015415611518578154156114bc575b600382015460446004350135036114ad5765ffffffffffff60048301541665ffffffffffff6111926024600435016138d4565b161061149f576111a76004356004018361449c565b9260018580a16111c160a460043501600435600401614951565b808096925060051b046020148515171561148b576111e18560051b61535f565b8695865b818810611356575061131c965060051b90209060028780a161120c600435600401866149a8565b61121b60043560040187614d7f565b9061122a6024600435016138d4565b936112396064600435016138c6565b9360405194602086019660043560040135885265ffffffffffff60d01b9060d01b16604087015260446004350135604687015260ff60f81b9060f81b1660668601526067850152608784015260a783015260c782015260c7815261129e60e78261341f565b5190209283600382015565ffffffffffff6112bd6024600435016138d4565b1665ffffffffffff196004830154161760048201557f7ebe42360bcb182fe0a88148b081e4557c89d09aa6af8307635ac2f83e2aaa656020604051868152a165ffffffffffff6113116024600435016138d4565b169360243591615002565b1561134757807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b63729d0f6b60e01b8152600490fd5b61136a60a460043501600435600401614951565b891015611477578860061b8101358a526019880160205260ff60408b20541660038110156107e7576001036114685760019160209161142d8b8b8e868360061b860101926113b784614986565b156114495760061b85013590525060198c01855260408e20805460ff19166002179055601c8c0180546113e9906139a5565b90555b8c7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c98661141884614986565b1515926040519060061b8701358152a2614986565b908b60061b01358c52825360218b2081860152019701966111e5565b60409260199160061b87013583520187522060ff1981541690556113ec565b636e83084760e11b8a5260048afd5b634e487b7160e01b8a52603260045260248afd5b634e487b7160e01b86526011600452602486fd5b620725b160ea1b8452600484fd5b63164b6fc360e01b8452600484fd5b6114d96114cd6064600435016138c6565b60043560040135614407565b156115095765ffffffffffff6114f36024600435016138d4565b16421161115f57631ad8809560e31b8452600484fd5b637b8cb35960e01b8452600484fd5b63580683f360e01b8452600484fd5b633ee5aeb560e01b8352600483fd5b503461033657806003193601126103365750610bca60405161155960408261341f565b60058152640352e302e360dc1b6020820152604051918291602083526020830190613500565b5034610336578060031936011261033657602060405160018152f35b50346103365780600319360112610336575f5160206158ef5f395f51905f52546001600160a01b03906002906115d29042906152f7565b0154166040519182915f19813b0164ffffffffff16916021830191601f8501903c808252019060408201918260405260208352611616603f19926060830190613500565b030190f35b5034610336578060031936011261033657611634613880565b50606061165160165f5160206158ef5f395f51905f52540161389e565b610f9760405180926040809180518452602081015160208501520151910152565b50346103365780600319360112610336576020601b5f5160206158ef5f395f51905f52540154604051908152f35b5034610336576020366003190112610336576116ba613360565b601a5f5160206158ef5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b503461033657602036600319011261033657600435906001600160401b03821161033657602061172561171f36600486016134af565b90613814565b6040519015158152f35b50346103365780600319360112610336575f51602061586f5f395f51905f52546040516001600160a01b039091168152602090f35b50346103365760a03660031901126103365760043560443560ff8116810361073b5761178e613a64565b8249156118b5575f5160206158ef5f395f51905f52546001810154156115185760198101918385528260205260ff60408620541660038110156118a157611892576006820154601e9092015485926001600160a01b031691823b156108215760405163d505accf60e01b815233600482015230602480830191909152604482018490523560648083019190915260ff92909216608480830191909152913560a4820152903560c48201528390818160e48183885af161187d575b50506040516323b872dd60e01b815233600482015230602482015260448101919091529160209183918290816064810161067b565b816118879161341f565b61073b57825f611848565b6304c51a3360e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b637bb2fa2f60e11b8352600483fd5b50346103365780600319360112610336575f5160206158ef5f395f51905f525460018101908154611914576002015463ffffffff1640908115611905575580f35b63f7bac7b560e01b8352600483fd5b6309476b0360e41b8352600483fd5b50346103365780600319360112610336575f5160206158ef5f395f51905f5254600601546040516001600160a01b039091168152602090f35b5034610336578060031936011261033657611975613609565b50604061199260155f5160206158ef5f395f51905f5254016137d2565b610f97825180926001600160801b03602080926001600160401b038151168552015116910152565b50346103365780600319360112610336575f5160206158af5f395f51905f52541580611acc575b15611a8f57611a33906119f261428d565b906119fb61435a565b906020611a4160405193611a0f838661341f565b8385525f368137604051968796600f60f81b885260e08589015260e0880190613500565b908682036040880152613500565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611a7857505050500390f35b835185528695509381019392810192600101611a69565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f51602061594f5f395f51905f5254156119e1565b5034610336578060031936011261033657611afb613a31565b611b03613a64565b600160ff195f51602061590f5f395f51905f525416175f51602061590f5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610336576020366003190112610336576004356001600160401b0381116109a457611b869036906004016134af565b905f5160206158ef5f395f51905f525490611ba08361372f565b91611bae604051938461341f565b838352611bba8461372f565b602084019490601f19013686376019869201915b818110611c2357868587604051928392602084019060208552518091526040840192915b818110611c00575050500390f35b9193509160208082611c1560019488516134df565b019401910191849392611bf2565b611c2e81838661379a565b3587528260205260ff604088205416611c4782876137be565b6003821015611c595752600101611bce565b634e487b7160e01b89526021600452602489fd5b5034610336576020366003190112610336576020906040906001600160a01b03611c95613360565b1681527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0083522054604051908152f35b5034610336578060031936011261033657602060035f5160206158ef5f395f51905f52540154604051908152f35b5034610336578060031936011261033657611d0c613a31565b5f51602061586f5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610336578060031936011261033657611d75613a31565b5f51602061592f5f395f51905f525460ff8160401c169081156122b6575b506122a7575f51602061592f5f395f51905f52805468ffffffffffffffffff1916680100000000000000051790555f51602061586f5f395f51905f5254611ded906001600160a01b0316611de5615313565b610397615313565b611df561363f565b90611dfe61366c565b90611e07615313565b611e0f615313565b82516001600160401b0381116121aa57611e365f51602061584f5f395f51905f5254614255565b601f8111612243575b506020601f82116001146121c9578293948293926121be575b50508160011b915f199060031b1c1916175f51602061584f5f395f51905f52555b81516001600160401b0381116121aa57611ea05f51602061588f5f395f51905f5254614255565b601f811161213d575b50602092601f82116001146120c4579282938293926120b9575b50508160011b915f199060031b1c1916175f51602061588f5f395f51905f52555b805f5160206158af5f395f51905f5255805f51602061594f5f395f51905f52555f5160206158ef5f395f51905f5254611f1b613ff9565b80516001830155600282019063ffffffff60208201511669ffffffffffff000000006040845493015160201b169169ffffffffffffffffffff191617179055816020604051611f69816133cd565b82815201528160038201556004810165ffffffffffff19815416905561ffff6004611f9442846152f7565b01541661ffff601d8301911661ffff198254161790556004602060018060a01b036006840154166040519283809263313ce56760e01b82525afa80156109a857611fe591849161208a575b506136e3565b90816103e8026103e88104830361207657601e820155816101f402916101f483040361206257601f015560ff60401b195f51602061592f5f395f51905f5254165f51602061592f5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160058152a180f35b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526011600452602484fd5b6120ac915060203d6020116120b2575b6120a4818361341f565b8101906136ca565b5f611fdf565b503d61209a565b015190505f80611ec3565b601f198216935f51602061588f5f395f51905f52845280842091845b868110612125575083600195961061210d575b505050811b015f51602061588f5f395f51905f5255611ee4565b01515f1960f88460031b161c191690555f80806120f3565b919260206001819286850151815501940192016120e0565b81811115611ea9575f51602061588f5f395f51905f52835261219c907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f840160051c90602085106121a2575b601f82910160051c039101614076565b5f611ea9565b85915061218c565b634e487b7160e01b82526041600452602482fd5b015190505f80611e58565b5f51602061584f5f395f51905f52835280832090601f198316845b81811061222b57509583600195969710612213575b505050811b015f51602061584f5f395f51905f5255611e79565b01515f1960f88460031b161c191690555f80806121f9565b9192602060018192868b0151815501940192016121e4565b81811115611e3f575f51602061584f5f395f51905f5283526122a1907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f840160051c90602085106121a257601f82910160051c039101614076565b5f611e3f565b63f92ee8a960e01b8152600490fd5b600591506001600160401b031610155f611d93565b5034610336578060031936011261033657602060ff5f51602061590f5f395f51905f5254166040519015158152f35b50346103365761016036600319011261033657612315613360565b906024356001600160a01b038116908190036109a457612333613334565b9261233c61334a565b9360a4359060843560c43560403660e319011261081d5761012435976001600160401b038911610819573660238a011215610819578860040135916001600160401b038311612b1957366024848c010111612b1957610144356001600160401b038111612b15576123b19036906004016134af565b9690945f51602061592f5f395f51905f5254986001600160401b0360ff8b60401c16159a1680159081612b0d575b6001149081612b03575b159081612afa575b50612aeb57612433908a60016001600160401b03195f51602061592f5f395f51905f525416175f51602061592f5f395f51905f5255612abb575b611de5615313565b61243b615313565b61244361363f565b61244b61366c565b90612454615313565b61245c615313565b8051906001600160401b038211612aa7578d82916124875f51602061584f5f395f51905f5254614255565b601f8111612a43575b50602091601f84116001146129c757926129bc575b50508160011b915f199060031b1c1916175f51602061584f5f395f51905f52555b8051906001600160401b0382116129a8578c82916124f15f51602061588f5f395f51905f5254614255565b601f8111612944575b50602091601f84116001146128c857926128bd575b50508160011b915f199060031b1c1916175f51602061588f5f395f51905f52555b8a5f5160206158af5f395f51905f52558a5f51602061594f5f395f51905f5255612558615313565b612560615313565b42156128ae57811561289f578181111561289057600a612580838361368b565b048310156128815791600493916020938c60409c8d9182516125a2848261341f565b601781528881017f726f757465722e73746f726167652e526f75746572563100000000000000000081526125d4613a31565b5f19915190200181528760ff199120169a8b5f5160206158ef5f395f51905f52557f059eb9adf6e95b839d818142ed5bd5e498b6d95138e65c91525e93cc0f0339fc888d8551908152a1612626613ff9565b8c6001825191015560028d019063ffffffff8a8201511669ffffffffffff000000008684549301518c1b169169ffffffffffffffffffff19161717905582519061266f8261339e565b8282526001600160a01b039081168983018190529781169390910183905260058c018054919092166001600160a01b03199182161790915560068b01805482168717905560078b018054909116909117905570030000000000000000000000000000000260088a01556126e0613609565b506509184e72a000858d516126f4816133cd565b639502f900815201526015890180546001600160c01b0319166d09184e72a000000000009502f9001790558b5183908d9061272e8161339e565b8381528781018590520152601689015560178801556018870155601d8601805461ffff191661ffff8916179055885163313ce56760e01b815292839182905afa908115612877579061278691899161208a57506136e3565b806103e8026103e88104820361286357601e850155806101f402906101f482040361284f576127ee6127e46127f59798999a600993601f8801558a51946127cc866133cd565b60e4358652610104356020870152602436920161345b565b9342963691613746565b9301614091565b6127fd575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f51602061592f5f395f51905f5254165f51602061592f5f395f51905f52555160018152a180f35b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526011600452602489fd5b87513d8a823e3d90fd5b63145e348f60e01b8b5260048bfd5b6353b2bbed60e01b8b5260048bfd5b63f7ba6bdb60e01b8b5260048bfd5b63b7d0949760e01b8b5260048bfd5b015190505f8061250f565b5f51602061588f5f395f51905f5281528281209350601f198516905b81811061292c5750908460019594939210612914575b505050811b015f51602061588f5f395f51905f5255612530565b01515f1960f88460031b161c191690555f80806128fa565b929360206001819287860151815501950193016128e4565b838111156124fa575f51602061588f5f395f51905f5283526129a2907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f860160051c90602087106121a257601f82910160051c039101614076565b5f6124fa565b634e487b7160e01b8d52604160045260248dfd5b015190505f806124a5565b5f51602061584f5f395f51905f5281528281209350601f198516905b818110612a2b5750908460019594939210612a13575b505050811b015f51602061584f5f395f51905f52556124c6565b01515f1960f88460031b161c191690555f80806129f9565b929360206001819287860151815501950193016129e3565b83811115612490575f51602061584f5f395f51905f528352612aa1907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f860160051c90602087106121a257601f82910160051c039101614076565b5f612490565b634e487b7160e01b8e52604160045260248efd5b600160401b60ff60401b195f51602061592f5f395f51905f525416175f51602061592f5f395f51905f525561242b565b63f92ee8a960e01b8c5260048cfd5b9050155f6123f1565b303b1591506123e9565b8b91506123df565b8980fd5b8880fd5b50346103365780600319360112610336577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b755760206040515f5160206158cf5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261033657612b99613360565b906024356001600160401b0381116109a457612bb9903690600401613491565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612d76575b50612d6757612bfb613a31565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596612d2f575b50612c4057634c9c8ce360e01b84526004839052602484fd5b9091845f5160206158cf5f395f51905f528103612d1d5750813b15612d0b575f5160206158cf5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015612cf15780836020612ce595519101845af43d15612ce9573d91612cc983613440565b92612cd7604051948561341f565b83523d85602085013e6157f0565b5080f35b6060916157f0565b50505034612cfc5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011612d5f575b81612d4b6020938361341f565b81010312612d5b5751945f612c27565b5f80fd5b3d9150612d3e565b63703e46dd60e11b8252600482fd5b5f5160206158cf5f395f51905f52546001600160a01b0316141590505f612bee565b5034610336578060031936011261033657602060405160028152f35b5034610336578060031936011261033657612dcd613a31565b5f51602061590f5f395f51905f525460ff811615612e255760ff19165f51602061590f5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b503461033657602036600319011261033657612e4e613360565b612e56613a31565b5f5160206158ef5f395f51905f525460050180546001600160a01b0319166001600160a01b0390921691909117905580f35b5034610336578060031936011261033657612ea1613609565b506040612ec5612ec05f5160206158ef5f395f51905f525442906152f7565b613621565b60208251918051835201516020820152f35b503461033657606036600319011261033657612ef1613334565b612ef9613a64565b612f07602435600435613f01565b506001600160a01b0390811691908116612f8f5750335b5f5160206158ef5f395f51905f5254600501546001600160a01b0316823b1561082157604051635fd142bb60e11b81526001600160a01b03909216600483015260248201526001604482015260648101839052828160848183865af180156109a85761098f57602082604051908152f35b612f1e565b50346103365780600319360112610336576020610a58615296565b5034610336578060031936011261033657602060015f5160206158ef5f395f51905f52540154604051908152f35b50346103365780600319360112610336576020601e5f5160206158ef5f395f51905f52540154604051908152f35b503461033657602036600319011261033657613025613a31565b600435601e5f5160206158ef5f395f51905f5254015580f35b50346103365761010036600319011261033657613059613334565b6064356001600160801b03811690818103610821578360a43560ff811681036109a457613084613a64565b613092602435600435613f01565b6006015490936001600160a01b0390911691823b15610821576130d98480926040518093819263d505accf60e01b835260e4359060c435906084358a3033600489016135a7565b038183885af16131f7575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156131ec5785916131cd575b50156131be576001600160a01b03908116929081166131b8575033905b5f5160206158ef5f395f51905f5254600501546001600160a01b0316833b156109b357604051635fd142bb60e11b81526001600160a01b0390931660048401526024830152600160448301526064820152828160848183865af180156109a85761098f57602082604051908152f35b90613149565b631e4e7d0960e21b8452600484fd5b6131e6915060203d60201161070c576106fe818361341f565b5f61312c565b6040513d87823e3d90fd5b816132019161341f565b61073b57825f6130e4565b34612d5b576080366003190112612d5b57613225613334565b61322d61334a565b90613236613a64565b613244602435600435613a8b565b506001600160a01b03908116919081166132d1575033915b813b15612d5b57604051635fd142bb60e11b81526001600160a01b039384166004820152921660248301525f60448301819052606483018190528260848183855af19182156132c6576020926132b6575b50604051908152f35b5f6132c09161341f565b5f6132ad565b6040513d5f823e3d90fd5b9161325c565b34612d5b576020366003190112612d5b576132f0613a31565b600435601f5f5160206158ef5f395f51905f525401555f80f35b34612d5b575f366003190112612d5b57602090601c5f5160206158ef5f395f51905f525401548152f35b604435906001600160a01b0382168203612d5b57565b606435906001600160a01b0382168203612d5b57565b600435906001600160a01b0382168203612d5b57565b35906001600160a01b0382168203612d5b57565b35906001600160801b0382168203612d5b57565b606081019081106001600160401b038211176133b957604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176133b957604052565b61016081019081106001600160401b038211176133b957604052565b608081019081106001600160401b038211176133b957604052565b90601f801991011681019081106001600160401b038211176133b957604052565b6001600160401b0381116133b957601f01601f191660200190565b92919261346782613440565b91613475604051938461341f565b829481845281830111612d5b578281602093845f960137010152565b9080601f83011215612d5b578160206134ac9335910161345b565b90565b9181601f84011215612d5b578235916001600160401b038311612d5b576020808501948460051b010111612d5b57565b9060038210156134ec5752565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106135415750505090565b82516001600160a01b0316845260209384019390920191600101613534565b9060208251805183520151602082015260018060a01b0360208301511660408201526080606061359e604085015160a08386015260a0850190613524565b93015191015290565b936001600160801b0360c096929998979460ff9460e088019b60018060a01b0316885260018060a01b03166020880152166040860152606085015216608083015260a08201520152565b90816020910312612d5b57518015158103612d5b5790565b60405190613616826133cd565b5f6020838281520152565b9060405161362e816133cd565b602060018294805484520154910152565b6040519061364e60408361341f565b600f82526e2b30b9309722aa24102937baba32b960891b6020830152565b6040519061367b60408361341f565b60018252603160f81b6020830152565b9190820391821161369857565b634e487b7160e01b5f52601160045260245ffd5b81156136b6570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312612d5b575160ff81168103612d5b5790565b60ff16604d811161369857600a0a90565b8181029291811591840414171561369857565b9190826040910312612d5b5760405161371f816133cd565b6020808294803584520135910152565b6001600160401b0381116133b95760051b60200190565b9291906137528161372f565b93613760604051958661341f565b602085838152019160051b8101928311612d5b57905b82821061378257505050565b6020809161378f84613376565b815201910190613776565b91908110156137aa5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156137aa5760209160051b010190565b906040516137df816133cd565b91546001600160401b038116835260401c6001600160801b03166020830152565b356001600160a01b0381168103612d5b5790565b61382d5f5160206158ef5f395f51905f525442906152f7565b600301905f5b8381106138435750505050600190565b61385161106e82868561379a565b6001600160a01b03165f9081526020849052604090205460ff161561387857600101613833565b505050505f90565b6040519061388d8261339e565b5f6040838281528260208201520152565b906040516138ab8161339e565b60406002829480548452600181015460208501520154910152565b3560ff81168103612d5b5790565b3565ffffffffffff81168103612d5b5790565b604051906138f482613404565b5f606083604051613904816133cd565b83815283602082015281528260208201528160408201520152565b6040519061392c82613404565b815f81525f602082015261393e6138e7565b6040820152606061394d6138e7565b910152565b90604051918281549182825260208201905f5260205f20925f5b8181106139835750506139819250038361341f565b565b84546001600160a01b031683526001948501948794506020909301920161396c565b5f1981146136985760010190565b9190820180921161369857565b6001600160a01b03168015613a1e575f51602061586f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f51602061586f5f395f51905f52546001600160a01b03163303613a5157565b63118cdaa760e01b5f523360045260245ffd5b60ff5f51602061590f5f395f51905f525416613a7c57565b63d93c066560e01b5f5260045ffd5b9190915f5160206158ef5f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134ec57600203613ef257815f5260205260405f206040516103008101908082106001600160401b03831117612d5b576102fb916040527f6080806040526102e990816100128239f3fe60806040526004361061029f575f81527f3560e01c806336a52a18146100bb57806342129d00146100b65780635ce6c32760208201527f146100b1578063701da98e146100ac578063704ed542146100a75780637a8e0c60408201527fdd146100a257806391d5a64c1461009d5780639ce110d714610098578063affe60608201527fd0e014610093578063c60496921461008e5763e43f34330361029f5761028a5660808201527f5b610260565b610243565b61021b565b610205565b6101d2565b6101b3565b6160a08201527f0178565b610156565b610119565b346100e7575f3660031901126100e757600260c08201527f5460405160089190911c6001600160a01b03168152602090f35b5f80fd5b918160e08201527f601f840112156100e75782359167ffffffffffffffff83116100e757602083816101008201527f8601950101116100e757565b60403660031901126100e75760043567ffffffff6101208201527fffffffff81116100e7576101459036906004016100eb565b50506024358015156101408201527f1461029f575f80fd5b346100e7575f3660031901126100e757602060ff6002546101608201527f166040519015158152f35b346100e7575f3660031901126100e75760205f54606101808201527f4051908152f35b600435906fffffffffffffffffffffffffffffffff821682036101a08201527f6100e757565b346100e75760203660031901126100e7576101cc610194565b506101c08201527f61029f565b60403660031901126100e75760243567ffffffffffffffff8111616101e08201527ee7576101fe9036906004016100eb565b505061029f565b346100e7576020366102008201527f60031901121561029f575f80fd5b346100e7575f3660031901126100e75760036102208201527f546040516001600160a01b039091168152602090f35b346100e7575f366003196102408201527f01126100e7576020600154604051908152f35b346100e75760a03660031901126102608201527f6100e757610279610194565b5060443560ff81161461029f575f80fd5b3461006102808201527fe7575f3660031901121561029f575f80fd5b63e6fabc0960e01b5f5260205f606102a08201523060481b685afa156100e7575f806204817360e81b01176102c08201527f8051368280378136915af43d5f803e156102e5573d5ff35b3d5ffd00000000006102e08201525ff5908115612d5b5760018060a01b0382165f52601a84016020528060405f2055601b8401613eb781546139a5565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a29190565b630e2637d160e01b5f5260045ffd5b9190915f5160206158ef5f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134ec57600203613ef257815f5260205260405f2060405160608101908082106001600160401b03831117612d5b57605a916040527f3d605080600a3d3981f3608060405263e6fabc0960e01b5f5260205f6004817381523060601b6b5afa15604c575f80805136821760208201527f80378136915af43d5f803e156048573d5ff35b3d5ffd5b5f80fd00000000000060408201525ff5908115612d5b5760018060a01b0382165f52601a84016020528060405f2055601b8401613eb781546139a5565b614001613880565b5063ffffffff431161405e5765ffffffffffff4211614046576040516140268161339e565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6306dfcc6560e41b5f5260306004524260245260445ffd5b6306dfcc6560e41b5f5260206004524360245260445ffd5b5f5b82811061408457505050565b5f82820155600101614078565b9291908051906020810191825170014551231950b75fc4402da1732fc9bebe1982109182614244575b5050156142355751845551600184015580518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff091821561422857526002830180546001600160a01b0319166001600160a01b039092169190911790555f5b600483018054821015614159575f90815260208082208301546001600160a01b0316825260038501905260409020805460ff1916905560010161411b565b5050925f5b84518110156141a2576001906001600160a01b0361417c82886137be565b5116828060a01b03165f526003840160205260405f208260ff198254161790550161415e565b5092600482018151916001600160401b0383116133b957600160401b83116133b957602090825484845580851061420d575b5001905f5260205f205f5b8381106141f0575050505060050155565b82516001600160a01b0316818301556020909201916001016141df565b61422290845f528580855f2001910390614076565b5f6141d4565b63301164255f526004601cfd5b63375f0aab60e11b5f5260045ffd5b61424e92506157cd565b5f806140ba565b90600182811c92168015614283575b602083101461426f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691614264565b604051905f825f51602061584f5f395f51905f5254916142ac83614255565b808352926001811690811561433b57506001146142d0575b6139819250038361341f565b505f51602061584f5f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b81831061431f575050906020613981928201016142c4565b6020919350806001915483858901015201910190918492614307565b6020925061398194915060ff191682840152151560051b8201016142c4565b604051905f825f51602061588f5f395f51905f52549161437983614255565b808352926001811690811561433b575060011461439c576139819250038361341f565b505f51602061588f5f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b8183106143eb575050906020613981928201016142c4565b60209193508060019154838589010152019101909184926143d3565b435f19810193929084116136985760ff1643811061445757505f925b83811015614433575b505f925050565b80408281036144455750600193505050565b15614452575f1901614423565b61442c565b614461904361368b565b92614423565b903590601e1981360301821215612d5b57018035906001600160401b038211612d5b57602001918160051b36038313612d5b57565b906080810160016144ad8284614467565b905011614942576144be8183614467565b90501561491b576144ce91614467565b156137aa57803590603e1981360301821215612d5b5701916144f08380614467565b9190928260051b9383850460201484151715613698576145128596949561535f565b925f945f97601a60fe19853603019501965b888a10156148d3578960051b85013586811215612d5b57850161454681613800565b6001600160a01b03165f90815260208a9052604090205415610064575f608082016001600160801b036145788261533e565b161515806148c0575b6148af575b6001600160a01b0361459784613800565b604051630427a21d60e11b81526020600482015294911691610124850191906001600160801b0390614616906001600160a01b036145d485613376565b166024890152602084013560448901526145f060408501615352565b151560648901526001600160a01b0361460b60608601613376565b16608489015261338a565b1660a486015261462860a08201615352565b151560c486015236819003601e190160c082013581811215612d5b578201602081359101936001600160401b038211612d5b576060820236038513612d5b57819061010060e48a015252610144870193905f905b8082106148655750505060e082013590811215612d5b5701803560208201926001600160401b038211612d5b578160051b908136038513612d5b5791879594936023198785030161010488015281845260208085019385010194935f9160fe19813603015b8484106147585750505050505050602093916001600160801b03848093039316905af19081156132c6575f91614726575b50816020916001938a015201990198614524565b90506020813d8211614750575b816147406020938361341f565b81010312612d5b57516001614712565b3d9150614733565b919395979850919395601f19848203018752873582811215612d5b578301602081013582526001600160a01b0361479160408301613376565b1660208301526060810135603e193683900301811215612d5b578101602081013591906040016001600160401b038311612d5b578236038113612d5b57829060e060408601528160e08601526101008501375f61010083850101526001600160801b036148006080830161338a565b16606084015260a0810135608084015260c081013563ffffffff60e01b8116809103612d5b578360209361484260e086956101009560a060019a015201615352565b151560c0830152601f80199101160101990197019401918a9897969593916146e1565b90919460608060019288358152838060a01b0361488460208b01613376565b1660208201526001600160801b0361489e60408b0161338a565b16604082015201960192019061467c565b90506148ba8161533e565b90614586565b506148cd60a08401614986565b15614581565b5094935095509550506020925020910135907fd04cd9af813f6f0b56e9411a6ee6a84eb5ac35a96f0c33d2e3a07d65baa8f4186020604051848152a15f5260205260405f2090565b5050507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6306d6c38360e01b5f5260045ffd5b903590601e1981360301821215612d5b57018035906001600160401b038211612d5b57602001918160061b36038313612d5b57565b358015158103612d5b5790565b903590605e1981360301821215612d5b570190565b60c0820160016149b88285614467565b905011614d3e576149c98184614467565b90501561491b576149da9083614467565b156137aa57803590607e1981360301821215612d5b57019160608301906020614a02836138d4565b91019065ffffffffffff80614a16846138d4565b1691161015614d2f57614a28826138d4565b65ffffffffffff80600286015460201c16911610614d2057614a6e65ffffffffffff614a67614a6182614a5a876138d4565b1687615384565b936138d4565b1684615384565b1115614d11576007820154600690920180548435946001600160a01b0394851694604082019391925f91602091166044614ab483614aac8989614993565b01358b6139b3565b604051948593849263095ea7b360e01b84528c600485015260248401525af19081156132c6575f91614cf2575b5015614ce3575460405163394f179b60e11b81526001600160a01b03909116600482015260248101959095526020818101356044870152856064815f885af19485156132c6575f95614cab575b5090614b3991614993565b91614b43826138d4565b9260405193637fbe95b560e01b85526040600486015260a48501918035601e1982360301811215612d5b578101602081359101936001600160401b038211612d5b578160061b36038513612d5b5760606044890152819052869360c485019392915f5b818110614c7357505050836020959365ffffffffffff829484895f9601356064860152614bdc604060018060a01b039201613376565b16608485015216602483015203925af19182156132c6575f92614c3d575b50614c04906138d4565b6040519160208301938452604083015265ffffffffffff60d01b9060d01b16606082015260468152614c3760668261341f565b51902090565b9091506020813d602011614c6b575b81614c596020938361341f565b81010312612d5b575190614c04614bfa565b3d9150614c4c565b919550919293604080600192838060a01b03614c8e8a613376565b168152602089013560208201520196019101918895949392614ba6565b919094506020823d602011614cdb575b81614cc86020938361341f565b81010312612d5b57905193614b39614b2e565b3d9150614cbb565b6367b9145160e01b5f5260045ffd5b614d0b915060203d60201161070c576106fe818361341f565b5f614ae1565b6308027f7760e31b5f5260045ffd5b637bde91e760e11b5f5260045ffd5b63087a19ab60e41b5f5260045ffd5b633249ceed60e11b5f5260045ffd5b903590601e1981360301821215612d5b57018035906001600160401b038211612d5b57602001918136038313612d5b57565b9060e081016001614d908284614467565b905011614ff357614da18183614467565b90501561491b57614db191614467565b156137aa57803590609e1981360301821215612d5b57016060810190614dd78282614467565b905015614fe45765ffffffffffff600284015460201c1691614df9834261368b565b614e08601686015480926136ac565b9360808401359460018101809111613698578503614fd557614e2d85614e33936136f4565b906139b3565b93614e4260178201548661368b565b4210614fc657614e51906153ac565b934260058601541015614fb757614ea6906040840195614e98614ea0614e778988614d4d565b9190614e83888a614467565b949091614e90368c613707565b94369161345b565b933691613746565b92614091565b7fa1a3b42179ad30022438a1ea333b38eaf4a7329beee5e2b8111c0dcd4e08821c6020604051858152a160a082360312612d5b5760405193614ee785613404565b614ef13684613707565b8552356001600160401b038111612d5b57614f0f9036908401613491565b602085015235906001600160401b038211612d5b570136601f82011215612d5b57614f41903690602081359101613746565b91826040820152816060820152519160208351930151906040519283926020840195865260408401526060830160208351919301905f5b818110614f9557505050815203808252614c37906020018261341f565b82516001600160a01b0316855286955060209485019490920191600101614f78565b6333fc8f5160e21b5f5260045ffd5b6372a84ce560e11b5f5260045ffd5b6343d3f5bf60e01b5f5260045ffd5b636c2bf3db60e01b5f5260045ffd5b631d3fc6bf60e21b5f5260045ffd5b909493919365ffffffffffff600283015460201c166150214284615384565b615039615033601686015480936136f4565b836139b3565b918284108080615255575b15615223575083106152155761505a90836139b3565b106152065761506a905b826152f7565b94601960f81b5f523060601b60025260165260365f209360028110156134ec57806150fb575050600181036150ec57156137aa576150ab816150b292614d4d565b369161345b565b9160608351036150dd578260206134ac940151606060408301519201519260018154910154906153c7565b632ce466bf60e01b5f5260045ffd5b6360a1ea7760e01b5f5260045ffd5b91939160011461510e5750505050505f90565b61513390600860048796970154910154906001600160801b038260801c92169061526b565b925f9260035f9201915b868110156151fb5761516361059e61515d6150ab8460051b860186614d4d565b86615793565b6001600160a01b0381165f9081526020859052604090205460ff1661518e575b506001905b0161513d565b6001600160a01b03165f9081527ff02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c0060205260409020805c156151d35750600190615188565b9460016151e192965d6139a5565b938585146151ef575f615183565b50505050505050600190565b505050505050505f90565b63046bb1e560e51b5f5260045ffd5b62f4462b60e01b5f5260045ffd5b93929150504282116152465761506a9261523e575b50615064565b90505f615238565b6347860b9760e01b5f5260045ffd5b506152646018870154856139b3565b4210615044565b6001600160801b0380921602911661528381836136ac565b9181156136b65706156134ac5760010190565b61529e6156aa565b6152a6615701565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614c3760c08261341f565b906153029082615733565b1561530d57600f0190565b60090190565b60ff5f51602061592f5f395f51905f525460401c161561532f57565b631afcd79f60e31b5f5260045ffd5b356001600160801b0381168103612d5b5790565b35908115158203612d5b57565b6040519190601f01601f191682016001600160401b03811183821017612d5b57604052565b60166153a36134ac9365ffffffffffff600285015460201c169061368b565b910154906136ac565b6153b64282615733565b156153c15760090190565b600f0190565b92939194906153d685876157cd565b156155695782156155695770014551231950b75fc4402da1732fc9bebe19831015615569576001169061010e61540b8161535f565b9160883684376002600188160160888401538760898401526002840160a984015360aa830186905260ca8301527e300046524f53542d736563703235366b312d4b454343414b3235362d76316360ea8301526303430b6160e51b61010a830152812060cc820181815290600260ec84016001815360428420809318845253604270014551231950b75fc4402da1732fc9bebe19922060801c6001600160401b0360801b8260801b16179070014551231950b75fc4402da1732fc9bebe1990600160c01b9060401c090880156151fb5784601b6080945f9660209870014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe19038552018684015280604084015270014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe1903606082015282805260015afa505f51915f5260205260018060a01b0360405f20161490565b5050505050505f90565b61557b6138e7565b50600281015460058201546040519290916155bb916004916001600160a01b03166155a586613404565b6155ae82613621565b8652602086015201613952565b6040830152606082015290565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161563f579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156132c6575f516001600160a01b0381161561563557905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156134ec578061565c575050565b600181036156735763f645eedf60e01b5f5260045ffd5b6002810361568e575063fce698f760e01b5f5260045260245ffd5b6003146156985750565b6335e2f38360e21b5f5260045260245ffd5b6156b261428d565b80519081156156c2576020012090565b50505f5160206158af5f395f51905f525480156156dc5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61570961435a565b8051908115615719576020012090565b50505f51602061594f5f395f51905f525480156156dc5790565b906014600e8301549201548083146157845781818410931191821591111591819061577d575b1561576e578261576857505090565b14919050565b634c38ae9560e11b5f5260045ffd5b5081615759565b63f26224af60e01b5f5260045ffd5b81519190604183036157c3576157bc9250602082015190606060408401519301515f1a906155c8565b9192909190565b50505f9160029190565b6401000003d01990600790829081818009900908906401000003d0199080091490565b90615814575080511561580557602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580615845575b615825575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561581d56fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"1553:47844:168:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;7983:34:30;7979:146;;-1:-1:-1;1553:47844:168;;;;;;;;1052:13:60;1553:47844:168;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;8085:29:30;;1553:47844:168;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;1553:47844:168;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610091575b50361561001a575f80fd5b610022613a64565b5f5160206158ef5f395f51905f5254600181015415610082576001600160801b0334161561007357335f908152601a9190910160205260409020541561006457005b63821a62f560e01b5f5260045ffd5b63a1a7c6eb60e01b5f5260045ffd5b63580683f360e01b5f5260045ffd5b5f905f3560e01c9081627a32e71461330a575080630b9737ce146132d75780630c18d2771461320c5780630d91bf2a1461303e57806311bec80d1461300b578063188509e914612fdd57806328e24b3d14612faf5780633644e51514612f945780633683c4d214612ed75780633bd109fa14612e885780633d43b41814612e345780633f4ba83a14612db45780634429e24b14612d985780634f1ef28614612b8457806352d1902d14612b1d57806353f7fd48146122fa5780635c975abb146122cb5780636c2eb35014611d5c578063715018a614611cf357806371a8cf2d14611cc55780637ecebe0014611c6d57806382bdeaad14611b555780638456cb5914611ae257806384b0196e146119ba57806384d22a4f1461195c57806388f50cf0146119235780638b1edf1e146118c45780638c4ace6a146117645780638da5cb5b1461172f5780638f381dbe146116e95780639067088e146116a057806396a2ddfa146116725780639eb939a81461161b578063a5d53a441461159b578063ad2b3d9a1461157f578063ad3cb1cc14611536578063b24fcac014611096578063baaf020114610f99578063c13911e814610f55578063c2eb812f14610bce578063ca1e781914610b7e578063cacf66ab14610b46578063d456fd5114610b10578063e3a6684f14610ad1578063e6fabc0914610a98578063ed612f8c14610a60578063edc8722514610a0b578063ee32004f14610825578063f0fd702a146103cd578063f1ef31ec1461039f578063f2fde38b14610372578063f4f20ac0146103395763facd743b0361000f5734610336576020366003190112610336576102f8613360565b60036103135f5160206158ef5f395f51905f525442906152f7565b019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b80fd5b50346103365780600319360112610336575f5160206158ef5f395f51905f5254600701546040516001600160a01b039091168152602090f35b50346103365760203660031901126103365761039c61038f613360565b610397613a31565b6139c0565b80f35b50346103365780600319360112610336576020601f5f5160206158ef5f395f51905f52540154604051908152f35b503461033657610140366003190112610336576103e8613360565b602435906044356001600160401b0381116108215761040b9036906004016134af565b90916064359060843560ff8116810361081d5760e4359060ff8216820361081957610434613a64565b87491561080a575f5160206158ef5f395f51905f5254946001860154156107fb576019860196888a528760205260ff60408b20541660038110156107e7576107d857895b80496107ca578083036107b35750895b82811061076c57508542116107585760405160208101906001600160fb1b038411610754576104d360208261059e956105a79760051b8091873781010301601f19810183528261341f565b5190209260018060a01b03861693848c527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260408c208054906001820190556040519060208201927f375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b809784528760408401528d6060840152608083015260a08201528860c082015260c0815261056c60e08261341f565b519020610577615296565b906040519161190160f01b83526002830152602282015260c43591604260a43592206155c8565b9092919261564a565b6001600160a01b031681810361073f57505086906105dc60018060a01b0360068701541695601f601e820154910154906139b3565b93853b1561073b5760405163d505accf60e01b81526001600160a01b038516600482015230602482015260448101869052606481019190915260ff9190911660848201526101043560a48201526101243560c4820152818160e48183895af161071e575b506040516323b872dd60e01b81526001600160a01b039092166004830152306024830152604482019290925291602091839190829081606481015b03925af19081156107135784916106e4575b50156106d55781835260209081526040808420805460ff19166001179055519182527f5c261a095dd5720475295dc06379921c003c22164ee6cae5cf83e76ce0a1b98591a180f35b631e4e7d0960e21b8352600483fd5b610706915060203d60201161070c575b6106fe818361341f565b8101906135f1565b5f61068d565b503d6106f4565b6040513d86823e3d90fd5b8161072b9194939461341f565b6107375790855f610640565b8580fd5b8280fd5b637ba5ffb560e01b8952600452602452604487fd5b8b80fd5b632f4aa44f60e21b8a52600486905260248afd5b80498061077a83868661379a565b351461078783868661379a565b359015610798575050600101610488565b606493508c926306f2f0e760e21b8452600452602452604452fd5b635cfa404d60e11b8b52600483905260245260448afd5b6107d3906139a5565b610478565b6304c51a3360e31b8a5260048afd5b634e487b7160e01b8b52602160045260248bfd5b63580683f360e01b8952600489fd5b637bb2fa2f60e11b8852600488fd5b8780fd5b8680fd5b8380fd5b50346103365761012036600319011261033657610840613334565b61084861334a565b6084356001600160801b038116908181036109b3578460c43560ff811681036109a457610873613a64565b610881602435600435613a8b565b6006015490936001600160a01b0390911691823b15610821576108c98480926040518093819263d505accf60e01b8352610104359060e4359060a4358a3033600489016135a7565b038183885af16109f6575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156109eb5786916109cc575b50156109bd576001600160a01b03908116939081166109b7575033915b833b156109b357604051635fd142bb60e11b81526001600160a01b03938416600482015292166024830152604482018490526064820152828160848183865af180156109a85761098f575b602082604051908152f35b61099a83809261341f565b6109a45781610984565b5080fd5b6040513d85823e3d90fd5b8480fd5b91610939565b631e4e7d0960e21b8552600485fd5b6109e5915060203d60201161070c576106fe818361341f565b5f61091c565b6040513d88823e3d90fd5b81610a009161341f565b61073b57825f6108d4565b50346103365780600319360112610336576020610a585f5160206158ef5f395f51905f525460086004610a3e42846152f7565b0154910154906001600160801b038260801c92169061526b565b604051908152f35b503461033657806003193601126103365760206004610a8e5f5160206158ef5f395f51905f525442906152f7565b0154604051908152f35b50346103365780600319360112610336575f5160206158ef5f395f51905f5254600501546040516001600160a01b039091168152602090f35b5034610336578060031936011261033657604060085f5160206158ef5f395f51905f525401548151906001600160801b038116825260801c6020820152f35b5034610336578060031936011261033657602065ffffffffffff60045f5160206158ef5f395f51905f5254015416604051908152f35b5034610336578060031936011261033657602065ffffffffffff60025f5160206158ef5f395f51905f52540154821c16604051908152f35b5034610336578060031936011261033657610bca610bb66004610bb05f5160206158ef5f395f51905f525442906152f7565b01613952565b604051918291602083526020830190613524565b0390f35b5034610336578060031936011261033657604051610beb816133e8565b610bf3613880565b8152604051610c01816133cd565b5f8152602081015f90526020820152610c18613880565b6040820152610c2561391f565b6060820152604051610c36816133cd565b5f80825260208201526080820152610c4c613880565b60a08201528160c08201528160e0820152816101008201528161012082015261014001525f5160206158ef5f395f51905f5254610c8761391f565b50610c9460098201615573565b90610ca1600f8201615573565b60088201549260405193610cb485613404565b6001600160801b038116855260801c602085015260408401526060830152601b81015490601c810154601d82015461ffff16601e83015490601f8401549260405195610cff876133e8565b604051610d0b8161339e565b60018701548152600287015463ffffffff8116602083015260201c65ffffffffffff166040820152875260405197610d42896133cd565b60038701548952600487015465ffffffffffff1660208a01526020880198895260405190610d6f8261339e565b60058801546001600160a01b039081168352600689015481166020840152600789015416604080840191909152890191825260608901908152610db4601589016137d2565b9760808a01988952601601610dc89061389e565b9160a08a0192835260c08a0193845260e08a019485526101008a019586526101208a019687526101408a019788526040519a8b9a60208c5251805160208d0152602081015163ffffffff1660408d01526040015165ffffffffffff1660608c015251805160808c01526020015165ffffffffffff1660a08b015251600160a01b6001900381511660c08b0152600160a01b6001900360208201511660e08b0152600160a01b600190039060400151166101008a0152516101208901610260905280516001600160801b03166102808a015260208101516001600160801b03166102a08a015260408101516102c08a01608090526103008a01610ec991613560565b90606001519061027f198a8203016102e08b0152610ee691613560565b965180516001600160401b03166101408a0152602001516001600160801b031661016089015251805161018089015260208101516101a0890152604001516101c0880152516101e0870152516102008601525161ffff1661022085015251610240840152516102608301520390f35b50346103365760203660031901126103365760ff604060209260195f5160206158ef5f395f51905f52540160043582528452205416610f9760405180926134df565bf35b5034610336576020366003190112610336576004356001600160401b0381116109a457610fca9036906004016134af565b905f5160206158ef5f395f51905f525490610fe48361372f565b91610ff2604051938461341f565b838352610ffe8461372f565b602084019490601f1901368637601a869201915b81811061105d57868587604051928392602084019060208552518091526040840192915b818110611044575050500390f35b8251845285945060209384019390920191600101611036565b8061107361106e600193858861379a565b613800565b828060a01b03165f528360205260405f205461108f82886137be565b5201611012565b5034610336576060366003190112610336576001600160401b036004351161033657610100600435360360031901126103365760026024351015610336576044356001600160401b0381116109a4576110f39036906004016134af565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6115275760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f5160206158ef5f395f51905f525490600182015415611518578154156114bc575b600382015460446004350135036114ad5765ffffffffffff60048301541665ffffffffffff6111926024600435016138d4565b161061149f576111a76004356004018361449c565b9260018580a16111c160a460043501600435600401614951565b808096925060051b046020148515171561148b576111e18560051b61535f565b8695865b818810611356575061131c965060051b90209060028780a161120c600435600401866149a8565b61121b60043560040187614d7f565b9061122a6024600435016138d4565b936112396064600435016138c6565b9360405194602086019660043560040135885265ffffffffffff60d01b9060d01b16604087015260446004350135604687015260ff60f81b9060f81b1660668601526067850152608784015260a783015260c782015260c7815261129e60e78261341f565b5190209283600382015565ffffffffffff6112bd6024600435016138d4565b1665ffffffffffff196004830154161760048201557f7ebe42360bcb182fe0a88148b081e4557c89d09aa6af8307635ac2f83e2aaa656020604051868152a165ffffffffffff6113116024600435016138d4565b169360243591615002565b1561134757807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b63729d0f6b60e01b8152600490fd5b61136a60a460043501600435600401614951565b891015611477578860061b8101358a526019880160205260ff60408b20541660038110156107e7576001036114685760019160209161142d8b8b8e868360061b860101926113b784614986565b156114495760061b85013590525060198c01855260408e20805460ff19166002179055601c8c0180546113e9906139a5565b90555b8c7f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c98661141884614986565b1515926040519060061b8701358152a2614986565b908b60061b01358c52825360218b2081860152019701966111e5565b60409260199160061b87013583520187522060ff1981541690556113ec565b636e83084760e11b8a5260048afd5b634e487b7160e01b8a52603260045260248afd5b634e487b7160e01b86526011600452602486fd5b620725b160ea1b8452600484fd5b63164b6fc360e01b8452600484fd5b6114d96114cd6064600435016138c6565b60043560040135614407565b156115095765ffffffffffff6114f36024600435016138d4565b16421161115f57631ad8809560e31b8452600484fd5b637b8cb35960e01b8452600484fd5b63580683f360e01b8452600484fd5b633ee5aeb560e01b8352600483fd5b503461033657806003193601126103365750610bca60405161155960408261341f565b60058152640352e302e360dc1b6020820152604051918291602083526020830190613500565b5034610336578060031936011261033657602060405160018152f35b50346103365780600319360112610336575f5160206158ef5f395f51905f52546001600160a01b03906002906115d29042906152f7565b0154166040519182915f19813b0164ffffffffff16916021830191601f8501903c808252019060408201918260405260208352611616603f19926060830190613500565b030190f35b5034610336578060031936011261033657611634613880565b50606061165160165f5160206158ef5f395f51905f52540161389e565b610f9760405180926040809180518452602081015160208501520151910152565b50346103365780600319360112610336576020601b5f5160206158ef5f395f51905f52540154604051908152f35b5034610336576020366003190112610336576116ba613360565b601a5f5160206158ef5f395f51905f5254019060018060a01b03165f52602052602060405f2054604051908152f35b503461033657602036600319011261033657600435906001600160401b03821161033657602061172561171f36600486016134af565b90613814565b6040519015158152f35b50346103365780600319360112610336575f51602061586f5f395f51905f52546040516001600160a01b039091168152602090f35b50346103365760a03660031901126103365760043560443560ff8116810361073b5761178e613a64565b8249156118b5575f5160206158ef5f395f51905f52546001810154156115185760198101918385528260205260ff60408620541660038110156118a157611892576006820154601e9092015485926001600160a01b031691823b156108215760405163d505accf60e01b815233600482015230602480830191909152604482018490523560648083019190915260ff92909216608480830191909152913560a4820152903560c48201528390818160e48183885af161187d575b50506040516323b872dd60e01b815233600482015230602482015260448101919091529160209183918290816064810161067b565b816118879161341f565b61073b57825f611848565b6304c51a3360e31b8552600485fd5b634e487b7160e01b86526021600452602486fd5b637bb2fa2f60e11b8352600483fd5b50346103365780600319360112610336575f5160206158ef5f395f51905f525460018101908154611914576002015463ffffffff1640908115611905575580f35b63f7bac7b560e01b8352600483fd5b6309476b0360e41b8352600483fd5b50346103365780600319360112610336575f5160206158ef5f395f51905f5254600601546040516001600160a01b039091168152602090f35b5034610336578060031936011261033657611975613609565b50604061199260155f5160206158ef5f395f51905f5254016137d2565b610f97825180926001600160801b03602080926001600160401b038151168552015116910152565b50346103365780600319360112610336575f5160206158af5f395f51905f52541580611acc575b15611a8f57611a33906119f261428d565b906119fb61435a565b906020611a4160405193611a0f838661341f565b8385525f368137604051968796600f60f81b885260e08589015260e0880190613500565b908682036040880152613500565b904660608601523060808601528260a086015284820360c08601528080855193848152019401925b828110611a7857505050500390f35b835185528695509381019392810192600101611a69565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f51602061594f5f395f51905f5254156119e1565b5034610336578060031936011261033657611afb613a31565b611b03613a64565b600160ff195f51602061590f5f395f51905f525416175f51602061590f5f395f51905f52557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610336576020366003190112610336576004356001600160401b0381116109a457611b869036906004016134af565b905f5160206158ef5f395f51905f525490611ba08361372f565b91611bae604051938461341f565b838352611bba8461372f565b602084019490601f19013686376019869201915b818110611c2357868587604051928392602084019060208552518091526040840192915b818110611c00575050500390f35b9193509160208082611c1560019488516134df565b019401910191849392611bf2565b611c2e81838661379a565b3587528260205260ff604088205416611c4782876137be565b6003821015611c595752600101611bce565b634e487b7160e01b89526021600452602489fd5b5034610336576020366003190112610336576020906040906001600160a01b03611c95613360565b1681527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0083522054604051908152f35b5034610336578060031936011261033657602060035f5160206158ef5f395f51905f52540154604051908152f35b5034610336578060031936011261033657611d0c613a31565b5f51602061586f5f395f51905f5280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610336578060031936011261033657611d75613a31565b5f51602061592f5f395f51905f525460ff8160401c169081156122b6575b506122a7575f51602061592f5f395f51905f52805468ffffffffffffffffff1916680100000000000000051790555f51602061586f5f395f51905f5254611ded906001600160a01b0316611de5615313565b610397615313565b611df561363f565b90611dfe61366c565b90611e07615313565b611e0f615313565b82516001600160401b0381116121aa57611e365f51602061584f5f395f51905f5254614255565b601f8111612243575b506020601f82116001146121c9578293948293926121be575b50508160011b915f199060031b1c1916175f51602061584f5f395f51905f52555b81516001600160401b0381116121aa57611ea05f51602061588f5f395f51905f5254614255565b601f811161213d575b50602092601f82116001146120c4579282938293926120b9575b50508160011b915f199060031b1c1916175f51602061588f5f395f51905f52555b805f5160206158af5f395f51905f5255805f51602061594f5f395f51905f52555f5160206158ef5f395f51905f5254611f1b613ff9565b80516001830155600282019063ffffffff60208201511669ffffffffffff000000006040845493015160201b169169ffffffffffffffffffff191617179055816020604051611f69816133cd565b82815201528160038201556004810165ffffffffffff19815416905561ffff6004611f9442846152f7565b01541661ffff601d8301911661ffff198254161790556004602060018060a01b036006840154166040519283809263313ce56760e01b82525afa80156109a857611fe591849161208a575b506136e3565b90816103e8026103e88104830361207657601e820155816101f402916101f483040361206257601f015560ff60401b195f51602061592f5f395f51905f5254165f51602061592f5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160058152a180f35b634e487b7160e01b83526011600452602483fd5b634e487b7160e01b84526011600452602484fd5b6120ac915060203d6020116120b2575b6120a4818361341f565b8101906136ca565b5f611fdf565b503d61209a565b015190505f80611ec3565b601f198216935f51602061588f5f395f51905f52845280842091845b868110612125575083600195961061210d575b505050811b015f51602061588f5f395f51905f5255611ee4565b01515f1960f88460031b161c191690555f80806120f3565b919260206001819286850151815501940192016120e0565b81811115611ea9575f51602061588f5f395f51905f52835261219c907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f840160051c90602085106121a2575b601f82910160051c039101614076565b5f611ea9565b85915061218c565b634e487b7160e01b82526041600452602482fd5b015190505f80611e58565b5f51602061584f5f395f51905f52835280832090601f198316845b81811061222b57509583600195969710612213575b505050811b015f51602061584f5f395f51905f5255611e79565b01515f1960f88460031b161c191690555f80806121f9565b9192602060018192868b0151815501940192016121e4565b81811115611e3f575f51602061584f5f395f51905f5283526122a1907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f840160051c90602085106121a257601f82910160051c039101614076565b5f611e3f565b63f92ee8a960e01b8152600490fd5b600591506001600160401b031610155f611d93565b5034610336578060031936011261033657602060ff5f51602061590f5f395f51905f5254166040519015158152f35b50346103365761016036600319011261033657612315613360565b906024356001600160a01b038116908190036109a457612333613334565b9261233c61334a565b9360a4359060843560c43560403660e319011261081d5761012435976001600160401b038911610819573660238a011215610819578860040135916001600160401b038311612b1957366024848c010111612b1957610144356001600160401b038111612b15576123b19036906004016134af565b9690945f51602061592f5f395f51905f5254986001600160401b0360ff8b60401c16159a1680159081612b0d575b6001149081612b03575b159081612afa575b50612aeb57612433908a60016001600160401b03195f51602061592f5f395f51905f525416175f51602061592f5f395f51905f5255612abb575b611de5615313565b61243b615313565b61244361363f565b61244b61366c565b90612454615313565b61245c615313565b8051906001600160401b038211612aa7578d82916124875f51602061584f5f395f51905f5254614255565b601f8111612a43575b50602091601f84116001146129c757926129bc575b50508160011b915f199060031b1c1916175f51602061584f5f395f51905f52555b8051906001600160401b0382116129a8578c82916124f15f51602061588f5f395f51905f5254614255565b601f8111612944575b50602091601f84116001146128c857926128bd575b50508160011b915f199060031b1c1916175f51602061588f5f395f51905f52555b8a5f5160206158af5f395f51905f52558a5f51602061594f5f395f51905f5255612558615313565b612560615313565b42156128ae57811561289f578181111561289057600a612580838361368b565b048310156128815791600493916020938c60409c8d9182516125a2848261341f565b601781528881017f726f757465722e73746f726167652e526f75746572563100000000000000000081526125d4613a31565b5f19915190200181528760ff199120169a8b5f5160206158ef5f395f51905f52557f059eb9adf6e95b839d818142ed5bd5e498b6d95138e65c91525e93cc0f0339fc888d8551908152a1612626613ff9565b8c6001825191015560028d019063ffffffff8a8201511669ffffffffffff000000008684549301518c1b169169ffffffffffffffffffff19161717905582519061266f8261339e565b8282526001600160a01b039081168983018190529781169390910183905260058c018054919092166001600160a01b03199182161790915560068b01805482168717905560078b018054909116909117905570030000000000000000000000000000000260088a01556126e0613609565b506509184e72a000858d516126f4816133cd565b639502f900815201526015890180546001600160c01b0319166d09184e72a000000000009502f9001790558b5183908d9061272e8161339e565b8381528781018590520152601689015560178801556018870155601d8601805461ffff191661ffff8916179055885163313ce56760e01b815292839182905afa908115612877579061278691899161208a57506136e3565b806103e8026103e88104820361286357601e850155806101f402906101f482040361284f576127ee6127e46127f59798999a600993601f8801558a51946127cc866133cd565b60e4358652610104356020870152602436920161345b565b9342963691613746565b9301614091565b6127fd575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f51602061592f5f395f51905f5254165f51602061592f5f395f51905f52555160018152a180f35b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b89526011600452602489fd5b87513d8a823e3d90fd5b63145e348f60e01b8b5260048bfd5b6353b2bbed60e01b8b5260048bfd5b63f7ba6bdb60e01b8b5260048bfd5b63b7d0949760e01b8b5260048bfd5b015190505f8061250f565b5f51602061588f5f395f51905f5281528281209350601f198516905b81811061292c5750908460019594939210612914575b505050811b015f51602061588f5f395f51905f5255612530565b01515f1960f88460031b161c191690555f80806128fa565b929360206001819287860151815501950193016128e4565b838111156124fa575f51602061588f5f395f51905f5283526129a2907f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7590601f860160051c90602087106121a257601f82910160051c039101614076565b5f6124fa565b634e487b7160e01b8d52604160045260248dfd5b015190505f806124a5565b5f51602061584f5f395f51905f5281528281209350601f198516905b818110612a2b5750908460019594939210612a13575b505050811b015f51602061584f5f395f51905f52556124c6565b01515f1960f88460031b161c191690555f80806129f9565b929360206001819287860151815501950193016129e3565b83811115612490575f51602061584f5f395f51905f528352612aa1907f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d90601f860160051c90602087106121a257601f82910160051c039101614076565b5f612490565b634e487b7160e01b8e52604160045260248efd5b600160401b60ff60401b195f51602061592f5f395f51905f525416175f51602061592f5f395f51905f525561242b565b63f92ee8a960e01b8c5260048cfd5b9050155f6123f1565b303b1591506123e9565b8b91506123df565b8980fd5b8880fd5b50346103365780600319360112610336577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612b755760206040515f5160206158cf5f395f51905f528152f35b63703e46dd60e11b8152600490fd5b50604036600319011261033657612b99613360565b906024356001600160401b0381116109a457612bb9903690600401613491565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612d76575b50612d6757612bfb613a31565b6040516352d1902d60e01b8152926001600160a01b0381169190602085600481865afa80958596612d2f575b50612c4057634c9c8ce360e01b84526004839052602484fd5b9091845f5160206158cf5f395f51905f528103612d1d5750813b15612d0b575f5160206158cf5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015612cf15780836020612ce595519101845af43d15612ce9573d91612cc983613440565b92612cd7604051948561341f565b83523d85602085013e6157f0565b5080f35b6060916157f0565b50505034612cfc5780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b8452600452602483fd5b632a87526960e21b8552600452602484fd5b9095506020813d602011612d5f575b81612d4b6020938361341f565b81010312612d5b5751945f612c27565b5f80fd5b3d9150612d3e565b63703e46dd60e11b8252600482fd5b5f5160206158cf5f395f51905f52546001600160a01b0316141590505f612bee565b5034610336578060031936011261033657602060405160028152f35b5034610336578060031936011261033657612dcd613a31565b5f51602061590f5f395f51905f525460ff811615612e255760ff19165f51602061590f5f395f51905f52557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b503461033657602036600319011261033657612e4e613360565b612e56613a31565b5f5160206158ef5f395f51905f525460050180546001600160a01b0319166001600160a01b0390921691909117905580f35b5034610336578060031936011261033657612ea1613609565b506040612ec5612ec05f5160206158ef5f395f51905f525442906152f7565b613621565b60208251918051835201516020820152f35b503461033657606036600319011261033657612ef1613334565b612ef9613a64565b612f07602435600435613f01565b506001600160a01b0390811691908116612f8f5750335b5f5160206158ef5f395f51905f5254600501546001600160a01b0316823b1561082157604051635fd142bb60e11b81526001600160a01b03909216600483015260248201526001604482015260648101839052828160848183865af180156109a85761098f57602082604051908152f35b612f1e565b50346103365780600319360112610336576020610a58615296565b5034610336578060031936011261033657602060015f5160206158ef5f395f51905f52540154604051908152f35b50346103365780600319360112610336576020601e5f5160206158ef5f395f51905f52540154604051908152f35b503461033657602036600319011261033657613025613a31565b600435601e5f5160206158ef5f395f51905f5254015580f35b50346103365761010036600319011261033657613059613334565b6064356001600160801b03811690818103610821578360a43560ff811681036109a457613084613a64565b613092602435600435613f01565b6006015490936001600160a01b0390911691823b15610821576130d98480926040518093819263d505accf60e01b835260e4359060c435906084358a3033600489016135a7565b038183885af16131f7575b50506040516323b872dd60e01b81523360048201523060248201526001600160801b039190911660448201529160209183916064918391905af19081156131ec5785916131cd575b50156131be576001600160a01b03908116929081166131b8575033905b5f5160206158ef5f395f51905f5254600501546001600160a01b0316833b156109b357604051635fd142bb60e11b81526001600160a01b0390931660048401526024830152600160448301526064820152828160848183865af180156109a85761098f57602082604051908152f35b90613149565b631e4e7d0960e21b8452600484fd5b6131e6915060203d60201161070c576106fe818361341f565b5f61312c565b6040513d87823e3d90fd5b816132019161341f565b61073b57825f6130e4565b34612d5b576080366003190112612d5b57613225613334565b61322d61334a565b90613236613a64565b613244602435600435613a8b565b506001600160a01b03908116919081166132d1575033915b813b15612d5b57604051635fd142bb60e11b81526001600160a01b039384166004820152921660248301525f60448301819052606483018190528260848183855af19182156132c6576020926132b6575b50604051908152f35b5f6132c09161341f565b5f6132ad565b6040513d5f823e3d90fd5b9161325c565b34612d5b576020366003190112612d5b576132f0613a31565b600435601f5f5160206158ef5f395f51905f525401555f80f35b34612d5b575f366003190112612d5b57602090601c5f5160206158ef5f395f51905f525401548152f35b604435906001600160a01b0382168203612d5b57565b606435906001600160a01b0382168203612d5b57565b600435906001600160a01b0382168203612d5b57565b35906001600160a01b0382168203612d5b57565b35906001600160801b0382168203612d5b57565b606081019081106001600160401b038211176133b957604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176133b957604052565b61016081019081106001600160401b038211176133b957604052565b608081019081106001600160401b038211176133b957604052565b90601f801991011681019081106001600160401b038211176133b957604052565b6001600160401b0381116133b957601f01601f191660200190565b92919261346782613440565b91613475604051938461341f565b829481845281830111612d5b578281602093845f960137010152565b9080601f83011215612d5b578160206134ac9335910161345b565b90565b9181601f84011215612d5b578235916001600160401b038311612d5b576020808501948460051b010111612d5b57565b9060038210156134ec5752565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b90602080835192838152019201905f5b8181106135415750505090565b82516001600160a01b0316845260209384019390920191600101613534565b9060208251805183520151602082015260018060a01b0360208301511660408201526080606061359e604085015160a08386015260a0850190613524565b93015191015290565b936001600160801b0360c096929998979460ff9460e088019b60018060a01b0316885260018060a01b03166020880152166040860152606085015216608083015260a08201520152565b90816020910312612d5b57518015158103612d5b5790565b60405190613616826133cd565b5f6020838281520152565b9060405161362e816133cd565b602060018294805484520154910152565b6040519061364e60408361341f565b600f82526e2b30b9309722aa24102937baba32b960891b6020830152565b6040519061367b60408361341f565b60018252603160f81b6020830152565b9190820391821161369857565b634e487b7160e01b5f52601160045260245ffd5b81156136b6570490565b634e487b7160e01b5f52601260045260245ffd5b90816020910312612d5b575160ff81168103612d5b5790565b60ff16604d811161369857600a0a90565b8181029291811591840414171561369857565b9190826040910312612d5b5760405161371f816133cd565b6020808294803584520135910152565b6001600160401b0381116133b95760051b60200190565b9291906137528161372f565b93613760604051958661341f565b602085838152019160051b8101928311612d5b57905b82821061378257505050565b6020809161378f84613376565b815201910190613776565b91908110156137aa5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b80518210156137aa5760209160051b010190565b906040516137df816133cd565b91546001600160401b038116835260401c6001600160801b03166020830152565b356001600160a01b0381168103612d5b5790565b61382d5f5160206158ef5f395f51905f525442906152f7565b600301905f5b8381106138435750505050600190565b61385161106e82868561379a565b6001600160a01b03165f9081526020849052604090205460ff161561387857600101613833565b505050505f90565b6040519061388d8261339e565b5f6040838281528260208201520152565b906040516138ab8161339e565b60406002829480548452600181015460208501520154910152565b3560ff81168103612d5b5790565b3565ffffffffffff81168103612d5b5790565b604051906138f482613404565b5f606083604051613904816133cd565b83815283602082015281528260208201528160408201520152565b6040519061392c82613404565b815f81525f602082015261393e6138e7565b6040820152606061394d6138e7565b910152565b90604051918281549182825260208201905f5260205f20925f5b8181106139835750506139819250038361341f565b565b84546001600160a01b031683526001948501948794506020909301920161396c565b5f1981146136985760010190565b9190820180921161369857565b6001600160a01b03168015613a1e575f51602061586f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f51602061586f5f395f51905f52546001600160a01b03163303613a5157565b63118cdaa760e01b5f523360045260245ffd5b60ff5f51602061590f5f395f51905f525416613a7c57565b63d93c066560e01b5f5260045ffd5b9190915f5160206158ef5f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134ec57600203613ef257815f5260205260405f206040516103008101908082106001600160401b03831117612d5b576102fb916040527f6080806040526102e990816100128239f3fe60806040526004361061029f575f81527f3560e01c806336a52a18146100bb57806342129d00146100b65780635ce6c32760208201527f146100b1578063701da98e146100ac578063704ed542146100a75780637a8e0c60408201527fdd146100a257806391d5a64c1461009d5780639ce110d714610098578063affe60608201527fd0e014610093578063c60496921461008e5763e43f34330361029f5761028a5660808201527f5b610260565b610243565b61021b565b610205565b6101d2565b6101b3565b6160a08201527f0178565b610156565b610119565b346100e7575f3660031901126100e757600260c08201527f5460405160089190911c6001600160a01b03168152602090f35b5f80fd5b918160e08201527f601f840112156100e75782359167ffffffffffffffff83116100e757602083816101008201527f8601950101116100e757565b60403660031901126100e75760043567ffffffff6101208201527fffffffff81116100e7576101459036906004016100eb565b50506024358015156101408201527f1461029f575f80fd5b346100e7575f3660031901126100e757602060ff6002546101608201527f166040519015158152f35b346100e7575f3660031901126100e75760205f54606101808201527f4051908152f35b600435906fffffffffffffffffffffffffffffffff821682036101a08201527f6100e757565b346100e75760203660031901126100e7576101cc610194565b506101c08201527f61029f565b60403660031901126100e75760243567ffffffffffffffff8111616101e08201527ee7576101fe9036906004016100eb565b505061029f565b346100e7576020366102008201527f60031901121561029f575f80fd5b346100e7575f3660031901126100e75760036102208201527f546040516001600160a01b039091168152602090f35b346100e7575f366003196102408201527f01126100e7576020600154604051908152f35b346100e75760a03660031901126102608201527f6100e757610279610194565b5060443560ff81161461029f575f80fd5b3461006102808201527fe7575f3660031901121561029f575f80fd5b63e6fabc0960e01b5f5260205f606102a08201523060481b685afa156100e7575f806204817360e81b01176102c08201527f8051368280378136915af43d5f803e156102e5573d5ff35b3d5ffd00000000006102e08201525ff5908115612d5b5760018060a01b0382165f52601a84016020528060405f2055601b8401613eb781546139a5565b90556040516001600160a01b03831681527f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf190602090a29190565b630e2637d160e01b5f5260045ffd5b9190915f5160206158ef5f395f51905f52549260018401541561008257815f526019840160205260ff60405f20541660038110156134ec57600203613ef257815f5260205260405f2060405160608101908082106001600160401b03831117612d5b57605a916040527f3d605080600a3d3981f3608060405263e6fabc0960e01b5f5260205f6004817381523060601b6b5afa15604c575f80805136821760208201527f80378136915af43d5f803e156048573d5ff35b3d5ffd5b5f80fd00000000000060408201525ff5908115612d5b5760018060a01b0382165f52601a84016020528060405f2055601b8401613eb781546139a5565b614001613880565b5063ffffffff431161405e5765ffffffffffff4211614046576040516140268161339e565b5f815263ffffffff4316602082015265ffffffffffff4216604082015290565b6306dfcc6560e41b5f5260306004524260245260445ffd5b6306dfcc6560e41b5f5260206004524360245260445ffd5b5f5b82811061408457505050565b5f82820155600101614078565b9291908051906020810191825170014551231950b75fc4402da1732fc9bebe1982109182614244575b5050156142355751845551600184015580518060401b6bfe61000180600a3d393df3000161fffe8211830152600b8101601583015ff091821561422857526002830180546001600160a01b0319166001600160a01b039092169190911790555f5b600483018054821015614159575f90815260208082208301546001600160a01b0316825260038501905260409020805460ff1916905560010161411b565b5050925f5b84518110156141a2576001906001600160a01b0361417c82886137be565b5116828060a01b03165f526003840160205260405f208260ff198254161790550161415e565b5092600482018151916001600160401b0383116133b957600160401b83116133b957602090825484845580851061420d575b5001905f5260205f205f5b8381106141f0575050505060050155565b82516001600160a01b0316818301556020909201916001016141df565b61422290845f528580855f2001910390614076565b5f6141d4565b63301164255f526004601cfd5b63375f0aab60e11b5f5260045ffd5b61424e92506157cd565b5f806140ba565b90600182811c92168015614283575b602083101461426f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691614264565b604051905f825f51602061584f5f395f51905f5254916142ac83614255565b808352926001811690811561433b57506001146142d0575b6139819250038361341f565b505f51602061584f5f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b81831061431f575050906020613981928201016142c4565b6020919350806001915483858901015201910190918492614307565b6020925061398194915060ff191682840152151560051b8201016142c4565b604051905f825f51602061588f5f395f51905f52549161437983614255565b808352926001811690811561433b575060011461439c576139819250038361341f565b505f51602061588f5f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b8183106143eb575050906020613981928201016142c4565b60209193508060019154838589010152019101909184926143d3565b435f19810193929084116136985760ff1643811061445757505f925b83811015614433575b505f925050565b80408281036144455750600193505050565b15614452575f1901614423565b61442c565b614461904361368b565b92614423565b903590601e1981360301821215612d5b57018035906001600160401b038211612d5b57602001918160051b36038313612d5b57565b906080810160016144ad8284614467565b905011614942576144be8183614467565b90501561491b576144ce91614467565b156137aa57803590603e1981360301821215612d5b5701916144f08380614467565b9190928260051b9383850460201484151715613698576145128596949561535f565b925f945f97601a60fe19853603019501965b888a10156148d3578960051b85013586811215612d5b57850161454681613800565b6001600160a01b03165f90815260208a9052604090205415610064575f608082016001600160801b036145788261533e565b161515806148c0575b6148af575b6001600160a01b0361459784613800565b604051630427a21d60e11b81526020600482015294911691610124850191906001600160801b0390614616906001600160a01b036145d485613376565b166024890152602084013560448901526145f060408501615352565b151560648901526001600160a01b0361460b60608601613376565b16608489015261338a565b1660a486015261462860a08201615352565b151560c486015236819003601e190160c082013581811215612d5b578201602081359101936001600160401b038211612d5b576060820236038513612d5b57819061010060e48a015252610144870193905f905b8082106148655750505060e082013590811215612d5b5701803560208201926001600160401b038211612d5b578160051b908136038513612d5b5791879594936023198785030161010488015281845260208085019385010194935f9160fe19813603015b8484106147585750505050505050602093916001600160801b03848093039316905af19081156132c6575f91614726575b50816020916001938a015201990198614524565b90506020813d8211614750575b816147406020938361341f565b81010312612d5b57516001614712565b3d9150614733565b919395979850919395601f19848203018752873582811215612d5b578301602081013582526001600160a01b0361479160408301613376565b1660208301526060810135603e193683900301811215612d5b578101602081013591906040016001600160401b038311612d5b578236038113612d5b57829060e060408601528160e08601526101008501375f61010083850101526001600160801b036148006080830161338a565b16606084015260a0810135608084015260c081013563ffffffff60e01b8116809103612d5b578360209361484260e086956101009560a060019a015201615352565b151560c0830152601f80199101160101990197019401918a9897969593916146e1565b90919460608060019288358152838060a01b0361488460208b01613376565b1660208201526001600160801b0361489e60408b0161338a565b16604082015201960192019061467c565b90506148ba8161533e565b90614586565b506148cd60a08401614986565b15614581565b5094935095509550506020925020910135907fd04cd9af813f6f0b56e9411a6ee6a84eb5ac35a96f0c33d2e3a07d65baa8f4186020604051848152a15f5260205260405f2090565b5050507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6306d6c38360e01b5f5260045ffd5b903590601e1981360301821215612d5b57018035906001600160401b038211612d5b57602001918160061b36038313612d5b57565b358015158103612d5b5790565b903590605e1981360301821215612d5b570190565b60c0820160016149b88285614467565b905011614d3e576149c98184614467565b90501561491b576149da9083614467565b156137aa57803590607e1981360301821215612d5b57019160608301906020614a02836138d4565b91019065ffffffffffff80614a16846138d4565b1691161015614d2f57614a28826138d4565b65ffffffffffff80600286015460201c16911610614d2057614a6e65ffffffffffff614a67614a6182614a5a876138d4565b1687615384565b936138d4565b1684615384565b1115614d11576007820154600690920180548435946001600160a01b0394851694604082019391925f91602091166044614ab483614aac8989614993565b01358b6139b3565b604051948593849263095ea7b360e01b84528c600485015260248401525af19081156132c6575f91614cf2575b5015614ce3575460405163394f179b60e11b81526001600160a01b03909116600482015260248101959095526020818101356044870152856064815f885af19485156132c6575f95614cab575b5090614b3991614993565b91614b43826138d4565b9260405193637fbe95b560e01b85526040600486015260a48501918035601e1982360301811215612d5b578101602081359101936001600160401b038211612d5b578160061b36038513612d5b5760606044890152819052869360c485019392915f5b818110614c7357505050836020959365ffffffffffff829484895f9601356064860152614bdc604060018060a01b039201613376565b16608485015216602483015203925af19182156132c6575f92614c3d575b50614c04906138d4565b6040519160208301938452604083015265ffffffffffff60d01b9060d01b16606082015260468152614c3760668261341f565b51902090565b9091506020813d602011614c6b575b81614c596020938361341f565b81010312612d5b575190614c04614bfa565b3d9150614c4c565b919550919293604080600192838060a01b03614c8e8a613376565b168152602089013560208201520196019101918895949392614ba6565b919094506020823d602011614cdb575b81614cc86020938361341f565b81010312612d5b57905193614b39614b2e565b3d9150614cbb565b6367b9145160e01b5f5260045ffd5b614d0b915060203d60201161070c576106fe818361341f565b5f614ae1565b6308027f7760e31b5f5260045ffd5b637bde91e760e11b5f5260045ffd5b63087a19ab60e41b5f5260045ffd5b633249ceed60e11b5f5260045ffd5b903590601e1981360301821215612d5b57018035906001600160401b038211612d5b57602001918136038313612d5b57565b9060e081016001614d908284614467565b905011614ff357614da18183614467565b90501561491b57614db191614467565b156137aa57803590609e1981360301821215612d5b57016060810190614dd78282614467565b905015614fe45765ffffffffffff600284015460201c1691614df9834261368b565b614e08601686015480926136ac565b9360808401359460018101809111613698578503614fd557614e2d85614e33936136f4565b906139b3565b93614e4260178201548661368b565b4210614fc657614e51906153ac565b934260058601541015614fb757614ea6906040840195614e98614ea0614e778988614d4d565b9190614e83888a614467565b949091614e90368c613707565b94369161345b565b933691613746565b92614091565b7fa1a3b42179ad30022438a1ea333b38eaf4a7329beee5e2b8111c0dcd4e08821c6020604051858152a160a082360312612d5b5760405193614ee785613404565b614ef13684613707565b8552356001600160401b038111612d5b57614f0f9036908401613491565b602085015235906001600160401b038211612d5b570136601f82011215612d5b57614f41903690602081359101613746565b91826040820152816060820152519160208351930151906040519283926020840195865260408401526060830160208351919301905f5b818110614f9557505050815203808252614c37906020018261341f565b82516001600160a01b0316855286955060209485019490920191600101614f78565b6333fc8f5160e21b5f5260045ffd5b6372a84ce560e11b5f5260045ffd5b6343d3f5bf60e01b5f5260045ffd5b636c2bf3db60e01b5f5260045ffd5b631d3fc6bf60e21b5f5260045ffd5b909493919365ffffffffffff600283015460201c166150214284615384565b615039615033601686015480936136f4565b836139b3565b918284108080615255575b15615223575083106152155761505a90836139b3565b106152065761506a905b826152f7565b94601960f81b5f523060601b60025260165260365f209360028110156134ec57806150fb575050600181036150ec57156137aa576150ab816150b292614d4d565b369161345b565b9160608351036150dd578260206134ac940151606060408301519201519260018154910154906153c7565b632ce466bf60e01b5f5260045ffd5b6360a1ea7760e01b5f5260045ffd5b91939160011461510e5750505050505f90565b61513390600860048796970154910154906001600160801b038260801c92169061526b565b925f9260035f9201915b868110156151fb5761516361059e61515d6150ab8460051b860186614d4d565b86615793565b6001600160a01b0381165f9081526020859052604090205460ff1661518e575b506001905b0161513d565b6001600160a01b03165f9081527ff02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c0060205260409020805c156151d35750600190615188565b9460016151e192965d6139a5565b938585146151ef575f615183565b50505050505050600190565b505050505050505f90565b63046bb1e560e51b5f5260045ffd5b62f4462b60e01b5f5260045ffd5b93929150504282116152465761506a9261523e575b50615064565b90505f615238565b6347860b9760e01b5f5260045ffd5b506152646018870154856139b3565b4210615044565b6001600160801b0380921602911661528381836136ac565b9181156136b65706156134ac5760010190565b61529e6156aa565b6152a6615701565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152614c3760c08261341f565b906153029082615733565b1561530d57600f0190565b60090190565b60ff5f51602061592f5f395f51905f525460401c161561532f57565b631afcd79f60e31b5f5260045ffd5b356001600160801b0381168103612d5b5790565b35908115158203612d5b57565b6040519190601f01601f191682016001600160401b03811183821017612d5b57604052565b60166153a36134ac9365ffffffffffff600285015460201c169061368b565b910154906136ac565b6153b64282615733565b156153c15760090190565b600f0190565b92939194906153d685876157cd565b156155695782156155695770014551231950b75fc4402da1732fc9bebe19831015615569576001169061010e61540b8161535f565b9160883684376002600188160160888401538760898401526002840160a984015360aa830186905260ca8301527e300046524f53542d736563703235366b312d4b454343414b3235362d76316360ea8301526303430b6160e51b61010a830152812060cc820181815290600260ec84016001815360428420809318845253604270014551231950b75fc4402da1732fc9bebe19922060801c6001600160401b0360801b8260801b16179070014551231950b75fc4402da1732fc9bebe1990600160c01b9060401c090880156151fb5784601b6080945f9660209870014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe19038552018684015280604084015270014551231950b75fc4402da1732fc9bebe19910970014551231950b75fc4402da1732fc9bebe1903606082015282805260015afa505f51915f5260205260018060a01b0360405f20161490565b5050505050505f90565b61557b6138e7565b50600281015460058201546040519290916155bb916004916001600160a01b03166155a586613404565b6155ae82613621565b8652602086015201613952565b6040830152606082015290565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161563f579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156132c6575f516001600160a01b0381161561563557905f905f90565b505f906001905f90565b5050505f9160039190565b60048110156134ec578061565c575050565b600181036156735763f645eedf60e01b5f5260045ffd5b6002810361568e575063fce698f760e01b5f5260045260245ffd5b6003146156985750565b6335e2f38360e21b5f5260045260245ffd5b6156b261428d565b80519081156156c2576020012090565b50505f5160206158af5f395f51905f525480156156dc5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b61570961435a565b8051908115615719576020012090565b50505f51602061594f5f395f51905f525480156156dc5790565b906014600e8301549201548083146157845781818410931191821591111591819061577d575b1561576e578261576857505090565b14919050565b634c38ae9560e11b5f5260045ffd5b5081615759565b63f26224af60e01b5f5260045ffd5b81519190604183036157c3576157bc9250602082015190606060408401519301515f1a906155c8565b9192909190565b50505f9160029190565b6401000003d01990600790829081818009900908906401000003d0199080091490565b90615814575080511561580557602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580615845575b615825575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561581d56fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1029016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101","sourceMap":"1553:47844:168:-:0;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;1944:72:37;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47844:168;49102:19;;;1553:47844;49102:38;1553:47844;;-1:-1:-1;;;;;49211:9:168;1553:47844;49239:9;1553:47844;;49299:10;-1:-1:-1;1553:47844:168;;;49327:28;;;;;1553:47844;;;;;;49327:42;1553:47844;;;;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;15195:40;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47844:168;28113:15:171;28092:37;;:::i;:::-;15195:40:168;:52;1553:47844;;;;;;-1:-1:-1;1553:47844:168;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;13319:34;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;2357:1:29;1553:47844:168;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;1553:47844:168;;;;;;;;;;;;;;;;20108:52;-1:-1:-1;;;;;;;;;;;1553:47844:168;20108:52;1553:47844;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;26072:11:168;;:16;1553:47844;;-1:-1:-1;;;;;;;;;;;1553:47844:168;26168:19;1553:47844;26168:19;;1553:47844;26168:38;1553:47844;;26261:19;;;1553:47844;;;;;;;;;;;;;;;;;;;;;26371:29;26441:27;;;;;26583:39;;;1553:47844;;26703:13;;26718:22;;;;;;26997:15;;;:28;1553:47844;;;;;27261:29;;;-1:-1:-1;;;;;2689:66:168;;;;27261:29;1553:47844;2689:66;7051:25:77;2689:66:168;7105:8:77;2689:66:168;;;;;;;;;27261:29;;1553:47844;;27261:29;;;;;;:::i;:::-;1553:47844;27251:40;;1553:47844;;;;;;;;;;;;972:64:36;1553:47844:168;;;;;;;;;;;;;;;27110:261;1553:47844;27110:261;;1553:47844;2689:66;1553:47844;;2689:66;1553:47844;2689:66;;1553:47844;2689:66;1553:47844;2689:66;;1553:47844;;2689:66;;1553:47844;;2689:66;;1553:47844;2689:66;1553:47844;2689:66;;1553:47844;;27110:261;;;1553:47844;27110:261;;:::i;:::-;1553:47844;27087:294;;3980:23:40;;:::i;:::-;3993:249:80;1553:47844:168;3993:249:80;;-1:-1:-1;;;3993:249:80;;;;;;;;;;1553:47844:168;;;3993:249:80;1553:47844:168;;3993:249:80;;7051:25:77;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47844:168;27515:20;;;2689:66;;1553:47844;;;;27693:100;1553:47844;;;;;27623:32;;;1553:47844;;27693:48;27744:49;27693:48;;;1553:47844;27744:49;;1553:47844;27693:100;;:::i;:::-;27807:77;;;;;;1553:47844;;-1:-1:-1;;;27807:77:168;;-1:-1:-1;;;;;1553:47844:168;;;27807:77;;1553:47844;27847:4;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27807:77;;;;;26698:223;-1:-1:-1;1553:47844:168;;-1:-1:-1;;;27920:57:168;;-1:-1:-1;;;;;1553:47844:168;;;;27920:57;;1553:47844;27847:4;1553:47844;;;;;;;;;;;;;;;;;;;;;;;27920:57;;;;;;;;;;;;;;26698:223;1553:47844;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;23509:19;1553:47844;;;;;;;28123:32;;;1553:47844;;;-1:-1:-1;;;1553:47844:168;;;;;27920:57;;;;1553:47844;27920:57;1553:47844;27920:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;1553:47844;;;;;;;;;27807:77;;;;;;;;:::i;:::-;1553:47844;;27807:77;;;;;1553:47844;;;;27807:77;1553:47844;;;2689:66;-1:-1:-1;;;2689:66:168;;1553:47844;;;;;2689:66;;;1553:47844;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;26742:3;26788:11;;26821:14;;;;;;:::i;:::-;1553:47844;26821:34;26876:14;;;;;:::i;:::-;1553:47844;;;;;26742:3;;1553:47844;;26703:13;;1553:47844;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;26410:155;26535:19;;;:::i;:::-;26410:155;;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;35712:37:168;1553:47844;;;;35712:37;:::i;:::-;35801:32;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;35849:96;;;;;;1553:47844;;;;;;;;;;;;35849:96;;1553:47844;;;;;;;;35889:4;;35869:10;1553:47844;35849:96;;;:::i;:::-;;;;;;;;;1553:47844;-1:-1:-1;;1553:47844:168;;-1:-1:-1;;;35981:79:168;;35869:10;1553:47844;35981:79;;1553:47844;35889:4;1553:47844;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;35981:79;;;;;;;;;;;1553:47844;;;;;-1:-1:-1;;;;;1553:47844:168;;;;36176:70;1553:47844;;;;35869:10;;36176:70;;36119:238;;;;;1553:47844;;-1:-1:-1;;;36119:238:168;;-1:-1:-1;;;;;1553:47844:168;;;;36119:238;;1553:47844;;;;;;;;;;;;;;;;;;;;;;36119:238;;;;;;;;;36176:70;1553:47844;;;;;;;;36119:238;;;;;;:::i;:::-;1553:47844;;36119:238;;;1553:47844;;;;36119:238;1553:47844;;;;;;;;;36119:238;1553:47844;;;36176:70;;;;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;35981:79;;;;1553:47844;35981:79;1553:47844;35981:79;;;;;;;:::i;:::-;;;;;1553:47844;;;;;;;;;35849:96;;;;;:::i;:::-;1553:47844;;35849:96;;;;1553:47844;;;;;;;;;;;;;;16640:211;-1:-1:-1;;;;;;;;;;;1553:47844:168;16737:25;1553:47844;28092:37:171;28113:15;28092:37;;:::i;:::-;16678:38:168;1553:47844;16737:25;;1553:47844;;-1:-1:-1;;;;;1553:47844:168;;;;;16640:211;;:::i;:::-;1553:47844;;;;;;;;;;;;;;;;;;;;;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47844:168;28113:15:171;28092:37;;:::i;:::-;16254:41:168;1553:47844;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;12776:23;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;15683:25;-1:-1:-1;;;;;;;;;;;1553:47844:168;15683:25;1553:47844;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;12508:40;1553:47844;;;;;;;;;;;;;;;;;;;;;;;11918:32;-1:-1:-1;;;;;;;;;;;1553:47844:168;11918:32;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47844:168;28113:15:171;28092:37;;:::i;:::-;15993:41:168;1553:47844;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;:::i;:::-;-1:-1:-1;33433:28:171;33440:20;;;33433:28;:::i;:::-;33519:20;33512:28;33519:20;;;33512:28;:::i;:::-;10691:25:168;;;1553:47844;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47844:168;;;;;;;33557:241:171;;1553:47844:168;;33557:241:171;;1553:47844:168;;33557:241:171;;1553:47844:168;11080:33;;;1553:47844;11148:39;;;;1553:47844;11216:33;;;1553:47844;;;11293:48;;;1553:47844;11386:49;;;;1553:47844;;;;;;;;:::i;:::-;;;;;;:::i;:::-;33440:20:171;10774:19:168;;1553:47844;;;11080:33;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10829:27;;;1553:47844;;;;;;;;;;;;;;10734:712;;1553:47844;;;;;;;;;:::i;:::-;10885:20;;;1553:47844;-1:-1:-1;;;;;1553:47844:168;;;2307:3;;11386:49;1553:47844;;;;;;;;2307:3;33519:20:171;1553:47844:168;;;;;;;;2307:3;;;;10734:712;;1553:47844;;;;10734:712;;1553:47844;;;;10988:22;;;1553:47844;:::i;:::-;10734:712;1553:47844;10734:712;;1553:47844;;;11035:16;;1553:47844;;;:::i;:::-;10734:712;1553:47844;10734:712;;1553:47844;;;;10734:712;;1553:47844;;;;10734:712;;1553:47844;;;;10734:712;;1553:47844;;;;10734:712;;1553:47844;;;;10734:712;;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;17606:22;-1:-1:-1;;;;;;;;;;;1553:47844:168;17606:22;1553:47844;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1553:47844:168;;;;18843:28;18775:13;18843:28;;18770:129;18790:23;;;;;;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;18843:28;1553:47844;;;18815:3;18872:15;;;18843:28;18872:15;;;;:::i;:::-;;:::i;:::-;1553:47844;;;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;18834:54;;;;:::i;:::-;1553:47844;;18775:13;;1553:47844;;;;;;;-1:-1:-1;;1553:47844:168;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;757:66:38;3327:69:76;1737:93:38;;1948:4;757:66;3556:68:76;-1:-1:-1;;;;;;;;;;;1553:47844:168;37095:19;1948:4:38;37095:19:168;;1553:47844;37095:38;1553:47844;;;;37333:20;37329:295;;1553:47844;37737:27;;;1553:47844;;;;37773:33;1553:47844;37737:69;1553:47844;;;;37872:37;;1553:47844;;;37913:21;1553:47844;;;37913:21;;:::i;:::-;1553:47844;-1:-1:-1;1553:47844:168;;38003:28;1553:47844;;;;38003:28;;:::i;:::-;38047:44;1948:4:38;38047:44:168;;;40948:22;;1553:47844;;40948:22;1553:47844;;;;40948:22;:::i;:::-;2385:5;;;;;;;;1553:47844;2385:5;;;;;;;41083:40;2385:5;;;41083:40;:::i;:::-;41133:18;;;41182:22;;;;;;2385:5;38920:146;2385:5;;;;1083:131:25;;38175:43:168;1553:47844;38175:43;;;38262:30;1553:47844;;;;38262:30;;:::i;:::-;38338:33;1553:47844;;;;38338:33;;:::i;:::-;1553:47844;38471:21;1553:47844;;;37913:21;38471;:::i;:::-;1553:47844;38553:13;;1553:47844;;38553:13;;:::i;:::-;1553:47844;;;19605:303:171;1553:47844:168;19605:303:171;;1553:47844:168;;;;;;;;2307:3;1553:47844;;;;;;;;;;;;;37773:33;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19605:303:171;;;;;;:::i;:::-;1553:47844:168;19582:336:171;;37737:27:168;;;;;1553:47844;;38825:21;1553:47844;;;37913:21;38825;:::i;:::-;1553:47844;2307:3;1553:47844;;37872:37;;1553:47844;;;;37872:37;;1553:47844;38862:26;1553:47844;;;;;;38862:26;1553:47844;39031:21;1553:47844;;;37913:21;39031;:::i;:::-;1553:47844;;;;38920:146;;:::i;:::-;2132:66;;;3556:68:76;757:66:38;3556:68:76;1553:47844:168;;2132:66;-1:-1:-1;;;2132:66:168;;1553:47844;;2132:66;41206:3;41268:22;40948;1553:47844;;40948:22;1553:47844;;;;41268:22;:::i;:::-;1553:47844;;;;;;;;;;;;;41333:19;;;1553:47844;;;;;;;;37737:27;1553:47844;;;;;1948:4:38;41333:79:168;1553:47844;;1948:4:38;1553:47844:168;;;41911:17;1553:47844;;;;;;;;;41491:17;;;;;:::i;:::-;;;;1553:47844;;;;;;;-1:-1:-1;41333:19:168;;;1553:47844;;;;;;;-1:-1:-1;;1553:47844:168;;;;;41614:39;;;1553:47844;;41614:41;;;:::i;:::-;1553:47844;;41487:270;41809:17;41776:51;41809:17;;;;:::i;:::-;1553:47844;;;;;;;;;;;;;41776:51;41911:17;:::i;:::-;1553:47844;;;;;;17359:159:171;;;;;;;4093:83:22;;;;1553:47844:168;41206:3;1553:47844;41167:13;;;41487:270;1553:47844;;41333:19;1553:47844;;;;;;;;41333:19;1553:47844;;;;;;;;;;41487:270;;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;2385:5;-1:-1:-1;;;2307:3:168;;;1553:47844;2307:3;1553:47844;;2307:3;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;37329:295;37377:56;37419:13;;1553:47844;;37419:13;;:::i;:::-;1553:47844;;;;;37377:56;:::i;:::-;1553:47844;;;;37564:21;1553:47844;;;37564:21;;:::i;:::-;1553:47844;37546:15;:39;37329:295;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;1737:93:38;-1:-1:-1;;;1789:30:38;;1553:47844:168;1789:30:38;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2821:1;1553:47844;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;14316:77;;28092:37:171;;28113:15;;28092:37;:::i;:::-;14316:77:168;1553:47844;;;9268:329:173;1553:47844:168;;;;;9268:329:173;;;;;;;;;;;;;;;;;;;;1553:47844:168;9268:329:173;;;;1553:47844:168;9268:329:173;1553:47844:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20346:19;-1:-1:-1;;;;;;;;;;;1553:47844:168;20346:19;1553:47844;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19115:36;-1:-1:-1;;;;;;;;;;;1553:47844:168;19115:36;1553:47844;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;18368:31;-1:-1:-1;;;;;;;;;;;1553:47844:168;18368:31;:43;1553:47844;;;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;23413:11:168;;:16;1553:47844;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;23509:19;;1553:47844;23509:38;1553:47844;;23602:19;;;1553:47844;;;;;;;;;;;;;;;;;;;;;23753:32;;;1553:47844;23815:48;;;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;23877:78;;;;;1553:47844;;-1:-1:-1;;;23877:78:168;;23897:10;1553:47844;23877:78;;1553:47844;23917:4;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23877:78;;;;;1553:47844;-1:-1:-1;;1553:47844:168;;-1:-1:-1;;;23991:61:168;;23897:10;1553:47844;23991:61;;1553:47844;23917:4;1553:47844;;;;;;;;;;;;;;;;;;;;;;23991:61;1553:47844;23877:78;;;;;:::i;:::-;1553:47844;;23877:78;;;;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;22105:19;;;1553:47844;;;;;22212:26;;1553:47844;;;22202:37;;22258:25;;1553:47844;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;13048:35;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17375:25;-1:-1:-1;;;;;;;;;;;1553:47844:168;17375:25;1553:47844;:::i;:::-;;;;;;-1:-1:-1;;;;;1553:47844:168;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;5647:18:40;:43;;;1553:47844:168;;;;;;;;:::i;:::-;;;;:::i;:::-;;2465:3;1553:47844;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5835:13:40;;1553:47844:168;;;;5870:4:40;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;5647:43:40;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;5669:21:40;5647:43;;1553:47844:168;;;;;;;;;;;;;2303:62:29;;:::i;:::-;1944:72:37;;:::i;:::-;3300:4;1553:47844:168;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;3319:20:37;1553:47844:168;;;966:10:34;1553:47844:168;;3319:20:37;1553:47844:168;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;1553:47844:168;;;;18075:19;18010:13;18075:19;;18005:120;18025:20;;;;;;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;18047:3;18101:12;;;;;:::i;:::-;1553:47844;;;;;;;;;;;;18066:48;;;;:::i;:::-;1553:47844;;;;;;;;;18010:13;;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;:::i;:::-;;;;972:64:36;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;12202:30;-1:-1:-1;;;;;;;;;;;1553:47844:168;12202:30;1553:47844;;;;;;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;1553:47844:168;;;;;;;-1:-1:-1;;;;;1553:47844:168;3975:40:29;1553:47844:168;;3975:40:29;1553:47844:168;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;6429:44:30;;;;;1553:47844:168;6425:105:30;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;6959:1:30;;-1:-1:-1;;;;;1553:47844:168;6891:76:30;;:::i;:::-;;;:::i;6959:1::-;1553:47844:168;;:::i;:::-;2243:17;;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1553:47844:168;;-1:-1:-1;;;;;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47844:168;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;-1:-1:-1;;;;;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47844:168;;;;;3676:10:40;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;;;;;;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;9528:17;;:::i;:::-;2307:3;;6591:4:30;9506:19:168;;1553:47844;3652:7:40;2307:3:168;;;1553:47844;;2307:3;;;1553:47844;2307:3;1553:47844;2307:3;;;;;1553:47844;2307:3;;;;;;;;;;1553:47844;;;;;;;:::i;:::-;;;;9585:57;1553:47844;9555:27;3676:10:40;9555:27:168;;1553:47844;;;;2307:3;1553:47844;;;;;;;;28092:37:171;28113:15;28092:37;;:::i;:::-;9695:38:168;1553:47844;;;9652:33;;;1553:47844;;2203:1:171;;;;;;;;1553:47844:168;;;;;;;9795:32;;;1553:47844;;;;;;;;;;;9782:57;;;;;;;;9776:63;9782:57;;;;;1553:47844;9776:63;;:::i;:::-;2385:5;;;;;;;;;;;9849:48;;;1553:47844;2385:5;2465:3;2385:5;;2465:3;2385:5;;;;;1553:47844;9967:49;1553:47844;-1:-1:-1;;;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;;;;;;1553:47844:168;6654:20:30;1553:47844:168;;;7115:1;1553:47844;;6654:20:30;1553:47844:168;;2385:5;-1:-1:-1;;;2307:3:168;;;1553:47844;2307:3;;1553:47844;2307:3;2385:5;-1:-1:-1;;;2307:3:168;;;1553:47844;2307:3;;1553:47844;2307:3;9782:57;;;;1553:47844;9782:57;1553:47844;9782:57;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1553:47844;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;6591:4:30;1553:47844:168;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;3676:10:40;1553:47844:168;;;;;;;;;;;;;;;;6591:4:30;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;7115:1;1553:47844;;;;;;;;;;;;7115:1;1553:47844;;;;;:::i;:::-;;;;;;;-1:-1:-1;1553:47844:168;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;;;;;6591:4:30;1553:47844:168;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;7115:1;1553:47844;;;;;;;;;;;7115:1;1553:47844;;;;;:::i;:::-;;;;6425:105:30;-1:-1:-1;;;6496:23:30;;1553:47844:168;;6496:23:30;6429:44;7115:1:168;1553:47844;;-1:-1:-1;;;;;1553:47844:168;6448:25:30;;6429:44;;;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;1553:47844:168;;;;;4301:16:30;1553:47844:168;;4724:16:30;;:34;;;;1553:47844:168;;4788:16:30;:50;;;;1553:47844:168;4853:13:30;:30;;;;1553:47844:168;4849:91:30;;;6959:1;1553:47844:168;;;-1:-1:-1;;;;;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;4977:67:30;;1553:47844:168;6891:76:30;;:::i;6959:1::-;6891:76;;:::i;:::-;1553:47844:168;;:::i;:::-;2243:17;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1553:47844:168;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3676:10:40;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;;;;;;1553:47844:168;6891:76:30;;:::i;:::-;;;:::i;:::-;5011:15:168;:19;2307:3;;5069:21;;2307:3;;5136:32;;;2307:3;;;5417:2;5381:32;;;;:::i;:::-;2307:3;5361:58;;2307:3;;;1553:47844;;;;;;;;;;;;;;;;;:::i;:::-;2307:3;1553:47844;;2307:3;;;;;;2303:62:29;;:::i;:::-;1553:47844:168;;1800:178:73;;;;;;;1553:47844:168;;;1800:178:73;;;1553:47844:168;;-1:-1:-1;;;;;;;;;;;1553:47844:168;48820:24;1553:47844;;;;;;;48820:24;5575:17;;:::i;:::-;2307:3;1553:47844;2307:3;;5553:19;;1553:47844;3652:7:40;2307:3:168;;;1553:47844;2307:3;;;;1553:47844;2307:3;;;;;;;;;;;;;;;;;;1553:47844;;;;;;:::i;:::-;2307:3;;;-1:-1:-1;;;;;1553:47844:168;;;5625:52;;;2307:3;;;1553:47844;;;5625:52;;;;2307:3;;;5602:20;;;1553:47844;;;;;;-1:-1:-1;;;;;;1553:47844:168;;;;;;;2307:3;;;1553:47844;;;;;;;;2307:3;;;1553:47844;;;;;;;;;;2203:1:171;5687:25:168;;;2203:1:171;1553:47844:168;;:::i;:::-;;2383:18:171;1553:47844:168;;;;;;:::i;:::-;1855:13:171;1553:47844:168;;23096:89:171;1553:47844:168;5875:22;;;1553:47844;;-1:-1:-1;;;;;;2203:1:171;;;;;1553:47844:168;;;;;;;;;:::i;:::-;;;;5962:65;;;1553:47844;;;5962:65;1553:47844;5943:16;;;1553:47844;2307:3;2203:1:171;;1553:47844:168;2203:1:171;;;1553:47844:168;6037:33;;;2203:1:171;;-1:-1:-1;;2203:1:171;1553:47844:168;;;2203:1:171;;;1553:47844:168;;-1:-1:-1;;;6141:37:168;;1553:47844;;;;;6141:37;;;;;;;;6135:43;6141:37;;;;;6135:43;;:::i;:::-;2385:5;;;;;;;;;;6188:48;;;1553:47844;2385:5;2465:3;2385:5;;2465:3;2385:5;;;;;2465:3;;6468:213;6306:49;;;;6498:37;6306:49;1553:47844;6306:49;;1553:47844;;;;;;;:::i;:::-;;;2465:3;;;1553:47844;;2465:3;;;1553:47844;;;;2465:3;:::i;:::-;5011:15;;1553:47844;;2465:3;;:::i;:::-;6498:37;;6468:213;:::i;:::-;5064:101:30;;1553:47844:168;;;5064:101:30;1553:47844:168;5140:14:30;1553:47844:168;-1:-1:-1;;;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;5140:14:30;1553:47844:168;;2385:5;-1:-1:-1;;;2307:3:168;;;1553:47844;2307:3;1553:47844;;2307:3;2385:5;-1:-1:-1;;;2307:3:168;;;1553:47844;2307:3;1553:47844;;2307:3;6141:37;1553:47844;;;;;;;;;2307:3;-1:-1:-1;;;2307:3:168;;1553:47844;2307:3;;;-1:-1:-1;;;2307:3:168;;1553:47844;2307:3;;;-1:-1:-1;;;2307:3:168;;1553:47844;2307:3;;;-1:-1:-1;;;2307:3:168;;1553:47844;2307:3;;1553:47844;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;3676:10:40;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;1553:47844:168;;;;;;;;4977:67:30;-1:-1:-1;;;;;;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;4977:67:30;;4849:91;-1:-1:-1;;;4906:23:30;;1553:47844:168;4906:23:30;;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;4824:6:60;-1:-1:-1;;;;;1553:47844:168;4815:4:60;4807:23;4803:145;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;4803:145:60;-1:-1:-1;;;4908:29:60;;1553:47844:168;;4908:29:60;1553:47844:168;-1:-1:-1;1553:47844:168;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4401:6:60;1553:47844:168;4392:4:60;4384:23;;;:120;;;;1553:47844:168;4367:251:60;;;2303:62:29;;:::i;:::-;1553:47844:168;;-1:-1:-1;;;5865:52:60;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;5865:52:60;;;;;;;;1553:47844:168;-1:-1:-1;5861:437:60;;-1:-1:-1;;;6227:60:60;;1553:47844:168;;;;;1805:47:53;6227:60:60;5861:437;5959:40;;;-1:-1:-1;;;;;;;;;;;5959:40:60;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;1553:47844:168;;;;;2407:36:53;;;;1553:47844:168;;;;2458:15:53;:11;;4065:25:66;;1553:47844:168;4107:55:66;4065:25;;;;;;;1553:47844:168;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;:::-;;1553:47844:168;;;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;1553:47844:168;;6159:70:53;-1:-1:-1;;;6199:19:53;;1553:47844:168;;6199:19:53;1744:119;-1:-1:-1;;;1805:47:53;;1553:47844:168;;;1805:47:53;;5955:120:60;-1:-1:-1;;;6026:34:60;;1553:47844:168;;;6026:34:60;;5865:52;;;;1553:47844:168;5865:52:60;;1553:47844:168;5865:52:60;;;;;;1553:47844:168;5865:52:60;;;:::i;:::-;;;1553:47844:168;;;;;5865:52:60;;;;1553:47844:168;-1:-1:-1;1553:47844:168;;5865:52:60;;;-1:-1:-1;5865:52:60;;4367:251;-1:-1:-1;;;4578:29:60;;1553:47844:168;4578:29:60;;4384:120;-1:-1:-1;;;;;;;;;;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;4462:42:60;;;-1:-1:-1;4384:120:60;;;1553:47844:168;;;;;;;;;;;;;;;;2886:1;1553:47844;;;;;;;;;;;;;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;2971:9:37;2967:62;;1553:47844:168;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;3627:22:37;1553:47844:168;;;966:10:34;1553:47844:168;;3627:22:37;1553:47844:168;;2967:62:37;-1:-1:-1;;;3003:15:37;;1553:47844:168;3003:15:37;;1553:47844:168;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1553:47844:168;20881:23;;1553:47844;;-1:-1:-1;;;;;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47844:168;28113:15:171;28092:37;;:::i;:::-;1553:47844:168;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;1944:72:37;;:::i;:::-;29426:36:168;1553:47844;;;;29426:36;:::i;:::-;-1:-1:-1;;;;;;1553:47844:168;;;;29513:70;1553:47844;;;;29550:10;;29513:70;-1:-1:-1;;;;;;;;;;;1553:47844:168;12776:23;;1553:47844;-1:-1:-1;;;;;1553:47844:168;29473:134;;;;;1553:47844;;-1:-1:-1;;;29473:134:168;;-1:-1:-1;;;;;1553:47844:168;;;;29473:134;;1553:47844;;;;;;;;;;;;;;;;;;29473:134;1553:47844;;29473:134;;;;;;;;;1553:47844;;;;;;;;29513:70;;;1553:47844;;;;;;;;;;;;;;3980:23:40;;:::i;1553:47844:168:-;;;;;;;;;;;;;;11664:22;-1:-1:-1;;;;;;;;;;;1553:47844:168;11664:22;1553:47844;;;;;;;;;;;;;;;;;;;;;19708:51;-1:-1:-1;;;;;;;;;;;1553:47844:168;19708:51;1553:47844;;;;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;2303:62:29;;:::i;:::-;1553:47844:168;;21199:51;-1:-1:-1;;;;;;;;;;;1553:47844:168;21199:51;1553:47844;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;1944:72:37;;:::i;:::-;31469:36:168;1553:47844;;;;31469:36;:::i;:::-;31557:32;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;31605:96;;;;;;1553:47844;;;;;;;;;;;;31605:96;;1553:47844;;;;;;;;31645:4;;31625:10;1553:47844;31605:96;;;:::i;:::-;;;;;;;;;1553:47844;-1:-1:-1;;1553:47844:168;;-1:-1:-1;;;31737:79:168;;31625:10;1553:47844;31737:79;;1553:47844;31645:4;1553:47844;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;31737:79;;;;;;;;;;;1553:47844;;;;;-1:-1:-1;;;;;1553:47844:168;;;;31932:70;1553:47844;;;;31625:10;;31932:70;;-1:-1:-1;;;;;;;;;;;1553:47844:168;31557:20;12776:23;1553:47844;-1:-1:-1;;;;;1553:47844:168;31875:236;;;;;1553:47844;;-1:-1:-1;;;31875:236:168;;-1:-1:-1;;;;;1553:47844:168;;;;31875:236;;1553:47844;;;;;;;;;;;;;;31875:236;1553:47844;;;31875:236;;;;;;;;;;1553:47844;;;;;;;;31932:70;;;;1553:47844;-1:-1:-1;;;1553:47844:168;;;;;31737:79;;;;1553:47844;31737:79;1553:47844;31737:79;;;;;;;:::i;:::-;;;;;1553:47844;;;;;;;;;31605:96;;;;;:::i;:::-;1553:47844;;31605:96;;;;1553:47844;;;;;;-1:-1:-1;;1553:47844:168;;;;;;:::i;:::-;;;:::i;:::-;1944:72:37;;;:::i;:::-;33537:37:168;1553:47844;;;;33537:37;:::i;:::-;-1:-1:-1;;;;;;1553:47844:168;;;;33625:70;1553:47844;;;;33662:10;;33625:70;;33585:136;;;;;1553:47844;;-1:-1:-1;;;33585:136:168;;-1:-1:-1;;;;;1553:47844:168;;;;33585:136;;1553:47844;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;33585:136;1553:47844;-1:-1:-1;33585:136:168;;;;;;;;1553:47844;33585:136;;;33625:70;1553:47844;;;;;;;33585:136;1553:47844;33585:136;;;:::i;:::-;1553:47844;33585:136;;;1553:47844;;;;;;;;;33625:70;;;;1553:47844;;;;;;-1:-1:-1;;1553:47844:168;;;;2303:62:29;;:::i;:::-;1553:47844:168;;21596:52;-1:-1:-1;;;;;;;;;;;1553:47844:168;21596:52;1553:47844;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;19373:42;-1:-1:-1;;;;;;;;;;;1553:47844:168;19373:42;1553:47844;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;:::-;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;:::-;-1:-1:-1;;;;;1553:47844:168;;;;;;-1:-1:-1;;1553:47844:168;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;-1:-1:-1;;1553:47844:168;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47844:168;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1553:47844:168;;;;:::o;2243:17::-;1553:47844;;;;;;;:::i;:::-;2243:17;1553:47844;;-1:-1:-1;;;1553:47844:168;2243:17;;;:::o;2307:3::-;;;;;;;;;;:::o;:::-;1553:47844;;;2307:3;;;;;;;;;;;;;;;:::o;:::-;1553:47844;;;2307:3;;;;;;;;2203:1:171;;;;;;;;;;1553:47844:168;;;;;;;2203:1:171;:::o;:::-;1553:47844:168;;2203:1:171;;;;;;;;:::o;2385:5:168:-;;;;;;;;;;;;;;;;:::o;2465:3::-;;;;;;;;;;;1553:47844;;;;:::i;:::-;2465:3;;;1553:47844;;;2465:3;;;1553:47844;2465:3;;;:::o;:::-;-1:-1:-1;;;;;2465:3:168;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;1553:47844;;;;;;;:::i;:::-;2465:3;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;1553:47844;;;;;:::i;:::-;2465:3;;;;;;;;1553:47844;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;:::o;:::-;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;14573:375::-;28092:37:171;-1:-1:-1;;;;;;;;;;;1553:47844:168;28113:15:171;28092:37;;:::i;:::-;14825:22:168;;;1553:47844;14777:22;;;;;;14930:11;;;;1553:47844;14573:375;:::o;14801:3::-;14848:14;;;;;;:::i;:::-;-1:-1:-1;;;;;1553:47844:168;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;14824:39;14820:90;;1553:47844;;14762:13;;14820:90;14883:12;;;;1553:47844;14883:12;:::o;1553:47844::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47844:168;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;-1:-1:-1;1553:47844:168;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;:::o;2689:66::-;;;;;;;;;;:::o;3405:215:29:-;-1:-1:-1;;;;;1553:47844:168;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;1553:47844:168;;-1:-1:-1;;;;;;1553:47844:168;;;;;;;-1:-1:-1;;;;;1553:47844:168;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;1553:47844:168;;3509:1:29;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;1553:47844:168;;-1:-1:-1;2763:40:29;2709:128:37;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;2770:61:37;;2709:128::o;2770:61::-;2805:15;;;-1:-1:-1;2805:15:37;;-1:-1:-1;2805:15:37;39170:934:168;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;39346:19;;;;1553:47844;39346:38;1553:47844;;;;;39439:19;;;1553:47844;;;;;;;;;;;;;;39477:24;39439:62;1553:47844;;3543:209:25;1553:47844:168;3543:209:25;1553:47844:168;3543:209:25;1553:47844:168;;3543:209:25;1553:47844:168;1052:614:22;;;;;;;;-1:-1:-1;;;;;1052:614:22;;;;;1651:6:169;1052:614:22;1553:47844:168;1052:614:22;1888:66:169;4093:83:22;;1998:66:169;1553:47844:168;4093:83:22;;;2108:66:169;1553:47844:168;4093:83:22;;;2218:66:169;2210:6;4093:83:22;;;2328:66:169;2320:6;4093:83:22;;;2438:66:169;2430:6;4093:83:22;;;2548:66:169;2540:6;4093:83:22;;;2658:66:169;2650:6;4093:83:22;;;2768:66:169;2760:6;4093:83:22;;;2878:66:169;2870:6;4093:83:22;;;2988:66:169;2980:6;4093:83:22;;;3098:66:169;3090:6;4093:83:22;;;3208:66:169;3200:6;4093:83:22;;;3318:66:169;3310:6;4093:83:22;;;3428:66:169;3420:6;4093:83:22;;;3538:66:169;3530:6;4093:83:22;;;3648:66:169;3640:6;4093:83:22;;;3758:66:169;3750:6;4093:83:22;;;3868:66:169;3860:6;4093:83:22;;;3978:66:169;3970:6;4093:83:22;;;4088:66:169;4080:6;4093:83:22;;;4198:66:169;4190:6;4093:83:22;;;39899:4:168;4536:2:169;1553:47844:168;4437:66:169;;;;;4436:103;4416:6;4093:83:22;;;4592:66:169;4584:6;4093:83:22;;;39776:135:168;4670:150:169;;;;;;1553:47844:168;;;;;;;-1:-1:-1;1553:47844:168;39922:28;;;1553:47844;;;;-1:-1:-1;1553:47844:168;;39979:33;;;:35;1553:47844;;39979:35;:::i;:::-;1553:47844;;;;-1:-1:-1;;;;;1553:47844:168;;;;40030:32;;1553:47844;;40030:32;40073:24;39170:934;:::o;1553:47844::-;;;;;;;;;39170:934;;;;-1:-1:-1;;;;;;;;;;;1553:47844:168;39346:19;31500:4;39346:19;;1553:47844;39346:38;1553:47844;;;-1:-1:-1;1553:47844:168;39439:19;;;1553:47844;;;;-1:-1:-1;1553:47844:168;;;;;;;;;39477:24;39439:62;1553:47844;;3543:209:25;-1:-1:-1;3543:209:25;1553:47844:168;3543:209:25;1553:47844:168;-1:-1:-1;3543:209:25;1553:47844:168;1052:614:22;;;;;;;;-1:-1:-1;;;;;1052:614:22;;;;;1545:4:170;1052:614:22;1553:47844:168;1052:614:22;2041:66:170;4093:83:22;;39838:4:168;1052:614:22;1553:47844:168;2187:66:170;2186:105;1553:47844:168;4093:83:22;;;2342:66:170;1553:47844:168;4093:83:22;;;-1:-1:-1;2420:150:170;;;;;;1553:47844:168;;;;;;;-1:-1:-1;1553:47844:168;39922:28;;;1553:47844;;;;-1:-1:-1;1553:47844:168;;39979:33;;;:35;1553:47844;;39979:35;:::i;23318:229:171:-;1553:47844:168;;:::i;:::-;;;23496:12:171;15374:24:83;15370:103;;1553:47844:168;837:15:87;14374:24:83;14370:103;;1553:47844:168;;;;;:::i;:::-;23466:1:171;1553:47844:168;;;23496:12:171;1553:47844:168;23434:106:171;;;1553:47844:168;;837:15:87;1553:47844:168;;23434:106:171;;1553:47844:168;23318:229:171;:::o;14370:103:83:-;15421:41;;;23466:1:171;14421:41:83;14452:2;14421:41;1553:47844:168;837:15:87;1553:47844:168;;;23466:1:171;14421:41:83;15370:103;15421:41;;;23466:1:171;15421:41:83;15452:2;15421:41;1553:47844:168;23496:12:171;1553:47844:168;;;23466:1:171;15421:41:83;1553:47844:168;;;;;;;;;;;:::o;:::-;;;;;;;;;;46852:1421;;;;2203:1:171;;47552:25:168;;;;2203:1:171;;;1145:66:27;;1837:24:26;;:71;;;;46852:1421:168;1553:47844;;;;;2203:1:171;1553:47844:168;;2203:1:171;1553:47844:168;;;;1705:1673:173;;;;;;;;;;;;;;;;;;;-1:-1:-1;1705:1673:173;;;;;;;47712:52:168;;;1553:47844;;-1:-1:-1;;;;;;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;-1:-1:-1;47875:3:168;47850:16;;;1553:47844;;47846:27;;;;;-1:-1:-1;1553:47844:168;;;47552:25;1553:47844;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;47948:15;;1553:47844;;;;;;;-1:-1:-1;;1553:47844:168;;;;;47831:13;;47846:27;;;;-1:-1:-1;48050:3:168;1553:47844;;48023:25;;;;;1553:47844;;-1:-1:-1;;;;;48090:17:168;1553:47844;48090:17;;:::i;:::-;2307:3;1553:47844;;;;;;;-1:-1:-1;1553:47844:168;;48121:15;;1553:47844;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;48008:13;;48023:25;;;47850:16;48175;;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;-1:-1:-1;;;1553:47844:168;;;;47552:25;1553:47844;;;;;;;;;;;48003:163;1553:47844;;;-1:-1:-1;1553:47844:168;47552:25;-1:-1:-1;1553:47844:168;-1:-1:-1;1553:47844:168;;;;;;48218:28;;;;;;1553:47844;46852:1421::o;1553:47844::-;2307:3;;-1:-1:-1;;;;;1553:47844:168;;;;;47552:25;1553:47844;;;;;;;;;;;;-1:-1:-1;1553:47844:168;;;;-1:-1:-1;1553:47844:168;;;;;;:::i;:::-;;;;1705:1673:173;;-1:-1:-1;1705:1673:173;;;;1553:47844:168;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;1837:71:26;1865:43;;;;:::i;:::-;1837:71;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22293:532:171;22418:12;-1:-1:-1;;2307:3:168;;;22293:532:171;;2307:3:168;;;;1553:47844;;22418:12:171;22458:22;;22418:12;;22458:50;1553:47844:168;22458:50:171;;22542:8;;;;;;22518:278;-1:-1:-1;1553:47844:168;;-1:-1:-1;;22293:532:171:o;22523:17::-;22581:12;;22611:11;;;;;-1:-1:-1;22433:1:171;;-1:-1:-1;;;22642:11:171:o;22607:119::-;22678:8;22674:52;;-1:-1:-1;;1553:47844:168;22523:17:171;;22674:52;22706:5;;22458:50;22487:21;22418:12;;22487:21;:::i;:::-;22458:50;;;1553:47844:168;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;:::o;40110:683::-;;40238:22;;;40271:1;40238:22;;;;:::i;:::-;:34;;;1553:47844;;40315:22;;;;:::i;:::-;:34;;;40311:177;;40542:22;;;:::i;:::-;1553:47844;;;;;;;;;;;;;;;;;;40632:23;;;;;:::i;:::-;2385:5;;;;1553:47844;2385:5;;;;;45933:2;2385:5;;;;;;;45979:36;;;;;;:::i;:::-;46025:18;1553:47844;46059:13;1553:47844;;46194:28;1553:47844;;;;;;46194:28;;46054:685;46094:3;46074:18;;;;;;1553:47844;;;;;;;;;;;;;;46223:18;;;:::i;:::-;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;46194:53;1553:47844;;;40238:22;46317:25;;-1:-1:-1;;;;;46317:25:168;;;:::i;:::-;1553:47844;46317:30;;:72;;;46094:3;46313:144;;46094:3;-1:-1:-1;;;;;46504:18:168;;;:::i;:::-;1553:47844;;-1:-1:-1;;;46496:76:168;;45933:2;46496:76;;;1553:47844;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;-1:-1:-1;;;;;1553:47844:168;;;:::i;:::-;;;;;;45933:2;1553:47844;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;;;;;;45933:2;1553:47844;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45933:2;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;41776:51;1553:47844;;;;;;;;;;;;45933:2;1553:47844;;;;;;;;;;;;;;;;;;;;;;;46496:76;;;;;;;45933:2;46496:76;;-1:-1:-1;;;;;46496:76:168;;;;1553:47844;;46496:76;;;;;;;;1553:47844;46496:76;;;1553:47844;4093:83:22;;45933:2:168;4093:83:22;40271:1:168;4093:83:22;;;;1553:47844:168;46094:3;1553:47844;46059:13;;;46496:76;;;45933:2;46496:76;;;;;;;;;1553:47844;46496:76;;;:::i;:::-;;;1553:47844;;;;;40271:1;46496:76;;;;;-1:-1:-1;46496:76:168;;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;45933:2;1553:47844;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;:::i;:::-;;45933:2;1553:47844;;;;;;;-1:-1:-1;;1553:47844:168;;;;;;;;;;;;45933:2;1553:47844;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;40238:22;1553:47844;;;:::i;:::-;;;;;;;;;;40238:22;1553:47844;;;;;;;;;;;;;;;;;;45933:2;1553:47844;;;;;;;;40271:1;1553:47844;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40271:1;1553:47844;;;;;;;;;;;45933:2;1553:47844;;;:::i;:::-;;45933:2;1553:47844;;;-1:-1:-1;;;;;1553:47844:168;;;;;:::i;:::-;;;;;;;;;;;;;;46313:144;46417:25;;;;;:::i;:::-;46313:144;;;46317:72;46352:37;;1553:47844;46352:37;;;:::i;:::-;46351:38;46317:72;;46074:18;;;;;;;;;;45933:2;46074:18;;1083:131:25;40691:16:168;;1553:47844;;40672:36;45933:2;1553:47844;;;;;40672:36;1553:47844;3543:209:25;45933:2:168;3543:209:25;1553:47844:168;;3543:209:25;40110:683:168;:::o;40311:177::-;40457:20;;;40464:13;40457:20;:::o;1553:47844::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;42243:1705::-;42373:24;;;42408:1;42373:24;;;;:::i;:::-;:36;;;1553:47844;;42454:24;;;;:::i;:::-;:36;;;42450:179;;42685:24;;;;:::i;:::-;1553:47844;;;;;;;;;;;;;;;;;;42731:21;;;;;42755;42731;;;:::i;:::-;42755;;;1553:47844;42755:21;;;;:::i;:::-;1553:47844;;;42731:45;1553:47844;;;42834:21;;;:::i;:::-;1553:47844;42859:29;;;;1553:47844;42755:21;1553:47844;;;;42834:54;1553:47844;;43045:46;1553:47844;43069:21;42965:46;42989:21;;;;:::i;:::-;1553:47844;42965:46;;:::i;:::-;43069:21;;:::i;:::-;1553:47844;43045:46;;:::i;:::-;-1:-1:-1;1553:47844:168;;;43213:31;;;1553:47844;43282:32;;;;1553:47844;;;;;-1:-1:-1;;;;;1553:47844:168;;;;43381:19;;;;1553:47844;;;;42755:21;;1553:47844;43269:144;43350:62;42755:21;43381:19;;1553:47844;43381:19;:::i;:::-;:31;1553:47844;43350:62;;:::i;:::-;43381:19;1553:47844;;;;;;;;;43269:144;;;;;;1553:47844;;;;;43269:144;;;;;;;1553:47844;43269:144;;;42243:1705;1553:47844;;;;;43381:19;1553:47844;-1:-1:-1;;;43503:185:168;;-1:-1:-1;;;;;1553:47844:168;;;43269:144;43503:185;;1553:47844;;;;;;;;42755:21;43648:26;;;1553:47844;43269:144;1553:47844;;;;43503:185;1553:47844;-1:-1:-1;43503:185:168;;;;;;;;1553:47844;43503:185;;;42243:1705;43789:19;;;;;:::i;:::-;43810:21;;;;:::i;:::-;1553:47844;43381:19;1553:47844;;;;;43740:92;;43381:19;43269:144;43740:92;;1553:47844;;;;;;;;;;;;;;;;;;;;42755:21;1553:47844;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;43282:32;1553:47844;;;;;;;42731:21;43269:144;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;42755:21;1553:47844;;;;;;;;;;;43503:185;1553:47844;;;;43381:19;1553:47844;;;;;;;;:::i;:::-;;;;;;;;;;;43740:92;;;;;;;;;1553:47844;43740:92;;;1553:47844;43919:21;;;;:::i;:::-;43381:19;1553:47844;18032:70:171;42755:21:168;18032:70:171;;1553:47844:168;;;43381:19;1553:47844;;;2307:3;1553:47844;;;;;;42731:21;1553:47844;;;18032:70:171;;;;;;;:::i;:::-;1553:47844:168;18022:81:171;;42243:1705:168;:::o;43740:92::-;;;;42755:21;43740:92;;42755:21;43740:92;;;;;;1553:47844;43740:92;;;:::i;:::-;;;1553:47844;;;;;;43919:21;43740:92;;;;;-1:-1:-1;43740:92:168;;1553:47844;;;;;;;43381:19;1553:47844;42408:1;1553:47844;;;;;;;;;:::i;:::-;;;;42755:21;1553:47844;;;42755:21;1553:47844;;;;;;;;;;;;;;;;43503:185;;;;;42755:21;43503:185;;42755:21;43503:185;;;;;;1553:47844;43503:185;;;:::i;:::-;;;1553:47844;;;;;;;43789:19;43503:185;;;;;-1:-1:-1;43503:185:168;;1553:47844;;;;;;43269:144;1553:47844;;43269:144;;;;42755:21;43269:144;42755:21;43269:144;;;;;;;:::i;:::-;;;;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;:::o;44015:1657::-;;44148:27;;;44186:1;44148:27;;;;:::i;:::-;:39;;;1553:47844;;44235:27;;;;:::i;:::-;:39;;;44231:182;;44472:27;;;:::i;:::-;1553:47844;;;;;;;;;;;;;;;;;;44521:22;;;;;;;;:::i;:::-;:33;;;1553:47844;;;44688:29;;;1553:47844;;;;44670:15;:47;:15;;:47;:::i;:::-;44669:72;44721:16;;;1553:47844;44669:72;;;:::i;:::-;44760:20;;;;1553:47844;2689:66;44186:1;2689:66;;;;;;;44760:43;;1553:47844;;44894:43;;44862:75;44894:43;;:::i;:::-;44862:75;;:::i;:::-;44989:25;44974:40;44989:25;;;1553:47844;44974:40;;:::i;:::-;44670:15;44955:59;1553:47844;;45133:34;;;:::i;:::-;44670:15;;1553:47844;45185:28;;1553:47844;45185:46;1553:47844;;;45325:217;45425:45;;;;;2465:3;;45425:45;;;;:::i;:::-;45484:22;;;;;;:::i;:::-;1553:47844;;;2465:3;1553:47844;2465:3;;:::i;:::-;1553:47844;;2465:3;;:::i;:::-;1553:47844;;2465:3;;:::i;:::-;45325:217;;:::i;:::-;45558:47;1553:47844;45425:45;1553:47844;;;;45558:47;1553:47844;;;;;;;45425:45;1553:47844;;;;;:::i;:::-;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;45425:45;1553:47844;;;;44521:22;1553:47844;;;18426:30:171;2203:1;1553:47844:168;2203:1:171;;18476:32;;2203:1;1553:47844:168;45425:45;1553:47844;18392:206:171;;;1553:47844:168;18392:206:171;;1553:47844:168;;;45425:45;1553:47844;;;44521:22;1553:47844;;;;;;;;;;;;;;;;-1:-1:-1;;;1553:47844:168;;18392:206:171;;;;;;1553:47844:168;18392:206:171;;;:::i;1553:47844:168:-;;;-1:-1:-1;;;;;1553:47844:168;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;44186:1;1553:47844;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24038:3813:171;;;;;;1553:47844:168;32036:29:171;;;1553:47844:168;;;;32068:22:171;24407:15;32068:22;;:::i;:::-;32036:77;32068:45;32093:16;;;1553:47844:168;32068:45:171;;;:::i;:::-;32036:77;;:::i;:::-;24437:15;;;;;;:82;;24038:3813;24433:676;;;24543:35;;;1553:47844:168;;24628:25:171;;;;:::i;:::-;:39;1553:47844:168;;25203:24:171;24433:676;;25203:24;;:::i;:::-;3226:200:80;-1:-1:-1;;;1553:47844:168;3226:200:80;25268:4:171;3226:200:80;;32036:29:171;3226:200:80;32093:16:171;3226:200:80;;1553:47844:168;3226:200:80;1553:47844:168;32036:29:171;1553:47844:168;;;;;25331:37:171;;;25392:23;;32036:19;25392:23;;1553:47844:168;;;;;;;2465:3;1553:47844;;:::i;:::-;2465:3;;;:::i;:::-;1553:47844;3226:200:80;1553:47844:168;;25523:23:171;1553:47844:168;;25713:240:171;1553:47844:168;26234:272:171;25713:240;;;3226:200:80;25713:240:171;;;;;;;1553:47844:168;32036:19:171;1553:47844:168;;26323:32:171;;1553:47844:168;26234:272:171;;:::i;1553:47844:168:-;;;;;;;;;;;;;;;;;;25327:2495:171;1553:47844:168;;;32036:19:171;26527:37;26523:1299;;25327:2495;;;;;1553:47844:168;24038:3813:171;:::o;26523:1299::-;26600:199;26637:15;26677:25;26637:15;;;;;1553:47844:168;26677:25:171;;1553:47844:168;;-1:-1:-1;;;;;1553:47844:168;;;;;26600:199:171;;:::i;:::-;26814:27;1553:47844:168;26861:13:171;27057:14;1553:47844:168;27057:14:171;;26856:929;26900:3;26876:22;;;;;;3927:8:77;3871:27;2465:3:168;1553:47844;;;;;;;;:::i;2465:3::-;3871:27:77;;:::i;3927:8::-;-1:-1:-1;;;;;1553:47844:168;;;;;;;;;;;;;;;;27053:718:171;;26900:3;;32036:19;26900:3;26861:13;1553:47844:168;26861:13:171;;27053:718;-1:-1:-1;;;;;2780:163:73;1553:47844:168;2780:163:73;;;2132:66:168;1553:47844;2780:163:73;;;;3327:69:76;;27416:50:171;;;27494:8;32036:19;27494:8;;;27412:223;3556:68:76;32036:19:171;27661:17;3556:68:76;;;27661:17:171;:::i;:::-;:30;;;;27657:96;;27053:718;;;27657:96;27719:11;;;;;;;32036:19;27719:11;:::o;26876:22::-;;;;;;;;1553:47844:168;27799:12:171;:::o;1553:47844:168:-;;;;;;;;;;;;;;;;;;24433:676:171;24407:15;;;;;;24902:21;;1553:47844:168;;25203:24:171;24960:69;;;24433:676;;;;24960:69;24999:15;;24960:69;;;1553:47844:168;;;;;;;;;24437:82:171;24487:32;24474:45;24487:32;;;1553:47844:168;24474:45:171;;:::i;:::-;24407:15;24456:63;24437:82;;30885:456;-1:-1:-1;;;;;30885:456:171;;1553:47844:168;;;;31194:24:171;;;;:::i;:::-;1553:47844:168;;;;;;31306:5:171;1553:47844:168;;31319:1:171;1553:47844:168;30885:456:171;:::o;4016:191:40:-;4129:17;;:::i;:::-;4148:20;;:::i;:::-;1553:47844:168;;4107:92:40;;;;1553:47844:168;1959:95:40;1553:47844:168;;;1959:95:40;;1553:47844:168;1959:95:40;;;1553:47844:168;4170:13:40;1959:95;;;1553:47844:168;4193:4:40;1959:95;;;1553:47844:168;1959:95:40;4107:92;;;;;;:::i;28801:312:171:-;;28924:37;28801:312;28924:37;;:::i;:::-;;;;28984;;28977:44;:::o;28920:187::-;29059:37;;29052:44;:::o;7082:141:30:-;1553:47844:168;-1:-1:-1;;;;;;;;;;;1553:47844:168;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;1553:47844:168;;-1:-1:-1;;;;;1553:47844:168;;;;;;;:::o;:::-;;;;;;;;;;:::o;863:809:22:-;1052:614;;;863:809;1052:614;;-1:-1:-1;;1052:614:22;;;-1:-1:-1;;;;;1052:614:22;;;;;;;;;;863:809::o;31526:179:171:-;31678:16;31640:34;31639:59;31526:179;1553:47844:168;31645:29:171;;;1553:47844:168;;;;31640:34:171;;:::i;:::-;31678:16;;1553:47844:168;31639:59:171;;:::i;28342:322::-;28462:50;28496:15;28462:50;;:::i;:::-;28496:15;;;28535:37;;28528:44;:::o;28458:200::-;28610:37;;28603:44;:::o;7001:1787:20:-;;;;;;7608:63;;;;:::i;:::-;7607:64;7603:107;;7961:15;;7957:58;;-1:-1:-1;;8029:25:20;;;8025:68;;2933:1:27;2929:5;4026:14:20;2689:66:168;4010:31:20;;;:::i;:::-;1553:47844:168;425:3:20;1553:47844:168;;;4003:1:27;2933;2929:5;;1553:47844:168;425:3:20;4492:84:22;;;4093:83;2689:66:168;4093:83:22;;;4003:1:27;1553:47844:168;;2689:66;4492:84:22;;;2689:66:168;4093:83:22;;;;;2689:66:168;4093:83:22;;;1581:66:20;2689::168;4093:83:22;;;-1:-1:-1;;;2689:66:168;4093:83:22;;;531:131:25;;2689:66:168;4093:83:22;;;;;;4003:1:27;2689:66:168;4492:84:22;;2933:1:27;4492:84:22;;2689:66:168;531:131:25;;5696:10:20;;;4093:83:22;;4492:84;2689:66:168;1145::27;;531:131:25;;6084:3:20;1553:47844:168;-1:-1:-1;;;;;1553:47844:168;;;6084:3:20;1553:47844:168;;6062:44:20;1145:66:27;;;1860::20;1553:47844:168;1860:66:20;;1553:47844:168;6037:2:20;1553:47844:168;6140:32:20;6133:57;8567:14;;8563:57;;1145:66:27;3386:2;6084:3:20;1145:66:27;1553:47844:168;1145:66:27;648:2:20;1145:66:27;;;6396:43:26;;1145:66:27;;1553:47844:168;4093:83:22;;1553:47844:168;4093:83:22;;;;;6037:2:20;4093:83:22;;;1145:66:27;;6954:42:26;;-1:-1:-1;;1553:47844:168;1530:4:24;4093:83:22;;;;;;2933:1:27;1640:140:24;;;1553:47844:168;1640:140:24;3543:209:25;1553:47844:168;3543:209:25;648:2:20;3543:209:25;1553:47844:168;;;;;6037:2:20;1553:47844:168;3543:209:25;4476:141:27;9285:100:26;7001:1787:20;:::o;8025:68::-;8070:12;;;;;;1553:47844:168;8070:12:20;:::o;32460:467:171:-;1553:47844:168;;:::i;:::-;-1:-1:-1;32764:51:171;;;1553:47844:168;32882:27:171;;;1553:47844:168;;;;;;;;32835:15:171;;-1:-1:-1;;;;;1553:47844:168;;;;:::i;:::-;;;;:::i;:::-;;;32623:297:171;;;2307:3:168;32835:15:171;1553:47844:168;:::i;:::-;;32623:297:171;;1553:47844:168;32623:297:171;;;1553:47844:168;32460:467:171;:::o;5203:1551:77:-;;;6283:66;6270:79;;6266:164;;1553:47844:168;;;;;;-1:-1:-1;1553:47844:168;;;;;;;;;;;;;;;;;;;6541:24:77;;;;;;;;;-1:-1:-1;6541:24:77;-1:-1:-1;;;;;1553:47844:168;;6579:20:77;6575:113;;6698:49;-1:-1:-1;6698:49:77;-1:-1:-1;5203:1551:77;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:77;6541:24;6615:62;-1:-1:-1;6615:62:77;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;1553:47844:168;;;;;;7366:29:77;;;7411:7;;:::o;7362:444::-;1553:47844:168;7462:38:77;;1553:47844:168;;7523:23:77;;;7375:20;7523:23;1553:47844:168;7375:20:77;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;1553:47844:168;;;7375:20:77;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;1553:47844:168;;;7375:20:77;7763:32;6928:687:40;1553:47844:168;;:::i;:::-;;;;7100:22:40;;;;1553:47844:168;;7145:22:40;7138:29;:::o;7096:513::-;-1:-1:-1;;;;;;;;;;;;;1553:47844:168;7473:15:40;;;;7508:17;:::o;7469:130::-;7564:20;7571:13;7564:20;:::o;7836:723::-;1553:47844:168;;:::i;:::-;;;;8017:25:40;;;;1553:47844:168;;8065:25:40;8058:32;:::o;8013:540::-;-1:-1:-1;;;;;;;;;;;;;1553:47844:168;8411:18:40;;;;8449:20;:::o;29520:863:171:-;;29766:54;29688;;;1553:47844:168;29766:54:171;;1553:47844:168;29894:10:171;;;1553:47844:168;;29965:9:171;;;;29997;;;;;30029;;;30130:14;;;;;29520:863;1553:47844:168;;;30346:30:171;;;30339:37;;29520:863;:::o;30346:30::-;30361:14;;29520:863;-1:-1:-1;29520:863:171:o;1553:47844:168:-;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;30130:14:171;;;;;1553:47844:168;;;;-1:-1:-1;1553:47844:168;;-1:-1:-1;1553:47844:168;2129:778:77;1553:47844:168;;;2129:778:77;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:77;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;1767:250:27:-;-1:-1:-1;;912:66:27;701;;912;;;;;1984:15;1974:29;;1967:43;912:66;-1:-1:-1;;912:66:27;;1948:15;:62;1767:250;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;1553:47844:168;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;1553:47844:168;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;1553:47844:168;;;;4933:24:66;1553:47844:168;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":11056,"length":32},{"start":11203,"length":32}]}},"methodIdentifiers":{"COMMIT_BATCH_AFTER_COMMIT_CODES()":"4429e24b","COMMIT_BATCH_BEFORE_COMMIT_CODES()":"ad2b3d9a","DOMAIN_SEPARATOR()":"3644e515","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","areValidators(address[])":"8f381dbe","codeState(bytes32)":"c13911e8","codesStates(bytes32[])":"82bdeaad","commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])":"b24fcac0","computeSettings()":"84d22a4f","createProgram(bytes32,bytes32,address)":"3683c4d2","createProgramWithAbiInterface(bytes32,bytes32,address,address)":"0c18d277","createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)":"ee32004f","createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)":"0d91bf2a","eip712Domain()":"84b0196e","genesisBlockHash()":"28e24b3d","genesisTimestamp()":"cacf66ab","initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])":"53f7fd48","isValidator(address)":"facd743b","latestCommittedBatchHash()":"71a8cf2d","latestCommittedBatchTimestamp()":"d456fd51","lookupGenesisHash()":"8b1edf1e","middleware()":"f4f20ac0","mirrorImpl()":"e6fabc09","nonces(address)":"7ecebe00","owner()":"8da5cb5b","pause()":"8456cb59","paused()":"5c975abb","programCodeId(address)":"9067088e","programsCodeIds(address[])":"baaf0201","programsCount()":"96a2ddfa","proxiableUUID()":"52d1902d","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)":"8c4ace6a","requestCodeValidationBaseFee()":"188509e9","requestCodeValidationExtraFee()":"f1ef31ec","requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)":"f0fd702a","setMirror(address)":"3d43b418","setRequestCodeValidationBaseFee(uint256)":"11bec80d","setRequestCodeValidationExtraFee(uint256)":"0b9737ce","signingThresholdFraction()":"e3a6684f","storageView()":"c2eb812f","timelines()":"9eb939a8","transferOwnership(address)":"f2fde38b","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","validatedCodesCount()":"007a32e7","validators()":"ca1e7819","validatorsAggregatedPublicKey()":"3bd109fa","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","validatorsVerifiableSecretSharingCommitment()":"a5d53a44","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApproveERC20Failed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchTimestampNotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchTimestampTooEarly\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlobNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeAlreadyOnValidationOrValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeNotValidated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CodeValidationNotRequested\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CommitmentEraNotNext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ElectionNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyValidatorsList\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EraDurationTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErasTimestampMustNotBeEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisHashAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisHashNotFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"providedBlobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedBlobHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidBlobHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"providedLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedLength\",\"type\":\"uint256\"}],\"name\":\"InvalidBlobHashesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidElectionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFROSTAggregatedPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureCount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFrostSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPreviousCommittedBatchHash\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PredecessorBlockNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentEraNotPrevious\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentPredatesGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RewardsCommitmentTimestampNotInPast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RouterGenesisHashNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureVerificationFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampInFuture\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampOlderThanPreviousEra\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyChainCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyRewardsCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyValidatorsCommitments\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnknownProgram\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationBeforeGenesis\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidationDelayTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsAlreadyScheduled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidatorsNotFoundForTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValueTransfer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"head\",\"type\":\"bytes32\"}],\"name\":\"AnnouncesCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"BatchCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"name\":\"ComputationSettingsChanged\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"topic0\",\"type\":\"uint256\"}],\"name\":\"DebugEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"name\":\"ValidatorsCommittedForEra\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMIT_BATCH_AFTER_COMMIT_CODES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMMIT_BATCH_BEFORE_COMMIT_CODES\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"areValidators\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"_codesIds\",\"type\":\"bytes32[]\"}],\"name\":\"codesStates\",\"outputs\":[{\"internalType\":\"enum Gear.CodeState[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"blockTimestamp\",\"type\":\"uint48\"},{\"internalType\":\"bytes32\",\"name\":\"previousCommittedBatchHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"expiry\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"exited\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"inheritor\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"valueToReceiveNegativeSign\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct Gear.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"call\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.Message[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"head\",\"type\":\"bytes32\"}],\"internalType\":\"struct Gear.ChainCommitment[]\",\"name\":\"chainCommitment\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct Gear.CodeCommitment[]\",\"name\":\"codeCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct Gear.OperatorRewardsCommitment\",\"name\":\"operators\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.StakerRewards[]\",\"name\":\"distribution\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Gear.StakerRewardsCommitment\",\"name\":\"stakers\",\"type\":\"tuple\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.RewardsCommitment[]\",\"name\":\"rewardsCommitment\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"verifiableSecretSharingCommitment\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"validators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"eraIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsCommitment[]\",\"name\":\"validatorsCommitment\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Gear.BatchCommitment\",\"name\":\"_batch\",\"type\":\"tuple\"},{\"internalType\":\"enum Gear.SignatureType\",\"name\":\"_signatureType\",\"type\":\"uint8\"},{\"internalType\":\"bytes[]\",\"name\":\"_signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeSettings\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"}],\"name\":\"createProgramWithAbiInterface\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_abiInterface\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithAbiInterfaceAndExecutableBalance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_overrideInitializer\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_initialExecutableBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"createProgramWithExecutableBalance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_middleware\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_eraDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_electionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationDelay\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"_aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_verifiableSecretSharingCommitment\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"_validators\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_validator\",\"type\":\"address\"}],\"name\":\"isValidator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBatchHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestCommittedBatchTimestamp\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lookupGenesisHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"middleware\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorImpl\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_programId\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_programsIds\",\"type\":\"address[]\"}],\"name\":\"programsCodeIds\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCodeValidationBaseFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestCodeValidationExtraFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"_blobHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"_deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"_v1\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r1\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s1\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_v2\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_r2\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s2\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidationOnBehalf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newMirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newBaseFee\",\"type\":\"uint256\"}],\"name\":\"setRequestCodeValidationBaseFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExtraFee\",\"type\":\"uint256\"}],\"name\":\"setRequestCodeValidationExtraFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdFraction\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"thresholdNumerator\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"thresholdDenominator\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageView\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"number\",\"type\":\"uint32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.GenesisBlockInfo\",\"name\":\"genesisBlock\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint48\",\"name\":\"timestamp\",\"type\":\"uint48\"}],\"internalType\":\"struct Gear.CommittedBatchInfo\",\"name\":\"latestCommittedBatch\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"middleware\",\"type\":\"address\"}],\"internalType\":\"struct Gear.AddressBook\",\"name\":\"implAddresses\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"thresholdNumerator\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"thresholdDenominator\",\"type\":\"uint128\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"verifiableSecretSharingCommitmentPointer\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"list\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"useFromTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsView\",\"name\":\"validators0\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"aggregatedPublicKey\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"verifiableSecretSharingCommitmentPointer\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"list\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"useFromTimestamp\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.ValidatorsView\",\"name\":\"validators1\",\"type\":\"tuple\"}],\"internalType\":\"struct Gear.ValidationSettingsView\",\"name\":\"validationSettings\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"threshold\",\"type\":\"uint64\"},{\"internalType\":\"uint128\",\"name\":\"wvaraPerSecond\",\"type\":\"uint128\"}],\"internalType\":\"struct Gear.ComputationSettings\",\"name\":\"computeSettings\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"era\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"election\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validationDelay\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.Timelines\",\"name\":\"timelines\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"programsCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatedCodesCount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxValidators\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"requestCodeValidationBaseFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestCodeValidationExtraFee\",\"type\":\"uint256\"}],\"internalType\":\"struct IRouter.StorageView\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timelines\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"era\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"election\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validationDelay\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.Timelines\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsAggregatedPublicKey\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"}],\"internalType\":\"struct Gear.AggregatedPublicKey\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsVerifiableSecretSharingCommitment\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"BlobNotFound()\":[{\"details\":\"Thrown when the tx is not in EIP-4844/EIP-7594 format, so it doesn't have blobhashes.\"}],\"CodeAlreadyOnValidationOrValidated()\":[{\"details\":\"Thrown when the code is already on validation or validated.\"}],\"CodeNotValidated()\":[{\"details\":\"Thrown when the code is not validated and someone tries to create program with it.\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"EraDurationTooShort()\":[{\"details\":\"Thrown when the era duration is too short (era duration must be greater than election duration).\"}],\"ErasTimestampMustNotBeEqual()\":[{\"details\":\"Thrown when the timestamp of an era is equal to the timestamp of the previous era. Should never happen, because the implementation.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"ExpiredSignature(uint256)\":[{\"details\":\"Thrown when deadline for code validation request has expired.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"GenesisHashAlreadySet()\":[{\"details\":\"Thrown when the genesis hash is already set by someone else.\"}],\"GenesisHashNotFound()\":[{\"details\":\"Thrown when the genesis hash is not found from previous blocks. There is 256 blocks lookback for `blockhash` opcode, so if the genesis block is too old, it may not be found.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidBlobHash(uint256,bytes32,bytes32)\":[{\"details\":\"Thrown when the blobhash for code validation request is invalid.\"}],\"InvalidBlobHashesLength(uint256,uint256)\":[{\"details\":\"Thrown when the provided blob hashes length doesn't match the actual blob hashes length in transaction.\"}],\"InvalidElectionDuration()\":[{\"details\":\"Thrown when an invalid election duration is provided (must be greater than 0).\"}],\"InvalidFrostSignatureCount()\":[{\"details\":\"Thrown when the number of FROST signatures is invalid.\"}],\"InvalidFrostSignatureLength()\":[{\"details\":\"Thrown when the length of a FROST signature is invalid, it must be exactly 96 bytes.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidSigner(address,address)\":[{\"details\":\"Thrown when the signer of the code validation request is not the requester.\"}],\"InvalidTimestamp()\":[{\"details\":\"Thrown when an invalid block.timestamp is provided (must be greater than 0).\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"RouterGenesisHashNotInitialized()\":[{\"details\":\"Thrown when the router's genesis hash is not initialized (no one called `lookupGenesisHash` yet).\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"TimestampInFuture()\":[{\"details\":\"Thrown when the timestamp is in the future.\"}],\"TimestampOlderThanPreviousEra()\":[{\"details\":\"Thrown when the timestamp is older than the previous era.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"ValidationBeforeGenesis()\":[{\"details\":\"Thrown when signature validation is attempted before the genesis block.\"}],\"ValidationDelayTooBig()\":[{\"details\":\"Thrown when the validation delay is too big.\"}],\"ValidatorsNotFoundForTimestamp()\":[{\"details\":\"Thrown when no validators are found for a given timestamp. Should never happen, because the implementation.\"}]},\"events\":{\"AnnouncesCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that the all transitions until head were committed.\",\"params\":{\"head\":\"The hash of committed announces chain head.\"}},\"BatchCommitted(bytes32)\":{\"details\":\"This is an *informational* event, signaling that all commitments in batch has been applied.\",\"params\":{\"hash\":\"Batch hash (`keccak256` algorithm), see `Gear.batchCommitmentHash(...)`.\"}},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"This is an *informational* event, signaling the results of code validation.\",\"params\":{\"codeId\":\"The ID of the code that was validated. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"valid\":\"The result of the validation: indicates whether the code ID can be used for program creation.\"}},\"CodeValidationRequested(bytes32)\":{\"details\":\"This is a *requesting* event, signaling that validators need to download and validate the code from the transaction blob.\",\"params\":{\"codeId\":\"The expected code ID of the applied WASM blob, one the client side it's calculated as `gprimitives::CodeId::generate(wasm_code)`.\"}},\"ComputationSettingsChanged(uint64,uint128)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to change the computation settings. Users and program authors may want to adjust their practices, while validators need to apply the changes internally starting from the next block.\",\"params\":{\"threshold\":\"The amount of Gear gas initially allocated for free to allow the program to decide if it wants to process the incoming message.\",\"wvaraPerSecond\":\"The amount of WVara to be charged from the program's execution balance per second of computation.\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling the creation of a new program and its Ethereum mirror. Validators need to initialize it with a zeroed hash state internally.\",\"params\":{\"actorId\":\"ID of the actor that was created. It is accessible inside the co-processor and on Ethereum by this identifier.\",\"codeId\":\"The code ID of the WASM implementation of the created program. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\"}},\"StorageSlotChanged(bytes32)\":{\"details\":\"This is both an *informational* and *requesting* event, signaling that an authority decided to wipe the router state, rendering all previously existing codes and programs ineligible. Validators need to wipe their databases immediately.\",\"params\":{\"slot\":\"The new storage slot.\"}},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"},\"ValidatorsCommittedForEra(uint256)\":{\"details\":\"This is an *informational* and *request* event, signaling that validators has been set for the next era.\",\"params\":{\"eraIndex\":\"The index of the era for which the validators have been committed.\"}}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.\",\"returns\":{\"_0\":\"domainSeparator The domain separator.\"}},\"areValidators(address[])\":{\"details\":\"Checks if the given addresses are all validators.\",\"returns\":{\"_0\":\"areValidators `true` if all addresses are validators, `false` otherwise.\"}},\"codeState(bytes32)\":{\"details\":\"Returns the state of code.\",\"returns\":{\"_0\":\"codeState The state of the code.\"}},\"codesStates(bytes32[])\":{\"details\":\"Returns the states of multiple codes.\",\"returns\":{\"_0\":\"codesStates The states of the codes.\"}},\"commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])\":{\"details\":\"Commits new batch of changes to `Router` state. `CodeGotValidated` event is emitted for each code in commitment. `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.\",\"params\":{\"_batch\":\"The batch commitment data.\",\"_signatureType\":\"The type of signature to validate.\",\"_signatures\":\"The signatures for the batch commitment.\"}},\"computeSettings()\":{\"details\":\"Returns the computation settings.\",\"returns\":{\"_0\":\"computeSettings The computation settings.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createProgram(bytes32,bytes32,address)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, and initializer. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \\\"Solidity ABI Interface\\\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_salt\":\"The salt for the program creation.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithAbiInterface(bytes32,bytes32,address,address)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \\\"Solidity ABI Interface\\\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_abiInterface\":\"The ABI interface address for the program.\",\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_salt\":\"The salt for the program creation.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \\\"Solidity ABI Interface\\\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_abiInterface\":\"The ABI interface address for the program.\",\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_initialExecutableBalance\":\"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_salt\":\"The salt for the program creation.\",\"_v\":\"ECDSA signature parameter.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \\\"Solidity ABI Interface\\\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.\",\"params\":{\"_codeId\":\"The code ID of the program to create. Must be in `CodeState.Validated` state.\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_initialExecutableBalance\":\"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\",\"_overrideInitializer\":\"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_salt\":\"The salt for the program creation.\",\"_v\":\"ECDSA signature parameter.\"},\"returns\":{\"_0\":\"mirror The address of the created program (`Mirror`).\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"genesisBlockHash()\":{\"details\":\"Returns the hash of the genesis block.\",\"returns\":{\"_0\":\"genesisBlockHash The hash of the genesis block.\"}},\"genesisTimestamp()\":{\"details\":\"Returns the timestamp of the genesis block.\",\"returns\":{\"_0\":\"genesisTimestamp The timestamp of the genesis block.\"}},\"initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])\":{\"details\":\"Initializes the `Router` with the given parameters.\",\"params\":{\"_aggregatedPublicKey\":\"The aggregated public key of the initial validators. Will be used in future.\",\"_electionDuration\":\"The duration of an election in seconds.\",\"_eraDuration\":\"The duration of an era in seconds.\",\"_middleware\":\"The address of the middleware contract.\",\"_mirror\":\"The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.\",\"_owner\":\"The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.\",\"_validationDelay\":\"The delay before validators can start validating in seconds.\",\"_validators\":\"The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, so the list of validators is used for signature verification.\",\"_verifiableSecretSharingCommitment\":\"The verifiable secret sharing commitment of the initial validators. Will be used in future.\",\"_wrappedVara\":\"The address of the `WrappedVara` (WVARA) ERC20 token contract.\"}},\"isValidator(address)\":{\"details\":\"Checks if the given address is a validator.\",\"returns\":{\"_0\":\"isValidator `true` if the address is a validator, `false` otherwise.\"}},\"latestCommittedBatchHash()\":{\"details\":\"Returns the hash of the latest committed batch.\",\"returns\":{\"_0\":\"latestCommittedBatchHash The hash of the latest committed batch.\"}},\"latestCommittedBatchTimestamp()\":{\"details\":\"Returns the timestamp of the latest committed batch.\",\"returns\":{\"_0\":\"latestCommittedBatchTimestamp The timestamp of the latest committed batch.\"}},\"lookupGenesisHash()\":{\"details\":\"Looks up the genesis hash from previous blocks.\"},\"middleware()\":{\"details\":\"Returns the address of the middleware implementation.\",\"returns\":{\"_0\":\"middleware The address of the middleware implementation.\"}},\"mirrorImpl()\":{\"details\":\"Returns the address of the mirror implementation.\",\"returns\":{\"_0\":\"mirrorImpl The address of the mirror implementation.\"}},\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"Pauses the contract.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\",\"returns\":{\"_0\":\"isPaused `true` if the contract is paused, `false` otherwise.\"}},\"programCodeId(address)\":{\"details\":\"Returns the code ID of the given program.\",\"returns\":{\"_0\":\"codeId The code ID of the program.\"}},\"programsCodeIds(address[])\":{\"details\":\"Returns the code IDs of the given programs.\",\"returns\":{\"_0\":\"codesIds The code IDs of the programs.\"}},\"programsCount()\":{\"details\":\"Returns the count of programs.\",\"returns\":{\"_0\":\"programsCount The count of programs.\"}},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\",\"details\":\"Reinitializes the `Router` to set up new storage layout. This function is intended to be called during an upgrade/wipe and can contain any logic. NOTE: Don't forget to bump `reinitializer(version)` in modifier!\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Requests code validation for the given code ID. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` in the WVARA ERC20 token.\",\"params\":{\"_codeId\":\"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r\":\"ECDSA signature parameter.\",\"_s\":\"ECDSA signature parameter.\",\"_v\":\"ECDSA signature parameter.\"}},\"requestCodeValidationBaseFee()\":{\"details\":\"Returns the base fee for requesting code validation in WVARA ERC20 token.\",\"returns\":{\"_0\":\"requestCodeValidationBaseFee The base fee for requesting code validation.\"}},\"requestCodeValidationExtraFee()\":{\"details\":\"Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\",\"returns\":{\"_0\":\"requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else.\"}},\"requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)\":{\"details\":\"Requests code validation for the given code ID on behalf of someone else. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` in the WVARA ERC20 token.\",\"params\":{\"_blobHashes\":\"The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. This is needed to verify that the transaction has expected blobs attached.\",\"_codeId\":\"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\",\"_deadline\":\"Deadline for the transaction to be executed.\",\"_r1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_r2\":\"ECDSA signature parameter (for permit).\",\"_requester\":\"The address of the requester on behalf of whom the code validation is requested.\",\"_s1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_s2\":\"ECDSA signature parameter (for permit).\",\"_v1\":\"ECDSA signature parameter (for requestCodeValidation).\",\"_v2\":\"ECDSA signature parameter (for permit).\"}},\"setMirror(address)\":{\"details\":\"Sets the `Mirror` implementation address.\",\"params\":{\"newMirror\":\"The new mirror implementation address.\"}},\"setRequestCodeValidationBaseFee(uint256)\":{\"details\":\"Sets the base fee for requesting code validation in WVARA ERC20 token.\",\"params\":{\"newBaseFee\":\"The new base fee for requesting code validation.\"}},\"setRequestCodeValidationExtraFee(uint256)\":{\"details\":\"Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\",\"params\":{\"newExtraFee\":\"The new extra fee for requesting code validation on behalf of someone else.\"}},\"signingThresholdFraction()\":{\"details\":\"Returns the signing threshold fraction.\",\"returns\":{\"thresholdDenominator\":\"The denominator of the signing threshold fraction.\",\"thresholdNumerator\":\"The numerator of the signing threshold fraction.\"}},\"storageView()\":{\"details\":\"Returns the storage view of the contract storage.\",\"returns\":{\"_0\":\"storageView The storage view of the contract storage.\"}},\"timelines()\":{\"details\":\"Returns the timelines.\",\"returns\":{\"_0\":\"timelines The timelines.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"Unpauses the contract.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"validatedCodesCount()\":{\"details\":\"Returns the count of validated codes.\",\"returns\":{\"_0\":\"validatedCodesCount The count of validated codes.\"}},\"validators()\":{\"details\":\"Returns the list of current validators.\",\"returns\":{\"_0\":\"validators The list of current validators.\"}},\"validatorsAggregatedPublicKey()\":{\"details\":\"Returns the aggregated public key of the current validators.\",\"returns\":{\"_0\":\"validatorsAggregatedPublicKey The aggregated public key of the current validators.\"}},\"validatorsCount()\":{\"details\":\"Returns the count of current validators.\",\"returns\":{\"_0\":\"validatorsCount The count of current validators.\"}},\"validatorsThreshold()\":{\"details\":\"Returns the threshold number of validators required for a valid signature.\",\"returns\":{\"_0\":\"threshold The threshold number of validators required for a valid signature.\"}},\"validatorsVerifiableSecretSharingCommitment()\":{\"details\":\"Returns the verifiable secret sharing commitment of the current validators. This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.\",\"returns\":{\"_0\":\"validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators.\"}},\"wrappedVara()\":{\"details\":\"Returns the address of the wrapped Vara implementation.\",\"returns\":{\"_0\":\"wrappedVara The address of the wrapped Vara implementation.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"AnnouncesCommitted(bytes32)\":{\"notice\":\"Emitted when all necessary state transitions have been applied and states have changed.\"},\"BatchCommitted(bytes32)\":{\"notice\":\"Emitted when batch of commitments has been applied.\"},\"CodeGotValidated(bytes32,bool)\":{\"notice\":\"Emitted when a code, previously requested for validation, receives validation results, so its `Gear.CodeState` changed.\"},\"CodeValidationRequested(bytes32)\":{\"notice\":\"Emitted when a new code validation request is submitted.\"},\"ComputationSettingsChanged(uint64,uint128)\":{\"notice\":\"Emitted when the computation settings have been changed.\"},\"ProgramCreated(address,bytes32)\":{\"notice\":\"Emitted when a new program within the co-processor is created and is now available on-chain.\"},\"StorageSlotChanged(bytes32)\":{\"notice\":\"Emitted when the router's storage slot has been changed.\"},\"ValidatorsCommittedForEra(uint256)\":{\"notice\":\"Emitted when validators for the next era has been set.\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/instrumented/RouterWithInstrumentation.sol\":\"RouterWithInstrumentation\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/frost-secp256k1-evm/src/FROST.sol\":{\"keccak256\":\"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957\",\"dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ\"]},\"lib/frost-secp256k1-evm/src/utils/Memory.sol\":{\"keccak256\":\"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd\",\"dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b\",\"dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol\":{\"keccak256\":\"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5\",\"dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol\":{\"keccak256\":\"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232\",\"dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM\"]},\"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol\":{\"keccak256\":\"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6\",\"dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol\":{\"keccak256\":\"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c\",\"dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13\",\"dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"lib/openzeppelin-contracts/contracts/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol\":{\"keccak256\":\"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503\",\"dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"lib/openzeppelin-contracts/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"src/IMiddleware.sol\":{\"keccak256\":\"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520\",\"dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ\"]},\"src/IMirror.sol\":{\"keccak256\":\"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570\",\"dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53\",\"dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693\",\"dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ\"]},\"src/instrumented/RouterWithInstrumentation.sol\":{\"keccak256\":\"0x1f4955ad85733084d5c9056dd0e24ba0427c527cb524dcbcfaf3ba0aacdc4b13\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://6c8b7452b7c991c638a2d03caabb50f75310572f669f7a3ee8cd414569a054dd\",\"dweb:/ipfs/QmajdFjiBZRRicc2Ssz2arhVNvLscnL8RZfWyH46d1gtbz\"]},\"src/libraries/Clones.sol\":{\"keccak256\":\"0xedec50e3e6f10f016b8f8ea91bc63f69dffe8287e755778a8ef980f51206d1d7\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://789789391f384e4b4925e49818ddac6f19b70f01d90befdeac4e2c69e2926bc3\",\"dweb:/ipfs/QmUgyWxAHKmza1mSQnkxFroBxsnzchUntEjCqsrJfK9SrT\"]},\"src/libraries/ClonesSmall.sol\":{\"keccak256\":\"0x453f0262cf06f368b969ea3dbca328ee7fae1c8b73fdbc35ffe8252142d62b70\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://d8237577660ba34d8105a6ec84a699059357471364bd4efdba10195ff93f7d4b\",\"dweb:/ipfs/QmRAky7bp7z3kgd56YwSdU2pRskoPryhQwaR5sCceSC9Lv\"]},\"src/libraries/Gear.sol\":{\"keccak256\":\"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5\",\"dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX\"]},\"src/libraries/SSTORE2.sol\":{\"keccak256\":\"0xd280ac6c1bf76b0996b061139591884ea767f2fa97c103a4d6abb38c449c2cdd\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://59271a683dc86fde6556b000155742076227a490581f5b38d80bdf7bfe593389\",\"dweb:/ipfs/QmWGXRjg1sDa89XHpTXMT45iJazwc3S5qA8Aio4hbqhhmm\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ApproveERC20Failed"},{"inputs":[],"type":"error","name":"BatchTimestampNotInPast"},{"inputs":[],"type":"error","name":"BatchTimestampTooEarly"},{"inputs":[],"type":"error","name":"BlobNotFound"},{"inputs":[],"type":"error","name":"CodeAlreadyOnValidationOrValidated"},{"inputs":[],"type":"error","name":"CodeNotValidated"},{"inputs":[],"type":"error","name":"CodeValidationNotRequested"},{"inputs":[],"type":"error","name":"CommitmentEraNotNext"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"ElectionNotStarted"},{"inputs":[],"type":"error","name":"EmptyValidatorsList"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"EraDurationTooShort"},{"inputs":[],"type":"error","name":"ErasTimestampMustNotBeEqual"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ExpiredSignature"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisHashAlreadySet"},{"inputs":[],"type":"error","name":"GenesisHashNotFound"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes32","name":"providedBlobHash","type":"bytes32"},{"internalType":"bytes32","name":"expectedBlobHash","type":"bytes32"}],"type":"error","name":"InvalidBlobHash"},{"inputs":[{"internalType":"uint256","name":"providedLength","type":"uint256"},{"internalType":"uint256","name":"expectedLength","type":"uint256"}],"type":"error","name":"InvalidBlobHashesLength"},{"inputs":[],"type":"error","name":"InvalidElectionDuration"},{"inputs":[],"type":"error","name":"InvalidFROSTAggregatedPublicKey"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureCount"},{"inputs":[],"type":"error","name":"InvalidFrostSignatureLength"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidPreviousCommittedBatchHash"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"requester","type":"address"}],"type":"error","name":"InvalidSigner"},{"inputs":[],"type":"error","name":"InvalidTimestamp"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"PredecessorBlockNotFound"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"RewardsCommitmentEraNotPrevious"},{"inputs":[],"type":"error","name":"RewardsCommitmentPredatesGenesis"},{"inputs":[],"type":"error","name":"RewardsCommitmentTimestampNotInPast"},{"inputs":[],"type":"error","name":"RouterGenesisHashNotInitialized"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"type":"error","name":"SafeCastOverflowedUintDowncast"},{"inputs":[],"type":"error","name":"SignatureVerificationFailed"},{"inputs":[],"type":"error","name":"TimestampInFuture"},{"inputs":[],"type":"error","name":"TimestampOlderThanPreviousEra"},{"inputs":[],"type":"error","name":"TooManyChainCommitments"},{"inputs":[],"type":"error","name":"TooManyRewardsCommitments"},{"inputs":[],"type":"error","name":"TooManyValidatorsCommitments"},{"inputs":[],"type":"error","name":"TransferFromFailed"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnknownProgram"},{"inputs":[],"type":"error","name":"ValidationBeforeGenesis"},{"inputs":[],"type":"error","name":"ValidationDelayTooBig"},{"inputs":[],"type":"error","name":"ValidatorsAlreadyScheduled"},{"inputs":[],"type":"error","name":"ValidatorsNotFoundForTimestamp"},{"inputs":[],"type":"error","name":"ZeroValueTransfer"},{"inputs":[{"internalType":"bytes32","name":"head","type":"bytes32","indexed":false}],"type":"event","name":"AnnouncesCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32","indexed":false}],"type":"event","name":"BatchCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"threshold","type":"uint64","indexed":false},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128","indexed":false}],"type":"event","name":"ComputationSettingsChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"topic0","type":"uint256","indexed":true}],"type":"event","name":"DebugEvent","anonymous":true},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32","indexed":false}],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"eraIndex","type":"uint256","indexed":false}],"type":"event","name":"ValidatorsCommittedForEra","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMIT_BATCH_AFTER_COMMIT_CODES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"view","type":"function","name":"areValidators","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum Gear.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"bytes32[]","name":"_codesIds","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"codesStates","outputs":[{"internalType":"enum Gear.CodeState[]","name":"","type":"uint8[]"}]},{"inputs":[{"internalType":"struct Gear.BatchCommitment","name":"_batch","type":"tuple","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"uint48","name":"blockTimestamp","type":"uint48"},{"internalType":"bytes32","name":"previousCommittedBatchHash","type":"bytes32"},{"internalType":"uint8","name":"expiry","type":"uint8"},{"internalType":"struct Gear.ChainCommitment[]","name":"chainCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"bool","name":"exited","type":"bool"},{"internalType":"address","name":"inheritor","type":"address"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"bool","name":"valueToReceiveNegativeSign","type":"bool"},{"internalType":"struct Gear.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct Gear.Message[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct Gear.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]},{"internalType":"bool","name":"call","type":"bool"}]}]},{"internalType":"bytes32","name":"head","type":"bytes32"}]},{"internalType":"struct Gear.CodeCommitment[]","name":"codeCommitments","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"struct Gear.RewardsCommitment[]","name":"rewardsCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.OperatorRewardsCommitment","name":"operators","type":"tuple","components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"root","type":"bytes32"}]},{"internalType":"struct Gear.StakerRewardsCommitment","name":"stakers","type":"tuple","components":[{"internalType":"struct Gear.StakerRewards[]","name":"distribution","type":"tuple[]","components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.ValidatorsCommitment[]","name":"validatorsCommitment","type":"tuple[]","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bytes","name":"verifiableSecretSharingCommitment","type":"bytes"},{"internalType":"address[]","name":"validators","type":"address[]"},{"internalType":"uint256","name":"eraIndex","type":"uint256"}]}]},{"internalType":"enum Gear.SignatureType","name":"_signatureType","type":"uint8"},{"internalType":"bytes[]","name":"_signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"computeSettings","outputs":[{"internalType":"struct Gear.ComputationSettings","name":"","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithAbiInterface","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"address","name":"_abiInterface","type":"address"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithAbiInterfaceAndExecutableBalance","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_overrideInitializer","type":"address"},{"internalType":"uint128","name":"_initialExecutableBalance","type":"uint128"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"createProgramWithExecutableBalance","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address","name":"_middleware","type":"address"},{"internalType":"uint256","name":"_eraDuration","type":"uint256"},{"internalType":"uint256","name":"_electionDuration","type":"uint256"},{"internalType":"uint256","name":"_validationDelay","type":"uint256"},{"internalType":"struct Gear.AggregatedPublicKey","name":"_aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"bytes","name":"_verifiableSecretSharingCommitment","type":"bytes"},{"internalType":"address[]","name":"_validators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"}],"stateMutability":"view","type":"function","name":"isValidator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBatchHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"latestCommittedBatchTimestamp","outputs":[{"internalType":"uint48","name":"","type":"uint48"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"lookupGenesisHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"middleware","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorImpl","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_programId","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address[]","name":"_programsIds","type":"address[]"}],"stateMutability":"view","type":"function","name":"programsCodeIds","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v","type":"uint8"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCodeValidationBaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"requestCodeValidationExtraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_requester","type":"address"},{"internalType":"bytes32","name":"_codeId","type":"bytes32"},{"internalType":"bytes32[]","name":"_blobHashes","type":"bytes32[]"},{"internalType":"uint256","name":"_deadline","type":"uint256"},{"internalType":"uint8","name":"_v1","type":"uint8"},{"internalType":"bytes32","name":"_r1","type":"bytes32"},{"internalType":"bytes32","name":"_s1","type":"bytes32"},{"internalType":"uint8","name":"_v2","type":"uint8"},{"internalType":"bytes32","name":"_r2","type":"bytes32"},{"internalType":"bytes32","name":"_s2","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidationOnBehalf"},{"inputs":[{"internalType":"address","name":"newMirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"uint256","name":"newBaseFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCodeValidationBaseFee"},{"inputs":[{"internalType":"uint256","name":"newExtraFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRequestCodeValidationExtraFee"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdFraction","outputs":[{"internalType":"uint128","name":"thresholdNumerator","type":"uint128"},{"internalType":"uint128","name":"thresholdDenominator","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageView","outputs":[{"internalType":"struct IRouter.StorageView","name":"","type":"tuple","components":[{"internalType":"struct Gear.GenesisBlockInfo","name":"genesisBlock","type":"tuple","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint32","name":"number","type":"uint32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.CommittedBatchInfo","name":"latestCommittedBatch","type":"tuple","components":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"uint48","name":"timestamp","type":"uint48"}]},{"internalType":"struct Gear.AddressBook","name":"implAddresses","type":"tuple","components":[{"internalType":"address","name":"mirror","type":"address"},{"internalType":"address","name":"wrappedVara","type":"address"},{"internalType":"address","name":"middleware","type":"address"}]},{"internalType":"struct Gear.ValidationSettingsView","name":"validationSettings","type":"tuple","components":[{"internalType":"uint128","name":"thresholdNumerator","type":"uint128"},{"internalType":"uint128","name":"thresholdDenominator","type":"uint128"},{"internalType":"struct Gear.ValidatorsView","name":"validators0","type":"tuple","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"verifiableSecretSharingCommitmentPointer","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"useFromTimestamp","type":"uint256"}]},{"internalType":"struct Gear.ValidatorsView","name":"validators1","type":"tuple","components":[{"internalType":"struct Gear.AggregatedPublicKey","name":"aggregatedPublicKey","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]},{"internalType":"address","name":"verifiableSecretSharingCommitmentPointer","type":"address"},{"internalType":"address[]","name":"list","type":"address[]"},{"internalType":"uint256","name":"useFromTimestamp","type":"uint256"}]}]},{"internalType":"struct Gear.ComputationSettings","name":"computeSettings","type":"tuple","components":[{"internalType":"uint64","name":"threshold","type":"uint64"},{"internalType":"uint128","name":"wvaraPerSecond","type":"uint128"}]},{"internalType":"struct Gear.Timelines","name":"timelines","type":"tuple","components":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"election","type":"uint256"},{"internalType":"uint256","name":"validationDelay","type":"uint256"}]},{"internalType":"uint256","name":"programsCount","type":"uint256"},{"internalType":"uint256","name":"validatedCodesCount","type":"uint256"},{"internalType":"uint16","name":"maxValidators","type":"uint16"},{"internalType":"uint256","name":"requestCodeValidationBaseFee","type":"uint256"},{"internalType":"uint256","name":"requestCodeValidationExtraFee","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"timelines","outputs":[{"internalType":"struct Gear.Timelines","name":"","type":"tuple","components":[{"internalType":"uint256","name":"era","type":"uint256"},{"internalType":"uint256","name":"election","type":"uint256"},{"internalType":"uint256","name":"validationDelay","type":"uint256"}]}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsAggregatedPublicKey","outputs":[{"internalType":"struct Gear.AggregatedPublicKey","name":"","type":"tuple","components":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsVerifiableSecretSharingCommitment","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.","returns":{"_0":"domainSeparator The domain separator."}},"areValidators(address[])":{"details":"Checks if the given addresses are all validators.","returns":{"_0":"areValidators `true` if all addresses are validators, `false` otherwise."}},"codeState(bytes32)":{"details":"Returns the state of code.","returns":{"_0":"codeState The state of the code."}},"codesStates(bytes32[])":{"details":"Returns the states of multiple codes.","returns":{"_0":"codesStates The states of the codes."}},"commitBatch((bytes32,uint48,bytes32,uint8,((address,bytes32,bool,address,uint128,bool,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4),bool)[])[],bytes32)[],(bytes32,bool)[],((uint256,bytes32),((address,uint256)[],uint256,address),uint48)[],((uint256,uint256),bytes,address[],uint256)[]),uint8,bytes[])":{"details":"Commits new batch of changes to `Router` state. `CodeGotValidated` event is emitted for each code in commitment. `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.","params":{"_batch":"The batch commitment data.","_signatureType":"The type of signature to validate.","_signatures":"The signatures for the batch commitment."}},"computeSettings()":{"details":"Returns the computation settings.","returns":{"_0":"computeSettings The computation settings."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"createProgram(bytes32,bytes32,address)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, and initializer. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_salt":"The salt for the program creation."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithAbiInterface(bytes32,bytes32,address,address)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_abiInterface":"The ABI interface address for the program.","_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_salt":"The salt for the program creation."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithAbiInterfaceAndExecutableBalance(bytes32,bytes32,address,address,uint128,uint256,uint8,bytes32,bytes32)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support, so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_abiInterface":"The ABI interface address for the program.","_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_deadline":"Deadline for the transaction to be executed.","_initialExecutableBalance":"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_salt":"The salt for the program creation.","_v":"ECDSA signature parameter."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"createProgramWithExecutableBalance(bytes32,bytes32,address,uint128,uint256,uint8,bytes32,bytes32)":{"details":"Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance in WVARA ERC20 token. Note that the program creation is deterministic, so if you try to create program with the same code ID and salt, you will get the same program address. Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support, so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events. As result of execution, the `ProgramCreated` event will be emitted.","params":{"_codeId":"The code ID of the program to create. Must be in `CodeState.Validated` state.","_deadline":"Deadline for the transaction to be executed.","_initialExecutableBalance":"The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.","_overrideInitializer":"The initializer address for the program that can send the first (init) message to the program. If set to `address(0)`, `msg.sender` will be used as the initializer.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_salt":"The salt for the program creation.","_v":"ECDSA signature parameter."},"returns":{"_0":"mirror The address of the created program (`Mirror`)."}},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"genesisBlockHash()":{"details":"Returns the hash of the genesis block.","returns":{"_0":"genesisBlockHash The hash of the genesis block."}},"genesisTimestamp()":{"details":"Returns the timestamp of the genesis block.","returns":{"_0":"genesisTimestamp The timestamp of the genesis block."}},"initialize(address,address,address,address,uint256,uint256,uint256,(uint256,uint256),bytes,address[])":{"details":"Initializes the `Router` with the given parameters.","params":{"_aggregatedPublicKey":"The aggregated public key of the initial validators. Will be used in future.","_electionDuration":"The duration of an election in seconds.","_eraDuration":"The duration of an era in seconds.","_middleware":"The address of the middleware contract.","_mirror":"The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.","_owner":"The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.","_validationDelay":"The delay before validators can start validating in seconds.","_validators":"The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures, so the list of validators is used for signature verification.","_verifiableSecretSharingCommitment":"The verifiable secret sharing commitment of the initial validators. Will be used in future.","_wrappedVara":"The address of the `WrappedVara` (WVARA) ERC20 token contract."}},"isValidator(address)":{"details":"Checks if the given address is a validator.","returns":{"_0":"isValidator `true` if the address is a validator, `false` otherwise."}},"latestCommittedBatchHash()":{"details":"Returns the hash of the latest committed batch.","returns":{"_0":"latestCommittedBatchHash The hash of the latest committed batch."}},"latestCommittedBatchTimestamp()":{"details":"Returns the timestamp of the latest committed batch.","returns":{"_0":"latestCommittedBatchTimestamp The timestamp of the latest committed batch."}},"lookupGenesisHash()":{"details":"Looks up the genesis hash from previous blocks."},"middleware()":{"details":"Returns the address of the middleware implementation.","returns":{"_0":"middleware The address of the middleware implementation."}},"mirrorImpl()":{"details":"Returns the address of the mirror implementation.","returns":{"_0":"mirrorImpl The address of the mirror implementation."}},"nonces(address)":{"details":"Returns the next unused nonce for an address."},"owner()":{"details":"Returns the address of the current owner."},"pause()":{"details":"Pauses the contract."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise.","returns":{"_0":"isPaused `true` if the contract is paused, `false` otherwise."}},"programCodeId(address)":{"details":"Returns the code ID of the given program.","returns":{"_0":"codeId The code ID of the program."}},"programsCodeIds(address[])":{"details":"Returns the code IDs of the given programs.","returns":{"_0":"codesIds The code IDs of the programs."}},"programsCount()":{"details":"Returns the count of programs.","returns":{"_0":"programsCount The count of programs."}},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":"","details":"Reinitializes the `Router` to set up new storage layout. This function is intended to be called during an upgrade/wipe and can contain any logic. NOTE: Don't forget to bump `reinitializer(version)` in modifier!"},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"requestCodeValidation(bytes32,uint256,uint8,bytes32,bytes32)":{"details":"Requests code validation for the given code ID. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()` in the WVARA ERC20 token.","params":{"_codeId":"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).","_deadline":"Deadline for the transaction to be executed.","_r":"ECDSA signature parameter.","_s":"ECDSA signature parameter.","_v":"ECDSA signature parameter."}},"requestCodeValidationBaseFee()":{"details":"Returns the base fee for requesting code validation in WVARA ERC20 token.","returns":{"_0":"requestCodeValidationBaseFee The base fee for requesting code validation."}},"requestCodeValidationExtraFee()":{"details":"Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.","returns":{"_0":"requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else."}},"requestCodeValidationOnBehalf(address,bytes32,bytes32[],uint256,uint8,bytes32,bytes32,uint8,bytes32,bytes32)":{"details":"Requests code validation for the given code ID on behalf of someone else. This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar attached to it containing WASM bytecode. On EVM, we can only verify that there was at least 1 blobhash in a transaction. Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()` in the WVARA ERC20 token.","params":{"_blobHashes":"The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`. This is needed to verify that the transaction has expected blobs attached.","_codeId":"The expected code ID for which the validation is requested. It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).","_deadline":"Deadline for the transaction to be executed.","_r1":"ECDSA signature parameter (for requestCodeValidation).","_r2":"ECDSA signature parameter (for permit).","_requester":"The address of the requester on behalf of whom the code validation is requested.","_s1":"ECDSA signature parameter (for requestCodeValidation).","_s2":"ECDSA signature parameter (for permit).","_v1":"ECDSA signature parameter (for requestCodeValidation).","_v2":"ECDSA signature parameter (for permit)."}},"setMirror(address)":{"details":"Sets the `Mirror` implementation address.","params":{"newMirror":"The new mirror implementation address."}},"setRequestCodeValidationBaseFee(uint256)":{"details":"Sets the base fee for requesting code validation in WVARA ERC20 token.","params":{"newBaseFee":"The new base fee for requesting code validation."}},"setRequestCodeValidationExtraFee(uint256)":{"details":"Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.","params":{"newExtraFee":"The new extra fee for requesting code validation on behalf of someone else."}},"signingThresholdFraction()":{"details":"Returns the signing threshold fraction.","returns":{"thresholdDenominator":"The denominator of the signing threshold fraction.","thresholdNumerator":"The numerator of the signing threshold fraction."}},"storageView()":{"details":"Returns the storage view of the contract storage.","returns":{"_0":"storageView The storage view of the contract storage."}},"timelines()":{"details":"Returns the timelines.","returns":{"_0":"timelines The timelines."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause()":{"details":"Unpauses the contract."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"validatedCodesCount()":{"details":"Returns the count of validated codes.","returns":{"_0":"validatedCodesCount The count of validated codes."}},"validators()":{"details":"Returns the list of current validators.","returns":{"_0":"validators The list of current validators."}},"validatorsAggregatedPublicKey()":{"details":"Returns the aggregated public key of the current validators.","returns":{"_0":"validatorsAggregatedPublicKey The aggregated public key of the current validators."}},"validatorsCount()":{"details":"Returns the count of current validators.","returns":{"_0":"validatorsCount The count of current validators."}},"validatorsThreshold()":{"details":"Returns the threshold number of validators required for a valid signature.","returns":{"_0":"threshold The threshold number of validators required for a valid signature."}},"validatorsVerifiableSecretSharingCommitment()":{"details":"Returns the verifiable secret sharing commitment of the current validators. This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct. See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.","returns":{"_0":"validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators."}},"wrappedVara()":{"details":"Returns the address of the wrapped Vara implementation.","returns":{"_0":"wrappedVara The address of the wrapped Vara implementation."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/instrumented/RouterWithInstrumentation.sol":"RouterWithInstrumentation"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/frost-secp256k1-evm/src/FROST.sol":{"keccak256":"0xcb8beff7a3ca3a2ff171fabec46382d6ebf40cc99f9e2b68b59f625026ec1196","urls":["bzz-raw://1bfeeeb4a231cb269b0a9d04e87b2a818b849ba3f0084e0add73886e012aa957","dweb:/ipfs/QmV4661Y45EELnYy5QuKJTcDzefZzZqqH5xhnJzRM7W8oZ"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/Memory.sol":{"keccak256":"0xbc20f6a538274fde52bd2ee506beb4cbe198852c102f59ecb9f35980b39f30b9","urls":["bzz-raw://086e0a186d8a1fe9ba896db6ab70746bcc8f0e9ebcf501f2f0746cfd99729fdd","dweb:/ipfs/QmVYhsZRahTX7D1HAAhFnHGdTKHj9UfWpR6uWpbNJp7fx2"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/ECDSA.sol":{"keccak256":"0xfb8c0a14626a6b53b4b9d27f39ca982b17072f8bff98e8b685d2730b07bb187b","urls":["bzz-raw://52cc84c8a0b8c4ffd88f04eda4c7dafb7eeac5113dd55cd845bd0a614524627b","dweb:/ipfs/QmNtW5rtnMZFRdsUsyc7zqiymUEWyCHNhn1j8Rr4Xp6wFw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol":{"keccak256":"0xd2cade53d550fde5afb7540f9456acc2e65afad805c7c9113ae2102e52738350","urls":["bzz-raw://ff37b2b2b7022ed9927c051b5b007f062fdbdbf11e20d9d3a0302ca6a930f8e5","dweb:/ipfs/QmfXEdUsCzLr27cQnC5RxgicDPYXqMzoewcQ7EkQSym9Kw"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Schnorr.sol":{"keccak256":"0x30c38d0522e9aded84f3f7b8738a09371f592533446e118b80d7e69a7220ab82","urls":["bzz-raw://4a5fbf62e643b87e278d18bfcecb8ccebe472d24a1d2ed272693cd4ba40b1232","dweb:/ipfs/QmSktUWcadUp6sLyfmX7rhLRjv2hHo4JdWvaN5XKRCatJM"],"license":"MIT"},"lib/frost-secp256k1-evm/src/utils/cryptography/Secp256k1.sol":{"keccak256":"0x75a13b1ba0a88d89da22b9682bbec01ff039b067143a0e419e9f93c268ecf1f0","urls":["bzz-raw://b9f5c0e7f7c74b20b288d18bc8a91555ebf2cd659918b02390606d8f1ba1eda6","dweb:/ipfs/QmYfQJqP4VFvVDzYnjtMJBxXwyrJbMo9rdqxcygHC85NSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5","urls":["bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb","dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol":{"keccak256":"0x391a52a14dfcbe1a9ca16f1c052481de32242cf45714d92dab81be2a987e4bba","urls":["bzz-raw://248b69f99e0452696ce5a2c90aac5602f496e2a697dacd5510d050f0dc833a3c","dweb:/ipfs/QmcYkMiFQhTs2AW5fmcV5a3XQAGdQBUz1Y2NQD4RvBrNTM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459","urls":["bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13","dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Arrays.sol":{"keccak256":"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e","urls":["bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d","dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Comparators.sol":{"keccak256":"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58","urls":["bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd","dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol":{"keccak256":"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26","urls":["bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2","dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol":{"keccak256":"0x5360739db087f427430f8566608e9267df704d96928337a3a3b3e5382925c57f","urls":["bzz-raw://ec939f4b4f68ca36961fd5ea7a417a6a390715173a6999254a2f0a34e9298503","dweb:/ipfs/QmVEE8fRTjXE9jQ5pyKrPSyb9FPPtaWwsqjCdcxaPvAWwW"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77","urls":["bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b","dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/types/Time.sol":{"keccak256":"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc","urls":["bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6","dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza"],"license":"MIT"},"src/IMiddleware.sol":{"keccak256":"0x38bd590dd635ae767b1e01b9854ca5c6a83ee1b742232d0362d1f3601bea45a8","urls":["bzz-raw://2b4bfa62a306473b343d346ee4e514fd691f0066a5be6a1ae6b7aaf6e7682520","dweb:/ipfs/QmWeWcX5LBq3xfLnk8j3ebU7HLYUhx8TqtYGbpStCaevUZ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IMirror.sol":{"keccak256":"0xf99683eb2f5d163c845035ce5622740beaf83faada37117364ca5a12028ad925","urls":["bzz-raw://6633e27c5d83f287d587eab809b2ccd74d0b6f2328f4f48000a69a50646e9570","dweb:/ipfs/QmdhKuPL1VhK5wkwid4d6w61UB7ufirrTN6cHULwyTjCHP"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IRouter.sol":{"keccak256":"0x2e9483984329954d79717ed6c2e3f0415e02044712fd27a45413f806b2f1cd3a","urls":["bzz-raw://3ecab75eb3c994e195b8f2771ac8cea89eeb149c38d276e5f303cbf0d1d6af53","dweb:/ipfs/Qmaub2qyp3DotrjcJLSNX4aqVZNeLAVF4x3dz9LSZ71utQ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/IWrappedVara.sol":{"keccak256":"0xc3b9a28bb10af2e04bd98182230f4035be91a46b2569aed5916944cf035669db","urls":["bzz-raw://5d41c44412c122ff53bc7a10fa1e010e92df70413b97c8663aaa979e2d31d693","dweb:/ipfs/QmYJnwuJb8JeBVa29XqcSD58svzfTMmC2E1Rb9apxTvzMJ"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/instrumented/RouterWithInstrumentation.sol":{"keccak256":"0x1f4955ad85733084d5c9056dd0e24ba0427c527cb524dcbcfaf3ba0aacdc4b13","urls":["bzz-raw://6c8b7452b7c991c638a2d03caabb50f75310572f669f7a3ee8cd414569a054dd","dweb:/ipfs/QmajdFjiBZRRicc2Ssz2arhVNvLscnL8RZfWyH46d1gtbz"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Clones.sol":{"keccak256":"0xedec50e3e6f10f016b8f8ea91bc63f69dffe8287e755778a8ef980f51206d1d7","urls":["bzz-raw://789789391f384e4b4925e49818ddac6f19b70f01d90befdeac4e2c69e2926bc3","dweb:/ipfs/QmUgyWxAHKmza1mSQnkxFroBxsnzchUntEjCqsrJfK9SrT"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/ClonesSmall.sol":{"keccak256":"0x453f0262cf06f368b969ea3dbca328ee7fae1c8b73fdbc35ffe8252142d62b70","urls":["bzz-raw://d8237577660ba34d8105a6ec84a699059357471364bd4efdba10195ff93f7d4b","dweb:/ipfs/QmRAky7bp7z3kgd56YwSdU2pRskoPryhQwaR5sCceSC9Lv"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/Gear.sol":{"keccak256":"0x176d452626063ddd6b94feb5cf31a77224c2c3340c96ea9d61385fbe0653e7c3","urls":["bzz-raw://34dd903f9b2a3084b6bec070e763dc0c6ef4113ae937d5c9428a00c328d5efc5","dweb:/ipfs/QmQgJhtU7AqMvjDRgx8agvBHdAt3tRSeNqAEmWu42KFFZX"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"src/libraries/SSTORE2.sol":{"keccak256":"0xd280ac6c1bf76b0996b061139591884ea767f2fa97c103a4d6abb38c449c2cdd","urls":["bzz-raw://59271a683dc86fde6556b000155742076227a490581f5b38d80bdf7bfe593389","dweb:/ipfs/QmWGXRjg1sDa89XHpTXMT45iJazwc3S5qA8Aio4hbqhhmm"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/instrumented/RouterWithInstrumentation.sol","id":86998,"exportedSymbols":{"Clones":[87250],"ClonesSmall":[87334],"ECDSA":[51038],"EIP712Upgradeable":[44416],"FROST":[40965],"Gear":[88588],"Hashes":[41483],"IMiddleware":[74131],"IMirror":[74395],"IRouter":[74985],"IWrappedVara":[75001],"Memory":[41257],"NoncesUpgradeable":[43698],"OwnableUpgradeable":[42322],"PausableUpgradeable":[43858],"ReentrancyGuardTransientUpgradeable":[43943],"RouterWithInstrumentation":[86997],"SSTORE2":[89044],"SlotDerivation":[48965],"StorageSlot":[49089],"UUPSUpgradeable":[46243]},"nodeType":"SourceUnit","src":"74:49324:168","nodes":[{"id":84079,"nodeType":"PragmaDirective","src":"74:24:168","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":84081,"nodeType":"ImportDirective","src":"100:101:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":84080,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84083,"nodeType":"ImportDirective","src":"202:98:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/NoncesUpgradeable.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":43699,"symbolAliases":[{"foreign":{"id":84082,"name":"NoncesUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43698,"src":"210:17:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84085,"nodeType":"ImportDirective","src":"301:102:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":43859,"symbolAliases":[{"foreign":{"id":84084,"name":"PausableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43858,"src":"309:19:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84087,"nodeType":"ImportDirective","src":"404:140:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardTransientUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardTransientUpgradeable.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":43944,"symbolAliases":[{"foreign":{"id":84086,"name":"ReentrancyGuardTransientUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43943,"src":"417:35:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84089,"nodeType":"ImportDirective","src":"545:111:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":44417,"symbolAliases":[{"foreign":{"id":84088,"name":"EIP712Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44416,"src":"553:17:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84091,"nodeType":"ImportDirective","src":"657:88:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":84090,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"665:15:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84093,"nodeType":"ImportDirective","src":"746:80:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/SlotDerivation.sol","file":"@openzeppelin/contracts/utils/SlotDerivation.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":48966,"symbolAliases":[{"foreign":{"id":84092,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"754:14:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84095,"nodeType":"ImportDirective","src":"827:74:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":49090,"symbolAliases":[{"foreign":{"id":84094,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"835:11:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84097,"nodeType":"ImportDirective","src":"902:75:168","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":51039,"symbolAliases":[{"foreign":{"id":84096,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"910:5:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84099,"nodeType":"ImportDirective","src":"978:52:168","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/FROST.sol","file":"frost-secp256k1-evm/FROST.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":40966,"symbolAliases":[{"foreign":{"id":84098,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"986:5:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84101,"nodeType":"ImportDirective","src":"1031:60:168","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/Memory.sol","file":"frost-secp256k1-evm/utils/Memory.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":41258,"symbolAliases":[{"foreign":{"id":84100,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"1039:6:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84103,"nodeType":"ImportDirective","src":"1092:73:168","nodes":[],"absolutePath":"lib/frost-secp256k1-evm/src/utils/cryptography/Hashes.sol","file":"frost-secp256k1-evm/utils/cryptography/Hashes.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":41484,"symbolAliases":[{"foreign":{"id":84102,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"1100:6:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84105,"nodeType":"ImportDirective","src":"1166:48:168","nodes":[],"absolutePath":"src/IMiddleware.sol","file":"src/IMiddleware.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":74132,"symbolAliases":[{"foreign":{"id":84104,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"1174:11:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84107,"nodeType":"ImportDirective","src":"1215:40:168","nodes":[],"absolutePath":"src/IMirror.sol","file":"src/IMirror.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":74396,"symbolAliases":[{"foreign":{"id":84106,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"1223:7:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84109,"nodeType":"ImportDirective","src":"1256:40:168","nodes":[],"absolutePath":"src/IRouter.sol","file":"src/IRouter.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":74986,"symbolAliases":[{"foreign":{"id":84108,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74985,"src":"1264:7:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84111,"nodeType":"ImportDirective","src":"1297:50:168","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"src/IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":75002,"symbolAliases":[{"foreign":{"id":84110,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"1305:12:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84113,"nodeType":"ImportDirective","src":"1348:48:168","nodes":[],"absolutePath":"src/libraries/Clones.sol","file":"src/libraries/Clones.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":87251,"symbolAliases":[{"foreign":{"id":84112,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87250,"src":"1356:6:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84115,"nodeType":"ImportDirective","src":"1397:58:168","nodes":[],"absolutePath":"src/libraries/ClonesSmall.sol","file":"src/libraries/ClonesSmall.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":87335,"symbolAliases":[{"foreign":{"id":84114,"name":"ClonesSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87334,"src":"1405:11:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84117,"nodeType":"ImportDirective","src":"1456:44:168","nodes":[],"absolutePath":"src/libraries/Gear.sol","file":"src/libraries/Gear.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":88589,"symbolAliases":[{"foreign":{"id":84116,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"1464:4:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":84119,"nodeType":"ImportDirective","src":"1501:50:168","nodes":[],"absolutePath":"src/libraries/SSTORE2.sol","file":"src/libraries/SSTORE2.sol","nameLocation":"-1:-1:-1","scope":86998,"sourceUnit":89045,"symbolAliases":[{"foreign":{"id":84118,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89044,"src":"1509:7:168","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":86997,"nodeType":"ContractDefinition","src":"1553:47844:168","nodes":[{"id":84136,"nodeType":"VariableDeclaration","src":"1868:106:168","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1893:12:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84134,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1868:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":84135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1908:66:168","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":84139,"nodeType":"VariableDeclaration","src":"2087:111:168","nodes":[],"constant":true,"mutability":"constant","name":"TRANSIENT_STORAGE","nameLocation":"2112:17:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84137,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2087:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866303262343635373337666136303435633266663533666232646634336336363931366163323136366661333033323634363638666232663661316438633030","id":84138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2132:66:168","typeDescriptions":{"typeIdentifier":"t_rational_108631543557424213897897473785501454225913773503351157840763824611960129686528_by_1","typeString":"int_const 1086...(70 digits omitted)...6528"},"value":"0xf02b465737fa6045c2ff53fb2df43c66916ac2166fa303264668fb2f6a1d8c00"},"visibility":"private"},{"id":84142,"nodeType":"VariableDeclaration","src":"2205:55:168","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_NAME","nameLocation":"2229:11:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":84140,"name":"string","nodeType":"ElementaryTypeName","src":"2205:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"566172612e45544820526f75746572","id":84141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2243:17:168","typeDescriptions":{"typeIdentifier":"t_stringliteral_ded8ea4cbd8dfac3d256d1ee2019397a32c8630b040ad63275830e967889ecd8","typeString":"literal_string \"Vara.ETH Router\""},"value":"Vara.ETH Router"},"visibility":"private"},{"id":84145,"nodeType":"VariableDeclaration","src":"2266:44:168","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_VERSION","nameLocation":"2290:14:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":84143,"name":"string","nodeType":"ElementaryTypeName","src":"2266:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"31","id":84144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2307:3:168","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"},"visibility":"private"},{"id":84148,"nodeType":"VariableDeclaration","src":"2317:73:168","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nameLocation":"2342:40:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84146,"name":"uint256","nodeType":"ElementaryTypeName","src":"2317:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f303030","id":84147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2385:5:168","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1_000"},"visibility":"private"},{"id":84151,"nodeType":"VariableDeclaration","src":"2396:72:168","nodes":[],"constant":true,"mutability":"constant","name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nameLocation":"2421:41:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84149,"name":"uint256","nodeType":"ElementaryTypeName","src":"2396:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":84150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2465:3:168","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"private"},{"id":84154,"nodeType":"VariableDeclaration","src":"2611:144:168","nodes":[],"constant":true,"mutability":"constant","name":"REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH","nameLocation":"2636:42:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2611:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833373564326566396239653333633634306132393566353338373364633734383333633364303139663334393436346365326665383839393936326238303937","id":84153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2689:66:168","typeDescriptions":{"typeIdentifier":"t_rational_25041847662038966976180655381136102362768580769727479521951050179079337377943_by_1","typeString":"int_const 2504...(69 digits omitted)...7943"},"value":"0x375d2ef9b9e33c640a295f53873dc74833c3d019f349464ce2fe8899962b8097"},"visibility":"private"},{"id":84157,"nodeType":"VariableDeclaration","src":"2762:60:168","nodes":[],"constant":true,"functionSelector":"ad2b3d9a","mutability":"constant","name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","nameLocation":"2786:32:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84155,"name":"uint256","nodeType":"ElementaryTypeName","src":"2762:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":84156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2821:1:168","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"id":84160,"nodeType":"VariableDeclaration","src":"2828:59:168","nodes":[],"constant":true,"functionSelector":"4429e24b","mutability":"constant","name":"COMMIT_BATCH_AFTER_COMMIT_CODES","nameLocation":"2852:31:168","scope":86997,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84158,"name":"uint256","nodeType":"ElementaryTypeName","src":"2828:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":84159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2886:1:168","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"id":84164,"nodeType":"EventDefinition","src":"2894:51:168","nodes":[],"anonymous":true,"eventSelector":"e6fc1df15bb41e2a123ea1d440db6747be3ed04da67b92ac280ad10a97b799d8","name":"DebugEvent","nameLocation":"2900:10:168","parameters":{"id":84163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84162,"indexed":true,"mutability":"mutable","name":"topic0","nameLocation":"2927:6:168","nodeType":"VariableDeclaration","scope":84164,"src":"2911:22:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84161,"name":"uint256","nodeType":"ElementaryTypeName","src":"2911:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2910:24:168"}},{"id":84172,"nodeType":"FunctionDefinition","src":"3019:53:168","nodes":[],"body":{"id":84171,"nodeType":"Block","src":"3033:39:168","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84168,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"3043:20:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":84169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3043:22:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84170,"nodeType":"ExpressionStatement","src":"3043:22:168"}]},"documentation":{"id":84165,"nodeType":"StructuredDocumentation","src":"2951:63:168","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":84166,"nodeType":"ParameterList","parameters":[],"src":"3030:2:168"},"returnParameters":{"id":84167,"nodeType":"ParameterList","parameters":[],"src":"3033:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":84376,"nodeType":"FunctionDefinition","src":"4238:2502:168","nodes":[],"body":{"id":84375,"nodeType":"Block","src":"4653:2087:168","nodes":[],"statements":[{"expression":{"arguments":[{"id":84201,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84175,"src":"4678:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":84200,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"4663:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":84202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4663:22:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84203,"nodeType":"ExpressionStatement","src":"4663:22:168"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84204,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43762,"src":"4695:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":84205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4695:17:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84206,"nodeType":"ExpressionStatement","src":"4695:17:168"},{"expression":{"arguments":[{"id":84208,"name":"EIP712_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84142,"src":"4736:11:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":84209,"name":"EIP712_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84145,"src":"4749:14:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":84207,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44129,"src":"4722:13:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":84210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4722:42:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84211,"nodeType":"ExpressionStatement","src":"4722:42:168"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84212,"name":"__Nonces_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43624,"src":"4774:13:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":84213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4774:15:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84214,"nodeType":"ExpressionStatement","src":"4774:15:168"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84215,"name":"__ReentrancyGuardTransient_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43892,"src":"4799:31:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":84216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4799:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84217,"nodeType":"ExpressionStatement","src":"4799:33:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":84219,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5011:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":84220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5017:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"5011:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":84221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5029:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5011:19:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":84223,"name":"InvalidTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74539,"src":"5032:16:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":84224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5032:18:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":84218,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5003:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":84225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5003:48:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84226,"nodeType":"ExpressionStatement","src":"5003:48:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84228,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84185,"src":"5069:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":84229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5089:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5069:21:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":84231,"name":"InvalidElectionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74542,"src":"5092:23:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":84232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5092:25:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":84227,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5061:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":84233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5061:57:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84234,"nodeType":"ExpressionStatement","src":"5061:57:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84236,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84183,"src":"5136:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":84237,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84185,"src":"5151:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5136:32:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":84239,"name":"EraDurationTooShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74545,"src":"5170:19:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":84240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5170:21:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":84235,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5128:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":84241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5128:64:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84242,"nodeType":"ExpressionStatement","src":"5128:64:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84244,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84187,"src":"5361:16:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84245,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84183,"src":"5381:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":84246,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84185,"src":"5396:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5381:32:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":84248,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5380:34:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":84249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5417:2:168","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"5380:39:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5361:58:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":84252,"name":"ValidationDelayTooBig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74550,"src":"5421:21:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":84253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":84243,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5353:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":84254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5353:92:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84255,"nodeType":"ExpressionStatement","src":"5353:92:168"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":84257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5472:25:168","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":84256,"name":"_setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86937,"src":"5456:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":84258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5456:42:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84259,"nodeType":"ExpressionStatement","src":"5456:42:168"},{"assignments":[84262],"declarations":[{"constant":false,"id":84262,"mutability":"mutable","name":"router","nameLocation":"5524:6:168","nodeType":"VariableDeclaration","scope":84375,"src":"5508:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84261,"nodeType":"UserDefinedTypeName","pathNode":{"id":84260,"name":"Storage","nameLocations":["5508:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"5508:7:168"},"referencedDeclaration":74490,"src":"5508:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84265,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84263,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"5533:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5533:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5508:34:168"},{"expression":{"id":84272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84266,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"5553:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5560:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"5553:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":84269,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5575:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5580:10:168","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":88040,"src":"5575:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$87576_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":84271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5575:17:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"5553:39:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":84273,"nodeType":"ExpressionStatement","src":"5553:39:168"},{"expression":{"id":84283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84274,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"5602:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5609:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"5602:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":84279,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84177,"src":"5642:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":84280,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84179,"src":"5651:12:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":84281,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84181,"src":"5665:11:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":84277,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5625:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5630:11:168","memberName":"AddressBook","nodeType":"MemberAccess","referencedDeclaration":87452,"src":"5625:16:168","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_AddressBook_$87452_storage_ptr_$","typeString":"type(struct Gear.AddressBook storage pointer)"}},"id":84282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5625:52:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_memory_ptr","typeString":"struct Gear.AddressBook memory"}},"src":"5602:75:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":84284,"nodeType":"ExpressionStatement","src":"5602:75:168"},{"expression":{"id":84292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84285,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"5687:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5694:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"5687:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5713:18:168","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"5687:44:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":84290,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5734:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5739:30:168","memberName":"VALIDATORS_THRESHOLD_NUMERATOR","nodeType":"MemberAccess","referencedDeclaration":87373,"src":"5734:35:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5687:82:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":84293,"nodeType":"ExpressionStatement","src":"5687:82:168"},{"expression":{"id":84301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84294,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"5779:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5786:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"5779:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5805:20:168","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"5779:46:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":84299,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5828:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5833:32:168","memberName":"VALIDATORS_THRESHOLD_DENOMINATOR","nodeType":"MemberAccess","referencedDeclaration":87377,"src":"5828:37:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5779:86:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":84302,"nodeType":"ExpressionStatement","src":"5779:86:168"},{"expression":{"id":84309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84303,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"5875:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5882:15:168","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"5875:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":84306,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5900:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5905:26:168","memberName":"defaultComputationSettings","nodeType":"MemberAccess","referencedDeclaration":88017,"src":"5900:31:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ComputationSettings_$87568_memory_ptr_$","typeString":"function () pure returns (struct Gear.ComputationSettings memory)"}},"id":84308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5900:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_memory_ptr","typeString":"struct Gear.ComputationSettings memory"}},"src":"5875:58:168","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"id":84310,"nodeType":"ExpressionStatement","src":"5875:58:168"},{"expression":{"id":84320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84311,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"5943:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5950:9:168","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"5943:16:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":84316,"name":"_eraDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84183,"src":"5977:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":84317,"name":"_electionDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84185,"src":"5991:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":84318,"name":"_validationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84187,"src":"6010:16:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":84314,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"5962:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5967:9:168","memberName":"Timelines","nodeType":"MemberAccess","referencedDeclaration":87671,"src":"5962:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Timelines_$87671_storage_ptr_$","typeString":"type(struct Gear.Timelines storage pointer)"}},"id":84319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5962:65:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_memory_ptr","typeString":"struct Gear.Timelines memory"}},"src":"5943:84:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":84321,"nodeType":"ExpressionStatement","src":"5943:84:168"},{"expression":{"id":84332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84322,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"6037:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6044:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6037:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6057:13:168","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":87618,"src":"6037:33:168","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":84329,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84195,"src":"6080:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":84330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6092:6:168","memberName":"length","nodeType":"MemberAccess","src":"6080:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6073:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":84327,"name":"uint16","nodeType":"ElementaryTypeName","src":"6073:6:168","typeDescriptions":{}}},"id":84331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6073:26:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"6037:62:168","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":84333,"nodeType":"ExpressionStatement","src":"6037:62:168"},{"assignments":[84335],"declarations":[{"constant":false,"id":84335,"mutability":"mutable","name":"decimalsFactor","nameLocation":"6118:14:168","nodeType":"VariableDeclaration","scope":84375,"src":"6110:22:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84334,"name":"uint256","nodeType":"ElementaryTypeName","src":"6110:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84343,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":84336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6135:2:168","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":84338,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84179,"src":"6154:12:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":84337,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"6141:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":84339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6141:26:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":84340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:8:168","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":46861,"src":"6141:35:168","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":84341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6141:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6135:43:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6110:68:168"},{"expression":{"id":84352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84344,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"6188:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6195:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6188:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6208:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"6188:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84349,"name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84148,"src":"6239:40:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":84350,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84335,"src":"6282:14:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6239:57:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6188:108:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84353,"nodeType":"ExpressionStatement","src":"6188:108:168"},{"expression":{"id":84362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84354,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"6306:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6313:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"6306:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84358,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6326:29:168","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"6306:49:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84359,"name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84151,"src":"6358:41:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":84360,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84335,"src":"6402:14:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6358:58:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6306:110:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84363,"nodeType":"ExpressionStatement","src":"6306:110:168"},{"expression":{"arguments":[{"expression":{"expression":{"id":84365,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84262,"src":"6498:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6505:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"6498:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6524:11:168","memberName":"validators0","nodeType":"MemberAccess","referencedDeclaration":87679,"src":"6498:37:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"}},{"id":84368,"name":"_aggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84190,"src":"6549:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"}},{"id":84369,"name":"_verifiableSecretSharingCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84192,"src":"6583:34:168","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":84370,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84195,"src":"6631:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":84371,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6656:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":84372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6662:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"6656:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$87429_storage","typeString":"struct Gear.Validators storage ref"},{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84364,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86884,"src":"6468:16:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$87429_storage_ptr_$_t_struct$_AggregatedPublicKey_$87408_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,struct Gear.AggregatedPublicKey memory,bytes memory,address[] memory,uint256)"}},"id":84373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6468:213:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84374,"nodeType":"ExpressionStatement","src":"6468:213:168"}]},"documentation":{"id":84173,"nodeType":"StructuredDocumentation","src":"3078:1155:168","text":" @dev Initializes the `Router` with the given parameters.\n @param _owner The address of the owner of the `Router`. Owner can perform `onlyOwner` actions.\n @param _mirror The address of the mirror contract. It's recommended to pre-compute the mirror address and set it here.\n @param _wrappedVara The address of the `WrappedVara` (WVARA) ERC20 token contract.\n @param _middleware The address of the middleware contract.\n @param _eraDuration The duration of an era in seconds.\n @param _electionDuration The duration of an election in seconds.\n @param _validationDelay The delay before validators can start validating in seconds.\n @param _aggregatedPublicKey The aggregated public key of the initial validators. Will be used in future.\n @param _verifiableSecretSharingCommitment The verifiable secret sharing commitment of the initial validators. Will be used in future.\n @param _validators The list of initial validators' addresses. Currently `Router` batch commitments uses ECDSA signatures,\n so the list of validators is used for signature verification."},"functionSelector":"53f7fd48","implemented":true,"kind":"function","modifiers":[{"id":84198,"kind":"modifierInvocation","modifierName":{"id":84197,"name":"initializer","nameLocations":["4641:11:168"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"4641:11:168"},"nodeType":"ModifierInvocation","src":"4641:11:168"}],"name":"initialize","nameLocation":"4247:10:168","parameters":{"id":84196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84175,"mutability":"mutable","name":"_owner","nameLocation":"4275:6:168","nodeType":"VariableDeclaration","scope":84376,"src":"4267:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84174,"name":"address","nodeType":"ElementaryTypeName","src":"4267:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":84177,"mutability":"mutable","name":"_mirror","nameLocation":"4299:7:168","nodeType":"VariableDeclaration","scope":84376,"src":"4291:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84176,"name":"address","nodeType":"ElementaryTypeName","src":"4291:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":84179,"mutability":"mutable","name":"_wrappedVara","nameLocation":"4324:12:168","nodeType":"VariableDeclaration","scope":84376,"src":"4316:20:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84178,"name":"address","nodeType":"ElementaryTypeName","src":"4316:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":84181,"mutability":"mutable","name":"_middleware","nameLocation":"4354:11:168","nodeType":"VariableDeclaration","scope":84376,"src":"4346:19:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84180,"name":"address","nodeType":"ElementaryTypeName","src":"4346:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":84183,"mutability":"mutable","name":"_eraDuration","nameLocation":"4383:12:168","nodeType":"VariableDeclaration","scope":84376,"src":"4375:20:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84182,"name":"uint256","nodeType":"ElementaryTypeName","src":"4375:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":84185,"mutability":"mutable","name":"_electionDuration","nameLocation":"4413:17:168","nodeType":"VariableDeclaration","scope":84376,"src":"4405:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84184,"name":"uint256","nodeType":"ElementaryTypeName","src":"4405:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":84187,"mutability":"mutable","name":"_validationDelay","nameLocation":"4448:16:168","nodeType":"VariableDeclaration","scope":84376,"src":"4440:24:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84186,"name":"uint256","nodeType":"ElementaryTypeName","src":"4440:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":84190,"mutability":"mutable","name":"_aggregatedPublicKey","nameLocation":"4508:20:168","nodeType":"VariableDeclaration","scope":84376,"src":"4474:54:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":84189,"nodeType":"UserDefinedTypeName","pathNode":{"id":84188,"name":"Gear.AggregatedPublicKey","nameLocations":["4474:4:168","4479:19:168"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"4474:24:168"},"referencedDeclaration":87408,"src":"4474:24:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":84192,"mutability":"mutable","name":"_verifiableSecretSharingCommitment","nameLocation":"4553:34:168","nodeType":"VariableDeclaration","scope":84376,"src":"4538:49:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":84191,"name":"bytes","nodeType":"ElementaryTypeName","src":"4538:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":84195,"mutability":"mutable","name":"_validators","nameLocation":"4616:11:168","nodeType":"VariableDeclaration","scope":84376,"src":"4597:30:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":84193,"name":"address","nodeType":"ElementaryTypeName","src":"4597:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":84194,"nodeType":"ArrayTypeName","src":"4597:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4257:376:168"},"returnParameters":{"id":84199,"nodeType":"ParameterList","parameters":[],"src":"4653:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":84471,"nodeType":"FunctionDefinition","src":"7060:3024:168","nodes":[],"body":{"id":84470,"nodeType":"Block","src":"7118:2966:168","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84386,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"9391:5:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":84387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9391:7:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":84385,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"9376:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":84388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9376:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84389,"nodeType":"ExpressionStatement","src":"9376:23:168"},{"expression":{"arguments":[{"id":84391,"name":"EIP712_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84142,"src":"9423:11:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":84392,"name":"EIP712_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84145,"src":"9436:14:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":84390,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44129,"src":"9409:13:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":84393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9409:42:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84394,"nodeType":"ExpressionStatement","src":"9409:42:168"},{"assignments":[84397],"declarations":[{"constant":false,"id":84397,"mutability":"mutable","name":"router","nameLocation":"9478:6:168","nodeType":"VariableDeclaration","scope":84470,"src":"9462:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84396,"nodeType":"UserDefinedTypeName","pathNode":{"id":84395,"name":"Storage","nameLocations":["9462:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"9462:7:168"},"referencedDeclaration":74490,"src":"9462:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84400,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84398,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"9487:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9487:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9462:34:168"},{"expression":{"id":84407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84401,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9506:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84403,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9513:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"9506:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":84404,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"9528:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9533:10:168","memberName":"newGenesis","nodeType":"MemberAccess","referencedDeclaration":88040,"src":"9528:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_GenesisBlockInfo_$87576_memory_ptr_$","typeString":"function () view returns (struct Gear.GenesisBlockInfo memory)"}},"id":84406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9528:17:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_memory_ptr","typeString":"struct Gear.GenesisBlockInfo memory"}},"src":"9506:39:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":84408,"nodeType":"ExpressionStatement","src":"9506:39:168"},{"expression":{"id":84420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84409,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9555:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9562:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"9555:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":84416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9624:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":84415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9616:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":84414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9616:7:168","typeDescriptions":{}}},"id":84417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9616:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":84418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9639:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":84412,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"9585:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9590:18:168","memberName":"CommittedBatchInfo","nodeType":"MemberAccess","referencedDeclaration":87562,"src":"9585:23:168","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_CommittedBatchInfo_$87562_storage_ptr_$","typeString":"type(struct Gear.CommittedBatchInfo storage pointer)"}},"id":84419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["9610:4:168","9628:9:168"],"names":["hash","timestamp"],"nodeType":"FunctionCall","src":"9585:57:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_memory_ptr","typeString":"struct Gear.CommittedBatchInfo memory"}},"src":"9555:87:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":84421,"nodeType":"ExpressionStatement","src":"9555:87:168"},{"expression":{"id":84436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84422,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9652:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9659:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9652:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9672:13:168","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":87618,"src":"9652:33:168","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"arguments":[{"id":84431,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9721:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84429,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"9695:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9700:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"9695:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9695:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9729:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"9695:38:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":84434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9734:6:168","memberName":"length","nodeType":"MemberAccess","src":"9695:45:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9688:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":84427,"name":"uint16","nodeType":"ElementaryTypeName","src":"9688:6:168","typeDescriptions":{}}},"id":84435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9688:53:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"9652:89:168","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":84437,"nodeType":"ExpressionStatement","src":"9652:89:168"},{"assignments":[84439],"declarations":[{"constant":false,"id":84439,"mutability":"mutable","name":"decimalsFactor","nameLocation":"9759:14:168","nodeType":"VariableDeclaration","scope":84470,"src":"9751:22:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84438,"name":"uint256","nodeType":"ElementaryTypeName","src":"9751:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84449,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":84440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9776:2:168","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"expression":{"id":84442,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9795:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9802:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"9795:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":84444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9816:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"9795:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":84441,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"9782:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":84445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9782:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":84446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9829:8:168","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":46861,"src":"9782:55:168","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":84447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9782:57:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9776:63:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9751:88:168"},{"expression":{"id":84458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84450,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9849:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9856:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9849:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9869:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"9849:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84455,"name":"DEFAULT_REQUEST_CODE_VALIDATION_BASE_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84148,"src":"9900:40:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":84456,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84439,"src":"9943:14:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9900:57:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:108:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84459,"nodeType":"ExpressionStatement","src":"9849:108:168"},{"expression":{"id":84468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":84460,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84397,"src":"9967:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9974:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"9967:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9987:29:168","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"9967:49:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84465,"name":"DEFAULT_REQUEST_CODE_VALIDATION_EXTRA_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84151,"src":"10019:41:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":84466,"name":"decimalsFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84439,"src":"10063:14:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10019:58:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9967:110:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84469,"nodeType":"ExpressionStatement","src":"9967:110:168"}]},"documentation":{"id":84377,"nodeType":"StructuredDocumentation","src":"6746:309:168","text":" @dev Reinitializes the `Router` to set up new storage layout.\n This function is intended to be called during an upgrade/wipe and can contain any logic.\n NOTE: Don't forget to bump `reinitializer(version)` in modifier!\n @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":84380,"kind":"modifierInvocation","modifierName":{"id":84379,"name":"onlyOwner","nameLocations":["7091:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"7091:9:168"},"nodeType":"ModifierInvocation","src":"7091:9:168"},{"arguments":[{"hexValue":"35","id":84382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7115:1:168","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"}],"id":84383,"kind":"modifierInvocation","modifierName":{"id":84381,"name":"reinitializer","nameLocations":["7101:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"7101:13:168"},"nodeType":"ModifierInvocation","src":"7101:16:168"}],"name":"reinitialize","nameLocation":"7069:12:168","parameters":{"id":84378,"nodeType":"ParameterList","parameters":[],"src":"7081:2:168"},"returnParameters":{"id":84384,"nodeType":"ParameterList","parameters":[],"src":"7118:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":84481,"nodeType":"FunctionDefinition","src":"10249:84:168","nodes":[],"body":{"id":84480,"nodeType":"Block","src":"10331:2:168","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":84472,"nodeType":"StructuredDocumentation","src":"10090:154:168","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":84478,"kind":"modifierInvocation","modifierName":{"id":84477,"name":"onlyOwner","nameLocations":["10321:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"10321:9:168"},"nodeType":"ModifierInvocation","src":"10321:9:168"}],"name":"_authorizeUpgrade","nameLocation":"10258:17:168","overrides":{"id":84476,"nodeType":"OverrideSpecifier","overrides":[],"src":"10312:8:168"},"parameters":{"id":84475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84474,"mutability":"mutable","name":"newImplementation","nameLocation":"10284:17:168","nodeType":"VariableDeclaration","scope":84481,"src":"10276:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84473,"name":"address","nodeType":"ElementaryTypeName","src":"10276:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10275:27:168"},"returnParameters":{"id":84479,"nodeType":"ParameterList","parameters":[],"src":"10331:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":84535,"nodeType":"FunctionDefinition","src":"10505:948:168","nodes":[],"body":{"id":84534,"nodeType":"Block","src":"10569:884:168","nodes":[],"statements":[{"assignments":[84490],"declarations":[{"constant":false,"id":84490,"mutability":"mutable","name":"router","nameLocation":"10595:6:168","nodeType":"VariableDeclaration","scope":84534,"src":"10579:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84489,"nodeType":"UserDefinedTypeName","pathNode":{"id":84488,"name":"Storage","nameLocations":["10579:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"10579:7:168"},"referencedDeclaration":74490,"src":"10579:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84493,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84491,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"10604:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10604:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10579:34:168"},{"assignments":[84498],"declarations":[{"constant":false,"id":84498,"mutability":"mutable","name":"validationSettings","nameLocation":"10658:18:168","nodeType":"VariableDeclaration","scope":84534,"src":"10623:53:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView"},"typeName":{"id":84497,"nodeType":"UserDefinedTypeName","pathNode":{"id":84496,"name":"Gear.ValidationSettingsView","nameLocations":["10623:4:168","10628:22:168"],"nodeType":"IdentifierPath","referencedDeclaration":87695,"src":"10623:27:168"},"referencedDeclaration":87695,"src":"10623:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_storage_ptr","typeString":"struct Gear.ValidationSettingsView"}},"visibility":"internal"}],"id":84504,"initialValue":{"arguments":[{"expression":{"id":84501,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"10691:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10698:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"10691:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}],"expression":{"id":84499,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"10679:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10684:6:168","memberName":"toView","nodeType":"MemberAccess","referencedDeclaration":88587,"src":"10679:11:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_ValidationSettings_$87683_storage_ptr_$returns$_t_struct$_ValidationSettingsView_$87695_memory_ptr_$","typeString":"function (struct Gear.ValidationSettings storage pointer) view returns (struct Gear.ValidationSettingsView memory)"}},"id":84503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10679:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},"nodeType":"VariableDeclarationStatement","src":"10623:94:168"},{"expression":{"arguments":[{"expression":{"id":84506,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"10774:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10781:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"10774:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},{"expression":{"id":84508,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"10829:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84509,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10836:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"10829:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},{"expression":{"id":84510,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"10885:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10892:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"10885:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},{"id":84512,"name":"validationSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84498,"src":"10939:18:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"}},{"expression":{"id":84513,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"10988:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10995:15:168","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"10988:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},{"expression":{"id":84515,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"11035:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11042:9:168","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"11035:16:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},{"expression":{"expression":{"id":84517,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"11080:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11087:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11080:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11100:13:168","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":87612,"src":"11080:33:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":84520,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"11148:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11155:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11148:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11168:19:168","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":87615,"src":"11148:39:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":84523,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"11216:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11223:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11216:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84525,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11236:13:168","memberName":"maxValidators","nodeType":"MemberAccess","referencedDeclaration":87618,"src":"11216:33:168","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"expression":{"id":84526,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"11293:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11300:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11293:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11313:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"11293:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":84529,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84490,"src":"11386:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84530,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11393:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"11386:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11406:29:168","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"11386:49:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"},{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"},{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"},{"typeIdentifier":"t_struct$_ValidationSettingsView_$87695_memory_ptr","typeString":"struct Gear.ValidationSettingsView memory"},{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"},{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84505,"name":"StorageView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74457,"src":"10734:11:168","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_StorageView_$74457_storage_ptr_$","typeString":"type(struct IRouter.StorageView storage pointer)"}},"id":84532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10760:12:168","10807:20:168","10870:13:168","10919:18:168","10971:15:168","11024:9:168","11065:13:168","11127:19:168","11201:13:168","11263:28:168","11355:29:168"],"names":["genesisBlock","latestCommittedBatch","implAddresses","validationSettings","computeSettings","timelines","programsCount","validatedCodesCount","maxValidators","requestCodeValidationBaseFee","requestCodeValidationExtraFee"],"nodeType":"FunctionCall","src":"10734:712:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_memory_ptr","typeString":"struct IRouter.StorageView memory"}},"functionReturnParameters":84487,"id":84533,"nodeType":"Return","src":"10727:719:168"}]},"baseFunctions":[74643],"documentation":{"id":84482,"nodeType":"StructuredDocumentation","src":"10358:142:168","text":" @dev Returns the storage view of the contract storage.\n @return storageView The storage view of the contract storage."},"functionSelector":"c2eb812f","implemented":true,"kind":"function","modifiers":[],"name":"storageView","nameLocation":"10514:11:168","parameters":{"id":84483,"nodeType":"ParameterList","parameters":[],"src":"10525:2:168"},"returnParameters":{"id":84487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84535,"src":"10549:18:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_memory_ptr","typeString":"struct IRouter.StorageView"},"typeName":{"id":84485,"nodeType":"UserDefinedTypeName","pathNode":{"id":84484,"name":"StorageView","nameLocations":["10549:11:168"],"nodeType":"IdentifierPath","referencedDeclaration":74457,"src":"10549:11:168"},"referencedDeclaration":74457,"src":"10549:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_StorageView_$74457_storage_ptr","typeString":"struct IRouter.StorageView"}},"visibility":"internal"}],"src":"10548:20:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84547,"nodeType":"FunctionDefinition","src":"11589:109:168","nodes":[],"body":{"id":84546,"nodeType":"Block","src":"11647:51:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84541,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"11664:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11664:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84543,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11674:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"11664:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":84544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11687:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"11664:27:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":84540,"id":84545,"nodeType":"Return","src":"11657:34:168"}]},"baseFunctions":[74649],"documentation":{"id":84536,"nodeType":"StructuredDocumentation","src":"11459:125:168","text":" @dev Returns the hash of the genesis block.\n @return genesisBlockHash The hash of the genesis block."},"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"11598:16:168","parameters":{"id":84537,"nodeType":"ParameterList","parameters":[],"src":"11614:2:168"},"returnParameters":{"id":84540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84547,"src":"11638:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11638:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11637:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84559,"nodeType":"FunctionDefinition","src":"11844:113:168","nodes":[],"body":{"id":84558,"nodeType":"Block","src":"11901:56:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84553,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"11918:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11918:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11928:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"11918:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":84556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11941:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"11918:32:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":84552,"id":84557,"nodeType":"Return","src":"11911:39:168"}]},"baseFunctions":[74655],"documentation":{"id":84548,"nodeType":"StructuredDocumentation","src":"11704:135:168","text":" @dev Returns the timestamp of the genesis block.\n @return genesisTimestamp The timestamp of the genesis block."},"functionSelector":"cacf66ab","implemented":true,"kind":"function","modifiers":[],"name":"genesisTimestamp","nameLocation":"11853:16:168","parameters":{"id":84549,"nodeType":"ParameterList","parameters":[],"src":"11869:2:168"},"returnParameters":{"id":84552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84551,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84559,"src":"11893:6:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":84550,"name":"uint48","nodeType":"ElementaryTypeName","src":"11893:6:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"11892:8:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84571,"nodeType":"FunctionDefinition","src":"12119:125:168","nodes":[],"body":{"id":84570,"nodeType":"Block","src":"12185:59:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84565,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"12202:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12202:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12212:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"12202:30:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":84568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12233:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87559,"src":"12202:35:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":84564,"id":84569,"nodeType":"Return","src":"12195:42:168"}]},"baseFunctions":[74661],"documentation":{"id":84560,"nodeType":"StructuredDocumentation","src":"11963:151:168","text":" @dev Returns the hash of the latest committed batch.\n @return latestCommittedBatchHash The hash of the latest committed batch."},"functionSelector":"71a8cf2d","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBatchHash","nameLocation":"12128:24:168","parameters":{"id":84561,"nodeType":"ParameterList","parameters":[],"src":"12152:2:168"},"returnParameters":{"id":84564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84571,"src":"12176:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84562,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12176:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12175:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84583,"nodeType":"FunctionDefinition","src":"12421:134:168","nodes":[],"body":{"id":84582,"nodeType":"Block","src":"12491:64:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84577,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"12508:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12508:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12518:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"12508:30:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":84580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12539:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87561,"src":"12508:40:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":84576,"id":84581,"nodeType":"Return","src":"12501:47:168"}]},"baseFunctions":[74667],"documentation":{"id":84572,"nodeType":"StructuredDocumentation","src":"12250:166:168","text":" @dev Returns the timestamp of the latest committed batch.\n @return latestCommittedBatchTimestamp The timestamp of the latest committed batch."},"functionSelector":"d456fd51","implemented":true,"kind":"function","modifiers":[],"name":"latestCommittedBatchTimestamp","nameLocation":"12430:29:168","parameters":{"id":84573,"nodeType":"ParameterList","parameters":[],"src":"12459:2:168"},"returnParameters":{"id":84576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84583,"src":"12483:6:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":84574,"name":"uint48","nodeType":"ElementaryTypeName","src":"12483:6:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12482:8:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84595,"nodeType":"FunctionDefinition","src":"12707:106:168","nodes":[],"body":{"id":84594,"nodeType":"Block","src":"12759:54:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84589,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"12776:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12776:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12786:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"12776:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":84592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12800:6:168","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":87445,"src":"12776:30:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":84588,"id":84593,"nodeType":"Return","src":"12769:37:168"}]},"baseFunctions":[74673],"documentation":{"id":84584,"nodeType":"StructuredDocumentation","src":"12561:141:168","text":" @dev Returns the address of the mirror implementation.\n @return mirrorImpl The address of the mirror implementation."},"functionSelector":"e6fabc09","implemented":true,"kind":"function","modifiers":[],"name":"mirrorImpl","nameLocation":"12716:10:168","parameters":{"id":84585,"nodeType":"ParameterList","parameters":[],"src":"12726:2:168"},"returnParameters":{"id":84588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84595,"src":"12750:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84586,"name":"address","nodeType":"ElementaryTypeName","src":"12750:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12749:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84607,"nodeType":"FunctionDefinition","src":"12978:112:168","nodes":[],"body":{"id":84606,"nodeType":"Block","src":"13031:59:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84601,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"13048:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13048:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13058:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"13048:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":84604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13072:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"13048:35:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":84600,"id":84605,"nodeType":"Return","src":"13041:42:168"}]},"baseFunctions":[74679],"documentation":{"id":84596,"nodeType":"StructuredDocumentation","src":"12819:154:168","text":" @dev Returns the address of the wrapped Vara implementation.\n @return wrappedVara The address of the wrapped Vara implementation."},"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"12987:11:168","parameters":{"id":84597,"nodeType":"ParameterList","parameters":[],"src":"12998:2:168"},"returnParameters":{"id":84600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84607,"src":"13022:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84598,"name":"address","nodeType":"ElementaryTypeName","src":"13022:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13021:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84619,"nodeType":"FunctionDefinition","src":"13250:110:168","nodes":[],"body":{"id":84618,"nodeType":"Block","src":"13302:58:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84613,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"13319:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13319:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13329:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"13319:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":84616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13343:10:168","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":87451,"src":"13319:34:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":84612,"id":84617,"nodeType":"Return","src":"13312:41:168"}]},"baseFunctions":[74685],"documentation":{"id":84608,"nodeType":"StructuredDocumentation","src":"13096:149:168","text":" @dev Returns the address of the middleware implementation.\n @return middleware The address of the middleware implementation."},"functionSelector":"f4f20ac0","implemented":true,"kind":"function","modifiers":[],"name":"middleware","nameLocation":"13259:10:168","parameters":{"id":84609,"nodeType":"ParameterList","parameters":[],"src":"13269:2:168"},"returnParameters":{"id":84612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84619,"src":"13293:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84610,"name":"address","nodeType":"ElementaryTypeName","src":"13293:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13292:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84634,"nodeType":"FunctionDefinition","src":"13553:175:168","nodes":[],"body":{"id":84633,"nodeType":"Block","src":"13648:80:168","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84628,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"13691:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13691:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84626,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"13665:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13670:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"13665:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13665:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13702:19:168","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"13665:56:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"functionReturnParameters":84625,"id":84632,"nodeType":"Return","src":"13658:63:168"}]},"baseFunctions":[74692],"documentation":{"id":84620,"nodeType":"StructuredDocumentation","src":"13366:182:168","text":" @dev Returns the aggregated public key of the current validators.\n @return validatorsAggregatedPublicKey The aggregated public key of the current validators."},"functionSelector":"3bd109fa","implemented":true,"kind":"function","modifiers":[],"name":"validatorsAggregatedPublicKey","nameLocation":"13562:29:168","parameters":{"id":84621,"nodeType":"ParameterList","parameters":[],"src":"13591:2:168"},"returnParameters":{"id":84625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84634,"src":"13615:31:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":84623,"nodeType":"UserDefinedTypeName","pathNode":{"id":84622,"name":"Gear.AggregatedPublicKey","nameLocations":["13615:4:168","13620:19:168"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"13615:24:168"},"referencedDeclaration":87408,"src":"13615:24:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"}],"src":"13614:33:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84651,"nodeType":"FunctionDefinition","src":"14194:207:168","nodes":[],"body":{"id":84650,"nodeType":"Block","src":"14286:115:168","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84644,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"14342:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14342:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84642,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"14316:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14321:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"14316:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14316:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14353:40:168","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":87416,"src":"14316:77:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":84640,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89044,"src":"14303:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SSTORE2_$89044_$","typeString":"type(library SSTORE2)"}},"id":84641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14311:4:168","memberName":"read","nodeType":"MemberAccess","referencedDeclaration":89017,"src":"14303:12:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (address) view returns (bytes memory)"}},"id":84648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14303:91:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":84639,"id":84649,"nodeType":"Return","src":"14296:98:168"}]},"baseFunctions":[74698],"documentation":{"id":84635,"nodeType":"StructuredDocumentation","src":"13734:455:168","text":" @dev Returns the verifiable secret sharing commitment of the current validators.\n This is serialized `frost_core::keys::VerifiableSecretSharingCommitment` struct.\n See https://docs.rs/frost-core/latest/frost_core/keys/struct.VerifiableSecretSharingCommitment.html#method.serialize_whole.\n @return validatorsVerifiableSecretSharingCommitment The verifiable secret sharing commitment of the current validators."},"functionSelector":"a5d53a44","implemented":true,"kind":"function","modifiers":[],"name":"validatorsVerifiableSecretSharingCommitment","nameLocation":"14203:43:168","parameters":{"id":84636,"nodeType":"ParameterList","parameters":[],"src":"14246:2:168"},"returnParameters":{"id":84639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84651,"src":"14272:12:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":84637,"name":"bytes","nodeType":"ElementaryTypeName","src":"14272:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14271:14:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":84698,"nodeType":"FunctionDefinition","src":"14573:375:168","nodes":[],"body":{"id":84697,"nodeType":"Block","src":"14655:293:168","nodes":[],"statements":[{"assignments":[84664],"declarations":[{"constant":false,"id":84664,"mutability":"mutable","name":"_currentValidators","nameLocation":"14689:18:168","nodeType":"VariableDeclaration","scope":84697,"src":"14665:42:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":84663,"nodeType":"UserDefinedTypeName","pathNode":{"id":84662,"name":"Gear.Validators","nameLocations":["14665:4:168","14670:10:168"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"14665:15:168"},"referencedDeclaration":87429,"src":"14665:15:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":84670,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84667,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"14736:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14736:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84665,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"14710:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14715:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"14710:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14710:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"14665:81:168"},{"body":{"id":84693,"nodeType":"Block","src":"14806:114:168","statements":[{"condition":{"id":84688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14824:39:168","subExpression":{"baseExpression":{"expression":{"id":84682,"name":"_currentValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84664,"src":"14825:18:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14844:3:168","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"14825:22:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":84687,"indexExpression":{"baseExpression":{"id":84684,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84655,"src":"14848:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":84686,"indexExpression":{"id":84685,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84672,"src":"14860:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14848:14:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14825:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":84692,"nodeType":"IfStatement","src":"14820:90:168","trueBody":{"id":84691,"nodeType":"Block","src":"14865:45:168","statements":[{"expression":{"hexValue":"66616c7365","id":84689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14890:5:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":84659,"id":84690,"nodeType":"Return","src":"14883:12:168"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84675,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84672,"src":"14777:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":84676,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84655,"src":"14781:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":84677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14793:6:168","memberName":"length","nodeType":"MemberAccess","src":"14781:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14777:22:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":84694,"initializationExpression":{"assignments":[84672],"declarations":[{"constant":false,"id":84672,"mutability":"mutable","name":"i","nameLocation":"14770:1:168","nodeType":"VariableDeclaration","scope":84694,"src":"14762:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84671,"name":"uint256","nodeType":"ElementaryTypeName","src":"14762:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84674,"initialValue":{"hexValue":"30","id":84673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14774:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14762:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":84680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14801:3:168","subExpression":{"id":84679,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84672,"src":"14801:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84681,"nodeType":"ExpressionStatement","src":"14801:3:168"},"nodeType":"ForStatement","src":"14757:163:168"},{"expression":{"hexValue":"74727565","id":84695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14937:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":84659,"id":84696,"nodeType":"Return","src":"14930:11:168"}]},"baseFunctions":[74707],"documentation":{"id":84652,"nodeType":"StructuredDocumentation","src":"14407:161:168","text":" @dev Checks if the given addresses are all validators.\n @return areValidators `true` if all addresses are validators, `false` otherwise."},"functionSelector":"8f381dbe","implemented":true,"kind":"function","modifiers":[],"name":"areValidators","nameLocation":"14582:13:168","parameters":{"id":84656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84655,"mutability":"mutable","name":"_validators","nameLocation":"14615:11:168","nodeType":"VariableDeclaration","scope":84698,"src":"14596:30:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":84653,"name":"address","nodeType":"ElementaryTypeName","src":"14596:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":84654,"nodeType":"ArrayTypeName","src":"14596:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"14595:32:168"},"returnParameters":{"id":84659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84698,"src":"14649:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":84657,"name":"bool","nodeType":"ElementaryTypeName","src":"14649:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14648:6:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84716,"nodeType":"FunctionDefinition","src":"15110:144:168","nodes":[],"body":{"id":84715,"nodeType":"Block","src":"15178:76:168","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84708,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"15221:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15221:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84706,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"15195:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15200:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"15195:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15195:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84711,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15232:3:168","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"15195:40:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":84713,"indexExpression":{"id":84712,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84701,"src":"15236:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15195:52:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":84705,"id":84714,"nodeType":"Return","src":"15188:59:168"}]},"baseFunctions":[74715],"documentation":{"id":84699,"nodeType":"StructuredDocumentation","src":"14954:151:168","text":" @dev Checks if the given address is a validator.\n @return isValidator `true` if the address is a validator, `false` otherwise."},"functionSelector":"facd743b","implemented":true,"kind":"function","modifiers":[],"name":"isValidator","nameLocation":"15119:11:168","parameters":{"id":84702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84701,"mutability":"mutable","name":"_validator","nameLocation":"15139:10:168","nodeType":"VariableDeclaration","scope":84716,"src":"15131:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84700,"name":"address","nodeType":"ElementaryTypeName","src":"15131:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15130:20:168"},"returnParameters":{"id":84705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84716,"src":"15172:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":84703,"name":"bool","nodeType":"ElementaryTypeName","src":"15172:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15171:6:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84741,"nodeType":"FunctionDefinition","src":"15498:285:168","nodes":[],"body":{"id":84740,"nodeType":"Block","src":"15613:170:168","nodes":[],"statements":[{"assignments":[84728],"declarations":[{"constant":false,"id":84728,"mutability":"mutable","name":"router","nameLocation":"15647:6:168","nodeType":"VariableDeclaration","scope":84740,"src":"15623:30:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84727,"nodeType":"UserDefinedTypeName","pathNode":{"id":84726,"name":"IRouter.Storage","nameLocations":["15623:7:168","15631:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"15623:15:168"},"referencedDeclaration":74490,"src":"15623:15:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84731,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84729,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"15656:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15656:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15623:42:168"},{"expression":{"components":[{"expression":{"expression":{"id":84732,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84728,"src":"15683:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84733,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15690:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"15683:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15709:18:168","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"15683:44:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":84735,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84728,"src":"15729:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15736:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"15729:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15755:20:168","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"15729:46:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"id":84738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15682:94:168","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint128_$_t_uint128_$","typeString":"tuple(uint128,uint128)"}},"functionReturnParameters":84723,"id":84739,"nodeType":"Return","src":"15675:101:168"}]},"baseFunctions":[74723],"documentation":{"id":84717,"nodeType":"StructuredDocumentation","src":"15260:233:168","text":" @dev Returns the signing threshold fraction.\n @return thresholdNumerator The numerator of the signing threshold fraction.\n @return thresholdDenominator The denominator of the signing threshold fraction."},"functionSelector":"e3a6684f","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdFraction","nameLocation":"15507:24:168","parameters":{"id":84718,"nodeType":"ParameterList","parameters":[],"src":"15531:2:168"},"returnParameters":{"id":84723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84720,"mutability":"mutable","name":"thresholdNumerator","nameLocation":"15563:18:168","nodeType":"VariableDeclaration","scope":84741,"src":"15555:26:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":84719,"name":"uint128","nodeType":"ElementaryTypeName","src":"15555:7:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":84722,"mutability":"mutable","name":"thresholdDenominator","nameLocation":"15591:20:168","nodeType":"VariableDeclaration","scope":84741,"src":"15583:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":84721,"name":"uint128","nodeType":"ElementaryTypeName","src":"15583:7:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"15554:58:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84756,"nodeType":"FunctionDefinition","src":"15915:126:168","nodes":[],"body":{"id":84755,"nodeType":"Block","src":"15976:65:168","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84750,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"16019:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16019:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84748,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"15993:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15998:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"15993:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15993:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16030:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"15993:41:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":84747,"id":84754,"nodeType":"Return","src":"15986:48:168"}]},"baseFunctions":[74730],"documentation":{"id":84742,"nodeType":"StructuredDocumentation","src":"15789:121:168","text":" @dev Returns the list of current validators.\n @return validators The list of current validators."},"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"15924:10:168","parameters":{"id":84743,"nodeType":"ParameterList","parameters":[],"src":"15934:2:168"},"returnParameters":{"id":84747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84756,"src":"15958:16:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":84744,"name":"address","nodeType":"ElementaryTypeName","src":"15958:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":84745,"nodeType":"ArrayTypeName","src":"15958:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"15957:18:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84771,"nodeType":"FunctionDefinition","src":"16180:129:168","nodes":[],"body":{"id":84770,"nodeType":"Block","src":"16237:72:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":84764,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"16280:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16280:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84762,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"16254:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16259:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"16254:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16254:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16291:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"16254:41:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":84768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16296:6:168","memberName":"length","nodeType":"MemberAccess","src":"16254:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84761,"id":84769,"nodeType":"Return","src":"16247:55:168"}]},"baseFunctions":[74736],"documentation":{"id":84757,"nodeType":"StructuredDocumentation","src":"16047:128:168","text":" @dev Returns the count of current validators.\n @return validatorsCount The count of current validators."},"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"16189:15:168","parameters":{"id":84758,"nodeType":"ParameterList","parameters":[],"src":"16204:2:168"},"returnParameters":{"id":84761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84771,"src":"16228:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84759,"name":"uint256","nodeType":"ElementaryTypeName","src":"16228:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16227:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84802,"nodeType":"FunctionDefinition","src":"16510:348:168","nodes":[],"body":{"id":84801,"nodeType":"Block","src":"16571:287:168","nodes":[],"statements":[{"assignments":[84781],"declarations":[{"constant":false,"id":84781,"mutability":"mutable","name":"router","nameLocation":"16605:6:168","nodeType":"VariableDeclaration","scope":84801,"src":"16581:30:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84780,"nodeType":"UserDefinedTypeName","pathNode":{"id":84779,"name":"IRouter.Storage","nameLocations":["16581:7:168","16589:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"16581:15:168"},"referencedDeclaration":74490,"src":"16581:15:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84784,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84782,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"16614:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16614:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16581:42:168"},{"expression":{"arguments":[{"expression":{"expression":{"arguments":[{"id":84789,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84781,"src":"16704:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":84787,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"16678:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16683:20:168","memberName":"currentEraValidators","nodeType":"MemberAccess","referencedDeclaration":88307,"src":"16678:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":84790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16678:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":84791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16712:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"16678:38:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":84792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16717:6:168","memberName":"length","nodeType":"MemberAccess","src":"16678:45:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":84793,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84781,"src":"16737:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16744:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"16737:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16763:18:168","memberName":"thresholdNumerator","nodeType":"MemberAccess","referencedDeclaration":87674,"src":"16737:44:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":84796,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84781,"src":"16795:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16802:18:168","memberName":"validationSettings","nodeType":"MemberAccess","referencedDeclaration":74477,"src":"16795:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidationSettings_$87683_storage","typeString":"struct Gear.ValidationSettings storage ref"}},"id":84798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16821:20:168","memberName":"thresholdDenominator","nodeType":"MemberAccess","referencedDeclaration":87676,"src":"16795:46:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":84785,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"16640:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":84786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16645:19:168","memberName":"validatorsThreshold","nodeType":"MemberAccess","referencedDeclaration":88475,"src":"16640:24:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint128_$_t_uint128_$returns$_t_uint256_$","typeString":"function (uint256,uint128,uint128) pure returns (uint256)"}},"id":84799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16640:211:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84776,"id":84800,"nodeType":"Return","src":"16633:218:168"}]},"baseFunctions":[74742],"documentation":{"id":84772,"nodeType":"StructuredDocumentation","src":"16315:190:168","text":" @dev Returns the threshold number of validators required for a valid signature.\n @return threshold The threshold number of validators required for a valid signature."},"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"16519:19:168","parameters":{"id":84773,"nodeType":"ParameterList","parameters":[],"src":"16538:2:168"},"returnParameters":{"id":84776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84802,"src":"16562:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84774,"name":"uint256","nodeType":"ElementaryTypeName","src":"16562:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16561:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84816,"nodeType":"FunctionDefinition","src":"17030:122:168","nodes":[],"body":{"id":84815,"nodeType":"Block","src":"17114:38:168","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":84811,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"17131:5:168","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_RouterWithInstrumentation_$86997_$","typeString":"type(contract super RouterWithInstrumentation)"}},"id":84812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17137:6:168","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":43784,"src":"17131:12:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":84813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17131:14:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":84810,"id":84814,"nodeType":"Return","src":"17124:21:168"}]},"baseFunctions":[43784,74748],"documentation":{"id":84803,"nodeType":"StructuredDocumentation","src":"16864:161:168","text":" @dev Returns true if the contract is paused, and false otherwise.\n @return isPaused `true` if the contract is paused, `false` otherwise."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"17039:6:168","overrides":{"id":84807,"nodeType":"OverrideSpecifier","overrides":[{"id":84805,"name":"IRouter","nameLocations":["17069:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"17069:7:168"},{"id":84806,"name":"PausableUpgradeable","nameLocations":["17078:19:168"],"nodeType":"IdentifierPath","referencedDeclaration":43858,"src":"17078:19:168"}],"src":"17060:38:168"},"parameters":{"id":84804,"nodeType":"ParameterList","parameters":[],"src":"17045:2:168"},"returnParameters":{"id":84810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84816,"src":"17108:4:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":84808,"name":"bool","nodeType":"ElementaryTypeName","src":"17108:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17107:6:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84828,"nodeType":"FunctionDefinition","src":"17277:130:168","nodes":[],"body":{"id":84827,"nodeType":"Block","src":"17358:49:168","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84823,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"17375:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17375:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17385:15:168","memberName":"computeSettings","nodeType":"MemberAccess","referencedDeclaration":74481,"src":"17375:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage","typeString":"struct Gear.ComputationSettings storage ref"}},"functionReturnParameters":84822,"id":84826,"nodeType":"Return","src":"17368:32:168"}]},"baseFunctions":[74755],"documentation":{"id":84817,"nodeType":"StructuredDocumentation","src":"17158:114:168","text":" @dev Returns the computation settings.\n @return computeSettings The computation settings."},"functionSelector":"84d22a4f","implemented":true,"kind":"function","modifiers":[],"name":"computeSettings","nameLocation":"17286:15:168","parameters":{"id":84818,"nodeType":"ParameterList","parameters":[],"src":"17301:2:168"},"returnParameters":{"id":84822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84828,"src":"17325:31:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_memory_ptr","typeString":"struct Gear.ComputationSettings"},"typeName":{"id":84820,"nodeType":"UserDefinedTypeName","pathNode":{"id":84819,"name":"Gear.ComputationSettings","nameLocations":["17325:4:168","17330:19:168"],"nodeType":"IdentifierPath","referencedDeclaration":87568,"src":"17325:24:168"},"referencedDeclaration":87568,"src":"17325:24:168","typeDescriptions":{"typeIdentifier":"t_struct$_ComputationSettings_$87568_storage_ptr","typeString":"struct Gear.ComputationSettings"}},"visibility":"internal"}],"src":"17324:33:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84845,"nodeType":"FunctionDefinition","src":"17516:134:168","nodes":[],"body":{"id":84844,"nodeType":"Block","src":"17589:61:168","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84837,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"17606:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17606:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17616:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"17606:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17629:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"17606:28:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":84842,"indexExpression":{"id":84841,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84831,"src":"17635:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17606:37:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"functionReturnParameters":84836,"id":84843,"nodeType":"Return","src":"17599:44:168"}]},"baseFunctions":[74764],"documentation":{"id":84829,"nodeType":"StructuredDocumentation","src":"17413:98:168","text":" @dev Returns the state of code.\n @return codeState The state of the code."},"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"17525:9:168","parameters":{"id":84832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84831,"mutability":"mutable","name":"_codeId","nameLocation":"17543:7:168","nodeType":"VariableDeclaration","scope":84845,"src":"17535:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84830,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17535:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17534:17:168"},"returnParameters":{"id":84836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84845,"src":"17573:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"typeName":{"id":84834,"nodeType":"UserDefinedTypeName","pathNode":{"id":84833,"name":"Gear.CodeState","nameLocations":["17573:4:168","17578:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17573:14:168"},"referencedDeclaration":87556,"src":"17573:14:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"visibility":"internal"}],"src":"17572:16:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84904,"nodeType":"FunctionDefinition","src":"17774:378:168","nodes":[],"body":{"id":84903,"nodeType":"Block","src":"17871:281:168","nodes":[],"statements":[{"assignments":[84858],"declarations":[{"constant":false,"id":84858,"mutability":"mutable","name":"router","nameLocation":"17897:6:168","nodeType":"VariableDeclaration","scope":84903,"src":"17881:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84857,"nodeType":"UserDefinedTypeName","pathNode":{"id":84856,"name":"Storage","nameLocations":["17881:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"17881:7:168"},"referencedDeclaration":74490,"src":"17881:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84861,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84859,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"17906:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17906:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"17881:34:168"},{"assignments":[84867],"declarations":[{"constant":false,"id":84867,"mutability":"mutable","name":"res","nameLocation":"17950:3:168","nodeType":"VariableDeclaration","scope":84903,"src":"17926:27:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":84865,"nodeType":"UserDefinedTypeName","pathNode":{"id":84864,"name":"Gear.CodeState","nameLocations":["17926:4:168","17931:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17926:14:168"},"referencedDeclaration":87556,"src":"17926:14:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":84866,"nodeType":"ArrayTypeName","src":"17926:16:168","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"id":84875,"initialValue":{"arguments":[{"expression":{"id":84872,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84849,"src":"17977:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":84873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17987:6:168","memberName":"length","nodeType":"MemberAccess","src":"17977:16:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17956:20:168","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Gear.CodeState[] memory)"},"typeName":{"baseType":{"id":84869,"nodeType":"UserDefinedTypeName","pathNode":{"id":84868,"name":"Gear.CodeState","nameLocations":["17960:4:168","17965:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17960:14:168"},"referencedDeclaration":87556,"src":"17960:14:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":84870,"nodeType":"ArrayTypeName","src":"17960:16:168","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}}},"id":84874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17956:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17926:68:168"},{"body":{"id":84899,"nodeType":"Block","src":"18052:73:168","statements":[{"expression":{"id":84897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":84887,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84867,"src":"18066:3:168","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"id":84889,"indexExpression":{"id":84888,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84877,"src":"18070:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18066:6:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":84890,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84858,"src":"18075:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18082:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18075:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18095:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"18075:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":84896,"indexExpression":{"baseExpression":{"id":84893,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84849,"src":"18101:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":84895,"indexExpression":{"id":84894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84877,"src":"18111:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18101:12:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18075:39:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"18066:48:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":84898,"nodeType":"ExpressionStatement","src":"18066:48:168"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84880,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84877,"src":"18025:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":84881,"name":"_codesIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84849,"src":"18029:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":84882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18039:6:168","memberName":"length","nodeType":"MemberAccess","src":"18029:16:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18025:20:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":84900,"initializationExpression":{"assignments":[84877],"declarations":[{"constant":false,"id":84877,"mutability":"mutable","name":"i","nameLocation":"18018:1:168","nodeType":"VariableDeclaration","scope":84900,"src":"18010:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84876,"name":"uint256","nodeType":"ElementaryTypeName","src":"18010:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84879,"initialValue":{"hexValue":"30","id":84878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18022:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18010:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":84885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18047:3:168","subExpression":{"id":84884,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84877,"src":"18047:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84886,"nodeType":"ExpressionStatement","src":"18047:3:168"},"nodeType":"ForStatement","src":"18005:120:168"},{"expression":{"id":84901,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84867,"src":"18142:3:168","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[] memory"}},"functionReturnParameters":84855,"id":84902,"nodeType":"Return","src":"18135:10:168"}]},"baseFunctions":[74775],"documentation":{"id":84846,"nodeType":"StructuredDocumentation","src":"17656:113:168","text":" @dev Returns the states of multiple codes.\n @return codesStates The states of the codes."},"functionSelector":"82bdeaad","implemented":true,"kind":"function","modifiers":[],"name":"codesStates","nameLocation":"17783:11:168","parameters":{"id":84850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84849,"mutability":"mutable","name":"_codesIds","nameLocation":"17814:9:168","nodeType":"VariableDeclaration","scope":84904,"src":"17795:28:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":84847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17795:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":84848,"nodeType":"ArrayTypeName","src":"17795:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"17794:30:168"},"returnParameters":{"id":84855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84904,"src":"17846:23:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_memory_ptr","typeString":"enum Gear.CodeState[]"},"typeName":{"baseType":{"id":84852,"nodeType":"UserDefinedTypeName","pathNode":{"id":84851,"name":"Gear.CodeState","nameLocations":["17846:4:168","17851:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":87556,"src":"17846:14:168"},"referencedDeclaration":87556,"src":"17846:14:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":84853,"nodeType":"ArrayTypeName","src":"17846:16:168","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_CodeState_$87556_$dyn_storage_ptr","typeString":"enum Gear.CodeState[]"}},"visibility":"internal"}],"src":"17845:25:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84920,"nodeType":"FunctionDefinition","src":"18278:140:168","nodes":[],"body":{"id":84919,"nodeType":"Block","src":"18351:67:168","nodes":[],"statements":[{"expression":{"baseExpression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84912,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"18368:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18368:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18378:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18368:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18391:8:168","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"18368:31:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":84917,"indexExpression":{"id":84916,"name":"_programId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84907,"src":"18400:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18368:43:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":84911,"id":84918,"nodeType":"Return","src":"18361:50:168"}]},"baseFunctions":[74783],"documentation":{"id":84905,"nodeType":"StructuredDocumentation","src":"18158:115:168","text":" @dev Returns the code ID of the given program.\n @return codeId The code ID of the program."},"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"18287:13:168","parameters":{"id":84908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84907,"mutability":"mutable","name":"_programId","nameLocation":"18309:10:168","nodeType":"VariableDeclaration","scope":84920,"src":"18301:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84906,"name":"address","nodeType":"ElementaryTypeName","src":"18301:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18300:20:168"},"returnParameters":{"id":84911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84920,"src":"18342:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":84909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18342:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"18341:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84976,"nodeType":"FunctionDefinition","src":"18550:376:168","nodes":[],"body":{"id":84975,"nodeType":"Block","src":"18647:279:168","nodes":[],"statements":[{"assignments":[84932],"declarations":[{"constant":false,"id":84932,"mutability":"mutable","name":"router","nameLocation":"18673:6:168","nodeType":"VariableDeclaration","scope":84975,"src":"18657:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":84931,"nodeType":"UserDefinedTypeName","pathNode":{"id":84930,"name":"Storage","nameLocations":["18657:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"18657:7:168"},"referencedDeclaration":74490,"src":"18657:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":84935,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":84933,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"18682:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18682:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"18657:34:168"},{"assignments":[84940],"declarations":[{"constant":false,"id":84940,"mutability":"mutable","name":"res","nameLocation":"18719:3:168","nodeType":"VariableDeclaration","scope":84975,"src":"18702:20:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":84938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18702:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":84939,"nodeType":"ArrayTypeName","src":"18702:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":84947,"initialValue":{"arguments":[{"expression":{"id":84944,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84924,"src":"18739:12:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":84945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18752:6:168","memberName":"length","nodeType":"MemberAccess","src":"18739:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":84943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18725:13:168","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":84941,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18729:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":84942,"nodeType":"ArrayTypeName","src":"18729:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":84946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18725:34:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"18702:57:168"},{"body":{"id":84971,"nodeType":"Block","src":"18820:79:168","statements":[{"expression":{"id":84969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":84959,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84940,"src":"18834:3:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":84961,"indexExpression":{"id":84960,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84949,"src":"18838:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18834:6:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"expression":{"id":84962,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84932,"src":"18843:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18850:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"18843:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18863:8:168","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"18843:28:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":84968,"indexExpression":{"baseExpression":{"id":84965,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84924,"src":"18872:12:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":84967,"indexExpression":{"id":84966,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84949,"src":"18885:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18872:15:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18843:45:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18834:54:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":84970,"nodeType":"ExpressionStatement","src":"18834:54:168"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":84952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84949,"src":"18790:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":84953,"name":"_programsIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84924,"src":"18794:12:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":84954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18807:6:168","memberName":"length","nodeType":"MemberAccess","src":"18794:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18790:23:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":84972,"initializationExpression":{"assignments":[84949],"declarations":[{"constant":false,"id":84949,"mutability":"mutable","name":"i","nameLocation":"18783:1:168","nodeType":"VariableDeclaration","scope":84972,"src":"18775:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84948,"name":"uint256","nodeType":"ElementaryTypeName","src":"18775:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":84951,"initialValue":{"hexValue":"30","id":84950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18787:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18775:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":84957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18815:3:168","subExpression":{"id":84956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84949,"src":"18815:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":84958,"nodeType":"ExpressionStatement","src":"18815:3:168"},"nodeType":"ForStatement","src":"18770:129:168"},{"expression":{"id":84973,"name":"res","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84940,"src":"18916:3:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":84929,"id":84974,"nodeType":"Return","src":"18909:10:168"}]},"baseFunctions":[74793],"documentation":{"id":84921,"nodeType":"StructuredDocumentation","src":"18424:121:168","text":" @dev Returns the code IDs of the given programs.\n @return codesIds The code IDs of the programs."},"functionSelector":"baaf0201","implemented":true,"kind":"function","modifiers":[],"name":"programsCodeIds","nameLocation":"18559:15:168","parameters":{"id":84925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84924,"mutability":"mutable","name":"_programsIds","nameLocation":"18594:12:168","nodeType":"VariableDeclaration","scope":84976,"src":"18575:31:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":84922,"name":"address","nodeType":"ElementaryTypeName","src":"18575:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":84923,"nodeType":"ArrayTypeName","src":"18575:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"18574:33:168"},"returnParameters":{"id":84929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84976,"src":"18629:16:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":84926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18629:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":84927,"nodeType":"ArrayTypeName","src":"18629:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"18628:18:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":84988,"nodeType":"FunctionDefinition","src":"19043:115:168","nodes":[],"body":{"id":84987,"nodeType":"Block","src":"19098:60:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84982,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"19115:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19115:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84984,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19125:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19115:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19138:13:168","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":87612,"src":"19115:36:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84981,"id":84986,"nodeType":"Return","src":"19108:43:168"}]},"baseFunctions":[74799],"documentation":{"id":84977,"nodeType":"StructuredDocumentation","src":"18932:106:168","text":" @dev Returns the count of programs.\n @return programsCount The count of programs."},"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"19052:13:168","parameters":{"id":84978,"nodeType":"ParameterList","parameters":[],"src":"19065:2:168"},"returnParameters":{"id":84981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":84988,"src":"19089:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84979,"name":"uint256","nodeType":"ElementaryTypeName","src":"19089:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19088:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":85000,"nodeType":"FunctionDefinition","src":"19295:127:168","nodes":[],"body":{"id":84999,"nodeType":"Block","src":"19356:66:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":84994,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"19373:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":84995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19373:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":84996,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19383:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19373:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":84997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19396:19:168","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":87615,"src":"19373:42:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":84993,"id":84998,"nodeType":"Return","src":"19366:49:168"}]},"baseFunctions":[74805],"documentation":{"id":84989,"nodeType":"StructuredDocumentation","src":"19164:126:168","text":" @dev Returns the count of validated codes.\n @return validatedCodesCount The count of validated codes."},"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"19304:19:168","parameters":{"id":84990,"nodeType":"ParameterList","parameters":[],"src":"19323:2:168"},"returnParameters":{"id":84993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85000,"src":"19347:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84991,"name":"uint256","nodeType":"ElementaryTypeName","src":"19347:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19346:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":85012,"nodeType":"FunctionDefinition","src":"19619:147:168","nodes":[],"body":{"id":85011,"nodeType":"Block","src":"19691:75:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85006,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"19708:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19708:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19718:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"19708:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19731:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"19708:51:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":85005,"id":85010,"nodeType":"Return","src":"19701:58:168"}]},"baseFunctions":[74811],"documentation":{"id":85001,"nodeType":"StructuredDocumentation","src":"19428:186:168","text":" @dev Returns the base fee for requesting code validation in WVARA ERC20 token.\n @return requestCodeValidationBaseFee The base fee for requesting code validation."},"functionSelector":"188509e9","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidationBaseFee","nameLocation":"19628:28:168","parameters":{"id":85002,"nodeType":"ParameterList","parameters":[],"src":"19656:2:168"},"returnParameters":{"id":85005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85004,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85012,"src":"19682:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85003,"name":"uint256","nodeType":"ElementaryTypeName","src":"19682:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19681:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":85024,"nodeType":"FunctionDefinition","src":"20018:149:168","nodes":[],"body":{"id":85023,"nodeType":"Block","src":"20091:76:168","nodes":[],"statements":[{"expression":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85018,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"20108:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20108:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20118:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"20108:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20131:29:168","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"20108:52:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":85017,"id":85022,"nodeType":"Return","src":"20101:59:168"}]},"baseFunctions":[74817],"documentation":{"id":85013,"nodeType":"StructuredDocumentation","src":"19772:241:168","text":" @dev Returns the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\n @return requestCodeValidationExtraFee The extra fee for requesting code validation on behalf of someone else."},"functionSelector":"f1ef31ec","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidationExtraFee","nameLocation":"20027:29:168","parameters":{"id":85014,"nodeType":"ParameterList","parameters":[],"src":"20056:2:168"},"returnParameters":{"id":85017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85024,"src":"20082:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85015,"name":"uint256","nodeType":"ElementaryTypeName","src":"20082:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20081:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":85036,"nodeType":"FunctionDefinition","src":"20264:108:168","nodes":[],"body":{"id":85035,"nodeType":"Block","src":"20329:43:168","nodes":[],"statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85031,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"20346:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20346:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20356:9:168","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"20346:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"functionReturnParameters":85030,"id":85034,"nodeType":"Return","src":"20339:26:168"}]},"baseFunctions":[74824],"documentation":{"id":85025,"nodeType":"StructuredDocumentation","src":"20173:86:168","text":" @dev Returns the timelines.\n @return timelines The timelines."},"functionSelector":"9eb939a8","implemented":true,"kind":"function","modifiers":[],"name":"timelines","nameLocation":"20273:9:168","parameters":{"id":85026,"nodeType":"ParameterList","parameters":[],"src":"20282:2:168"},"returnParameters":{"id":85030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85029,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85036,"src":"20306:21:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_memory_ptr","typeString":"struct Gear.Timelines"},"typeName":{"id":85028,"nodeType":"UserDefinedTypeName","pathNode":{"id":85027,"name":"Gear.Timelines","nameLocations":["20306:4:168","20311:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":87671,"src":"20306:14:168"},"referencedDeclaration":87671,"src":"20306:14:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage_ptr","typeString":"struct Gear.Timelines"}},"visibility":"internal"}],"src":"20305:23:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":85046,"nodeType":"FunctionDefinition","src":"20546:104:168","nodes":[],"body":{"id":85045,"nodeType":"Block","src":"20606:44:168","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85042,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44179,"src":"20623:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":85043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20623:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":85041,"id":85044,"nodeType":"Return","src":"20616:27:168"}]},"baseFunctions":[74830],"documentation":{"id":85037,"nodeType":"StructuredDocumentation","src":"20378:163:168","text":" @dev Returns the EIP-712 domain separator for `IRouter.requestCodeValidationOnBehalf(...)`.\n @return domainSeparator The domain separator."},"functionSelector":"3644e515","implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"20555:16:168","parameters":{"id":85038,"nodeType":"ParameterList","parameters":[],"src":"20571:2:168"},"returnParameters":{"id":85041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85046,"src":"20597:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85039,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20597:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20596:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":85062,"nodeType":"FunctionDefinition","src":"20814:116:168","nodes":[],"body":{"id":85061,"nodeType":"Block","src":"20871:59:168","nodes":[],"statements":[{"expression":{"id":85059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85054,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"20881:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20881:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20891:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"20881:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":85057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20905:6:168","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":87445,"src":"20881:30:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":85058,"name":"newMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85049,"src":"20914:9:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"20881:42:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":85060,"nodeType":"ExpressionStatement","src":"20881:42:168"}]},"baseFunctions":[74836],"documentation":{"id":85047,"nodeType":"StructuredDocumentation","src":"20681:128:168","text":" @dev Sets the `Mirror` implementation address.\n @param newMirror The new mirror implementation address."},"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":85052,"kind":"modifierInvocation","modifierName":{"id":85051,"name":"onlyOwner","nameLocations":["20861:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"20861:9:168"},"nodeType":"ModifierInvocation","src":"20861:9:168"}],"name":"setMirror","nameLocation":"20823:9:168","parameters":{"id":85050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85049,"mutability":"mutable","name":"newMirror","nameLocation":"20841:9:168","nodeType":"VariableDeclaration","scope":85062,"src":"20833:17:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85048,"name":"address","nodeType":"ElementaryTypeName","src":"20833:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"20832:19:168"},"returnParameters":{"id":85053,"nodeType":"ParameterList","parameters":[],"src":"20871:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85078,"nodeType":"FunctionDefinition","src":"21109:161:168","nodes":[],"body":{"id":85077,"nodeType":"Block","src":"21189:81:168","nodes":[],"statements":[{"expression":{"id":85075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85070,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"21199:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21199:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21209:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"21199:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21222:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"21199:51:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":85074,"name":"newBaseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85065,"src":"21253:10:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21199:64:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":85076,"nodeType":"ExpressionStatement","src":"21199:64:168"}]},"baseFunctions":[74842],"documentation":{"id":85063,"nodeType":"StructuredDocumentation","src":"20936:168:168","text":" @dev Sets the base fee for requesting code validation in WVARA ERC20 token.\n @param newBaseFee The new base fee for requesting code validation."},"functionSelector":"11bec80d","implemented":true,"kind":"function","modifiers":[{"id":85068,"kind":"modifierInvocation","modifierName":{"id":85067,"name":"onlyOwner","nameLocations":["21179:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21179:9:168"},"nodeType":"ModifierInvocation","src":"21179:9:168"}],"name":"setRequestCodeValidationBaseFee","nameLocation":"21118:31:168","parameters":{"id":85066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85065,"mutability":"mutable","name":"newBaseFee","nameLocation":"21158:10:168","nodeType":"VariableDeclaration","scope":85078,"src":"21150:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85064,"name":"uint256","nodeType":"ElementaryTypeName","src":"21150:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21149:20:168"},"returnParameters":{"id":85069,"nodeType":"ParameterList","parameters":[],"src":"21189:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85094,"nodeType":"FunctionDefinition","src":"21504:165:168","nodes":[],"body":{"id":85093,"nodeType":"Block","src":"21586:83:168","nodes":[],"statements":[{"expression":{"id":85091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85086,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"21596:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21596:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21606:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"21596:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21619:29:168","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"21596:52:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":85090,"name":"newExtraFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85081,"src":"21651:11:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21596:66:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":85092,"nodeType":"ExpressionStatement","src":"21596:66:168"}]},"baseFunctions":[74848],"documentation":{"id":85079,"nodeType":"StructuredDocumentation","src":"21276:223:168","text":" @dev Sets the extra fee for requesting code validation on behalf of someone else in WVARA ERC20 token.\n @param newExtraFee The new extra fee for requesting code validation on behalf of someone else."},"functionSelector":"0b9737ce","implemented":true,"kind":"function","modifiers":[{"id":85084,"kind":"modifierInvocation","modifierName":{"id":85083,"name":"onlyOwner","nameLocations":["21576:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21576:9:168"},"nodeType":"ModifierInvocation","src":"21576:9:168"}],"name":"setRequestCodeValidationExtraFee","nameLocation":"21513:32:168","parameters":{"id":85082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85081,"mutability":"mutable","name":"newExtraFee","nameLocation":"21554:11:168","nodeType":"VariableDeclaration","scope":85094,"src":"21546:19:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85080,"name":"uint256","nodeType":"ElementaryTypeName","src":"21546:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21545:21:168"},"returnParameters":{"id":85085,"nodeType":"ParameterList","parameters":[],"src":"21586:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85104,"nodeType":"FunctionDefinition","src":"21724:59:168","nodes":[],"body":{"id":85103,"nodeType":"Block","src":"21758:25:168","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85100,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43833,"src":"21768:6:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":85101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21768:8:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85102,"nodeType":"ExpressionStatement","src":"21768:8:168"}]},"baseFunctions":[74852],"documentation":{"id":85095,"nodeType":"StructuredDocumentation","src":"21675:44:168","text":" @dev Pauses the contract."},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"id":85098,"kind":"modifierInvocation","modifierName":{"id":85097,"name":"onlyOwner","nameLocations":["21748:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21748:9:168"},"nodeType":"ModifierInvocation","src":"21748:9:168"}],"name":"pause","nameLocation":"21733:5:168","parameters":{"id":85096,"nodeType":"ParameterList","parameters":[],"src":"21738:2:168"},"returnParameters":{"id":85099,"nodeType":"ParameterList","parameters":[],"src":"21758:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":85114,"nodeType":"FunctionDefinition","src":"21840:63:168","nodes":[],"body":{"id":85113,"nodeType":"Block","src":"21876:27:168","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":85110,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43857,"src":"21886:8:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":85111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21886:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85112,"nodeType":"ExpressionStatement","src":"21886:10:168"}]},"baseFunctions":[74856],"documentation":{"id":85105,"nodeType":"StructuredDocumentation","src":"21789:46:168","text":" @dev Unpauses the contract."},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"id":85108,"kind":"modifierInvocation","modifierName":{"id":85107,"name":"onlyOwner","nameLocations":["21866:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"21866:9:168"},"nodeType":"ModifierInvocation","src":"21866:9:168"}],"name":"unpause","nameLocation":"21849:7:168","parameters":{"id":85106,"nodeType":"ParameterList","parameters":[],"src":"21856:2:168"},"returnParameters":{"id":85109,"nodeType":"ParameterList","parameters":[],"src":"21876:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":85169,"nodeType":"FunctionDefinition","src":"22004:385:168","nodes":[],"body":{"id":85168,"nodeType":"Block","src":"22042:347:168","nodes":[],"statements":[{"assignments":[85120],"declarations":[{"constant":false,"id":85120,"mutability":"mutable","name":"router","nameLocation":"22068:6:168","nodeType":"VariableDeclaration","scope":85168,"src":"22052:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":85119,"nodeType":"UserDefinedTypeName","pathNode":{"id":85118,"name":"Storage","nameLocations":["22052:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"22052:7:168"},"referencedDeclaration":74490,"src":"22052:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":85123,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":85121,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"22077:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22077:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"22052:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85125,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85120,"src":"22105:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22112:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22105:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22125:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"22105:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":85130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22141:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22133:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":85128,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22133:7:168","typeDescriptions":{}}},"id":85131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22133:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22105:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85133,"name":"GenesisHashAlreadySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74553,"src":"22145:21:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22145:23:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85124,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"22097:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22097:72:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85136,"nodeType":"ExpressionStatement","src":"22097:72:168"},{"assignments":[85138],"declarations":[{"constant":false,"id":85138,"mutability":"mutable","name":"genesisHash","nameLocation":"22188:11:168","nodeType":"VariableDeclaration","scope":85168,"src":"22180:19:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85137,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22180:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85144,"initialValue":{"arguments":[{"expression":{"expression":{"id":85140,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85120,"src":"22212:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22219:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22212:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85142,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22232:6:168","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":87573,"src":"22212:26:168","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":85139,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22202:9:168","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":85143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22202:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"22180:59:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85146,"name":"genesisHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85138,"src":"22258:11:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":85149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22281:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22273:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":85147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22273:7:168","typeDescriptions":{}}},"id":85150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22273:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22258:25:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85152,"name":"GenesisHashNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74556,"src":"22285:19:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22285:21:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85145,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"22250:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22250:57:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85155,"nodeType":"ExpressionStatement","src":"22250:57:168"},{"expression":{"id":85166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":85156,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85120,"src":"22318:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22325:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22318:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"22338:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"22318:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"expression":{"id":85162,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85120,"src":"22355:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85163,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22362:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"22355:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22375:6:168","memberName":"number","nodeType":"MemberAccess","referencedDeclaration":87573,"src":"22355:26:168","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":85161,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"22345:9:168","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":85165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22345:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"22318:64:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":85167,"nodeType":"ExpressionStatement","src":"22318:64:168"}]},"baseFunctions":[74860],"documentation":{"id":85115,"nodeType":"StructuredDocumentation","src":"21928:71:168","text":" @dev Looks up the genesis hash from previous blocks."},"functionSelector":"8b1edf1e","implemented":true,"kind":"function","modifiers":[],"name":"lookupGenesisHash","nameLocation":"22013:17:168","parameters":{"id":85116,"nodeType":"ParameterList","parameters":[],"src":"22030:2:168"},"returnParameters":{"id":85117,"nodeType":"ParameterList","parameters":[],"src":"22042:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85298,"nodeType":"FunctionDefinition","src":"23251:986:168","nodes":[],"body":{"id":85297,"nodeType":"Block","src":"23395:842:168","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":85187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23422:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85186,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"23413:8:168","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":85188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23413:11:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":85189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23428:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23413:16:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85191,"name":"BlobNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"23431:12:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23431:14:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85185,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23405:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23405:41:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85194,"nodeType":"ExpressionStatement","src":"23405:41:168"},{"assignments":[85197],"declarations":[{"constant":false,"id":85197,"mutability":"mutable","name":"router","nameLocation":"23473:6:168","nodeType":"VariableDeclaration","scope":85297,"src":"23457:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":85196,"nodeType":"UserDefinedTypeName","pathNode":{"id":85195,"name":"Storage","nameLocations":["23457:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"23457:7:168"},"referencedDeclaration":74490,"src":"23457:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":85200,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":85198,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"23482:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23482:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"23457:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85202,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85197,"src":"23509:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23516:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"23509:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23529:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"23509:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":85207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23545:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23537:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":85205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23537:7:168","typeDescriptions":{}}},"id":85208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23537:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"23509:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85210,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"23549:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23549:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85201,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23501:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23501:82:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85213,"nodeType":"ExpressionStatement","src":"23501:82:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":85223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":85215,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85197,"src":"23602:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23609:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23602:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23622:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"23602:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":85219,"indexExpression":{"id":85218,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85172,"src":"23628:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23602:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":85220,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"23640:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":85221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23645:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"23640:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":85222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23655:7:168","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":87551,"src":"23640:22:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"23602:60:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85224,"name":"CodeAlreadyOnValidationOrValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74565,"src":"23664:34:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23664:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85214,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23594:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23594:107:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85227,"nodeType":"ExpressionStatement","src":"23594:107:168"},{"assignments":[85230],"declarations":[{"constant":false,"id":85230,"mutability":"mutable","name":"_wrappedVara","nameLocation":"23725:12:168","nodeType":"VariableDeclaration","scope":85297,"src":"23712:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":85229,"nodeType":"UserDefinedTypeName","pathNode":{"id":85228,"name":"IWrappedVara","nameLocations":["23712:12:168"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"23712:12:168"},"referencedDeclaration":75001,"src":"23712:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":85236,"initialValue":{"arguments":[{"expression":{"expression":{"id":85232,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85197,"src":"23753:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23760:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"23753:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":85234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23774:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"23753:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85231,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"23740:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":85235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23740:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"23712:74:168"},{"assignments":[85238],"declarations":[{"constant":false,"id":85238,"mutability":"mutable","name":"baseFee","nameLocation":"23805:7:168","nodeType":"VariableDeclaration","scope":85297,"src":"23797:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85237,"name":"uint256","nodeType":"ElementaryTypeName","src":"23797:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":85242,"initialValue":{"expression":{"expression":{"id":85239,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85197,"src":"23815:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23822:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"23815:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23835:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"23815:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23797:66:168"},{"clauses":[{"block":{"id":85257,"nodeType":"Block","src":"23956:2:168","statements":[]},"errorName":"","id":85258,"nodeType":"TryCatchClause","src":"23956:2:168"},{"block":{"id":85259,"nodeType":"Block","src":"23965:2:168","statements":[]},"errorName":"","id":85260,"nodeType":"TryCatchClause","src":"23959:8:168"}],"externalCall":{"arguments":[{"expression":{"id":85245,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"23897:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23901:6:168","memberName":"sender","nodeType":"MemberAccess","src":"23897:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85249,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23917:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23909:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85247,"name":"address","nodeType":"ElementaryTypeName","src":"23909:7:168","typeDescriptions":{}}},"id":85250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23909:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85251,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85238,"src":"23924:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85252,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85174,"src":"23933:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85253,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85176,"src":"23944:2:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":85254,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85178,"src":"23948:2:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85255,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85180,"src":"23952:2:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":85243,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85230,"src":"23877:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23890:6:168","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"23877:19:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":85256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23877:78:168","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85261,"nodeType":"TryStatement","src":"23873:94:168"},{"assignments":[85263],"declarations":[{"constant":false,"id":85263,"mutability":"mutable","name":"success","nameLocation":"23981:7:168","nodeType":"VariableDeclaration","scope":85297,"src":"23976:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":85262,"name":"bool","nodeType":"ElementaryTypeName","src":"23976:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":85274,"initialValue":{"arguments":[{"expression":{"id":85266,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24017:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24021:6:168","memberName":"sender","nodeType":"MemberAccess","src":"24017:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85270,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24037:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24029:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85268,"name":"address","nodeType":"ElementaryTypeName","src":"24029:7:168","typeDescriptions":{}}},"id":85271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24029:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85272,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85238,"src":"24044:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":85264,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85230,"src":"23991:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24004:12:168","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"23991:25:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":85273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23991:61:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"23976:76:168"},{"expression":{"arguments":[{"id":85276,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85263,"src":"24070:7:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85277,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"24079:18:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24079:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85275,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24062:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24062:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85280,"nodeType":"ExpressionStatement","src":"24062:38:168"},{"expression":{"id":85291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":85281,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85197,"src":"24111:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24118:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"24111:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85286,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"24131:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"24111:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":85287,"indexExpression":{"id":85284,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85172,"src":"24137:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"24111:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":85288,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"24148:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":85289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24153:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"24148:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":85290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"24163:19:168","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":87553,"src":"24148:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"24111:71:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":85292,"nodeType":"ExpressionStatement","src":"24111:71:168"},{"eventCall":{"arguments":[{"id":85294,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85172,"src":"24222:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":85293,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74512,"src":"24198:23:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":85295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24198:32:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85296,"nodeType":"EmitStatement","src":"24193:37:168"}]},"baseFunctions":[74874],"documentation":{"id":85170,"nodeType":"StructuredDocumentation","src":"22395:851:168","text":" @dev Requests code validation for the given code ID.\n This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar\n attached to it containing WASM bytecode. On EVM, we can only verify that there was\n at least 1 blobhash in a transaction.\n Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee()`\n in the WVARA ERC20 token.\n @param _codeId The expected code ID for which the validation is requested.\n It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter."},"functionSelector":"8c4ace6a","implemented":true,"kind":"function","modifiers":[{"id":85183,"kind":"modifierInvocation","modifierName":{"id":85182,"name":"whenNotPaused","nameLocations":["23377:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"23377:13:168"},"nodeType":"ModifierInvocation","src":"23377:13:168"}],"name":"requestCodeValidation","nameLocation":"23260:21:168","parameters":{"id":85181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85172,"mutability":"mutable","name":"_codeId","nameLocation":"23290:7:168","nodeType":"VariableDeclaration","scope":85298,"src":"23282:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85171,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23282:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85174,"mutability":"mutable","name":"_deadline","nameLocation":"23307:9:168","nodeType":"VariableDeclaration","scope":85298,"src":"23299:17:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85173,"name":"uint256","nodeType":"ElementaryTypeName","src":"23299:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85176,"mutability":"mutable","name":"_v","nameLocation":"23324:2:168","nodeType":"VariableDeclaration","scope":85298,"src":"23318:8:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":85175,"name":"uint8","nodeType":"ElementaryTypeName","src":"23318:5:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":85178,"mutability":"mutable","name":"_r","nameLocation":"23336:2:168","nodeType":"VariableDeclaration","scope":85298,"src":"23328:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85177,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23328:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85180,"mutability":"mutable","name":"_s","nameLocation":"23348:2:168","nodeType":"VariableDeclaration","scope":85298,"src":"23340:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85179,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23340:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23281:70:168"},"returnParameters":{"id":85184,"nodeType":"ParameterList","parameters":[],"src":"23395:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85564,"nodeType":"FunctionDefinition","src":"25744:2418:168","nodes":[],"body":{"id":85563,"nodeType":"Block","src":"26054:2108:168","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":85327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26081:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85326,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26072:8:168","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":85328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26072:11:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":85329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26087:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26072:16:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85331,"name":"BlobNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"26090:12:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26090:14:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85325,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26064:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26064:41:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85334,"nodeType":"ExpressionStatement","src":"26064:41:168"},{"assignments":[85337],"declarations":[{"constant":false,"id":85337,"mutability":"mutable","name":"router","nameLocation":"26132:6:168","nodeType":"VariableDeclaration","scope":85563,"src":"26116:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":85336,"nodeType":"UserDefinedTypeName","pathNode":{"id":85335,"name":"Storage","nameLocations":["26116:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"26116:7:168"},"referencedDeclaration":74490,"src":"26116:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":85340,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":85338,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"26141:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26141:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"26116:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85342,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85337,"src":"26168:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26175:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"26168:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26188:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"26168:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":85347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26204:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26196:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":85345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26196:7:168","typeDescriptions":{}}},"id":85348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26196:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26168:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85350,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"26208:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26208:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85341,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26160:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26160:82:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85353,"nodeType":"ExpressionStatement","src":"26160:82:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":85363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":85355,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85337,"src":"26261:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26268:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"26261:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26281:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"26261:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":85359,"indexExpression":{"id":85358,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85303,"src":"26287:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26261:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":85360,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"26299:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":85361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26304:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"26299:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":85362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26314:7:168","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":87551,"src":"26299:22:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"26261:60:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85364,"name":"CodeAlreadyOnValidationOrValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74565,"src":"26323:34:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26323:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85354,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26253:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26253:107:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85367,"nodeType":"ExpressionStatement","src":"26253:107:168"},{"assignments":[85369],"declarations":[{"constant":false,"id":85369,"mutability":"mutable","name":"_blobHashesLength","nameLocation":"26379:17:168","nodeType":"VariableDeclaration","scope":85563,"src":"26371:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85368,"name":"uint256","nodeType":"ElementaryTypeName","src":"26371:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":85371,"initialValue":{"hexValue":"30","id":85370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26399:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26371:29:168"},{"body":{"id":85387,"nodeType":"Block","src":"26423:142:168","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":85374,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85369,"src":"26450:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":85373,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26441:8:168","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":85375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26441:27:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":85378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26480:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26472:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":85376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26472:7:168","typeDescriptions":{}}},"id":85379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26472:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26441:41:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":85383,"nodeType":"IfStatement","src":"26437:85:168","trueBody":{"id":85382,"nodeType":"Block","src":"26484:38:168","statements":[{"id":85381,"nodeType":"Break","src":"26502:5:168"}]}},{"expression":{"id":85385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26535:19:168","subExpression":{"id":85384,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85369,"src":"26535:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":85386,"nodeType":"ExpressionStatement","src":"26535:19:168"}]},"condition":{"hexValue":"74727565","id":85372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26417:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":85388,"nodeType":"WhileStatement","src":"26410:155:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":85393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":85390,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85306,"src":"26583:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":85391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26595:6:168","memberName":"length","nodeType":"MemberAccess","src":"26583:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":85392,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85369,"src":"26605:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26583:39:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":85395,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85306,"src":"26648:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":85396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26660:6:168","memberName":"length","nodeType":"MemberAccess","src":"26648:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85397,"name":"_blobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85369,"src":"26668:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":85394,"name":"InvalidBlobHashesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74572,"src":"26624:23:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":85398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26624:62:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85389,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26575:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26575:112:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85400,"nodeType":"ExpressionStatement","src":"26575:112:168"},{"body":{"id":85433,"nodeType":"Block","src":"26747:174:168","statements":[{"assignments":[85413],"declarations":[{"constant":false,"id":85413,"mutability":"mutable","name":"expectedBlobHash","nameLocation":"26769:16:168","nodeType":"VariableDeclaration","scope":85433,"src":"26761:24:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85412,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26761:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85417,"initialValue":{"arguments":[{"id":85415,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85402,"src":"26797:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":85414,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"26788:8:168","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":85416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26788:11:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"26761:38:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":85419,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85306,"src":"26821:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":85421,"indexExpression":{"id":85420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85402,"src":"26833:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26821:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":85422,"name":"expectedBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85413,"src":"26839:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"26821:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":85425,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85402,"src":"26873:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":85426,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85306,"src":"26876:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":85428,"indexExpression":{"id":85427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85402,"src":"26888:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26876:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85429,"name":"expectedBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85413,"src":"26892:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":85424,"name":"InvalidBlobHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74581,"src":"26857:15:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$_t_error_$","typeString":"function (uint256,bytes32,bytes32) pure returns (error)"}},"id":85430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26857:52:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85418,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26813:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26813:97:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85432,"nodeType":"ExpressionStatement","src":"26813:97:168"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":85408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85405,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85402,"src":"26718:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":85406,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85306,"src":"26722:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}},"id":85407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26734:6:168","memberName":"length","nodeType":"MemberAccess","src":"26722:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26718:22:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":85434,"initializationExpression":{"assignments":[85402],"declarations":[{"constant":false,"id":85402,"mutability":"mutable","name":"i","nameLocation":"26711:1:168","nodeType":"VariableDeclaration","scope":85434,"src":"26703:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85401,"name":"uint256","nodeType":"ElementaryTypeName","src":"26703:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":85404,"initialValue":{"hexValue":"30","id":85403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26715:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26703:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":85410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26742:3:168","subExpression":{"id":85409,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85402,"src":"26742:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":85411,"nodeType":"ExpressionStatement","src":"26742:3:168"},"nodeType":"ForStatement","src":"26698:223:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":85439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":85436,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"26997:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":85437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27003:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"26997:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":85438,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85308,"src":"27016:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26997:28:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":85441,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85308,"src":"27044:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":85440,"name":"ExpiredSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74586,"src":"27027:16:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":85442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27027:27:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85435,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"26989:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26989:66:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85444,"nodeType":"ExpressionStatement","src":"26989:66:168"},{"assignments":[85446],"declarations":[{"constant":false,"id":85446,"mutability":"mutable","name":"structHash","nameLocation":"27074:10:168","nodeType":"VariableDeclaration","scope":85563,"src":"27066:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27066:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85465,"initialValue":{"arguments":[{"arguments":[{"id":85450,"name":"REQUEST_CODE_VALIDATION_ON_BEHALF_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84154,"src":"27138:42:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85451,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85301,"src":"27198:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85452,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85303,"src":"27226:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"id":85456,"name":"_blobHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85306,"src":"27278:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[] calldata"}],"expression":{"id":85454,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27261:3:168","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":85455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27265:12:168","memberName":"encodePacked","nodeType":"MemberAccess","src":"27261:16:168","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":85457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27261:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":85453,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"27251:9:168","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":85458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27251:40:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":85460,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85301,"src":"27319:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85459,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43672,"src":"27309:9:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":85461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27309:21:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85462,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85308,"src":"27348:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":85448,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"27110:3:168","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":85449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"27114:6:168","memberName":"encode","nodeType":"MemberAccess","src":"27110:10:168","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":85463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27110:261:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":85447,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"27087:9:168","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":85464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27087:294:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27066:315:168"},{"assignments":[85467],"declarations":[{"constant":false,"id":85467,"mutability":"mutable","name":"hash","nameLocation":"27400:4:168","nodeType":"VariableDeclaration","scope":85563,"src":"27392:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85466,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27392:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85471,"initialValue":{"arguments":[{"id":85469,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85446,"src":"27424:10:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":85468,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44218,"src":"27407:16:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":85470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27407:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"27392:43:168"},{"assignments":[85473],"declarations":[{"constant":false,"id":85473,"mutability":"mutable","name":"signer","nameLocation":"27454:6:168","nodeType":"VariableDeclaration","scope":85563,"src":"27446:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85472,"name":"address","nodeType":"ElementaryTypeName","src":"27446:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":85481,"initialValue":{"arguments":[{"id":85476,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85467,"src":"27477:4:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85477,"name":"_v1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85310,"src":"27483:3:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":85478,"name":"_r1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85312,"src":"27488:3:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85479,"name":"_s1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85314,"src":"27493:3:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":85474,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51038,"src":"27463:5:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$51038_$","typeString":"type(library ECDSA)"}},"id":85475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27469:7:168","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":50988,"src":"27463:13:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":85480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27463:34:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"27446:51:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":85485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85483,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85473,"src":"27515:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":85484,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85301,"src":"27525:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27515:20:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":85487,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85473,"src":"27551:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85488,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85301,"src":"27559:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":85486,"name":"InvalidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74593,"src":"27537:13:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":85489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27537:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85482,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"27507:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27507:64:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85491,"nodeType":"ExpressionStatement","src":"27507:64:168"},{"assignments":[85494],"declarations":[{"constant":false,"id":85494,"mutability":"mutable","name":"_wrappedVara","nameLocation":"27595:12:168","nodeType":"VariableDeclaration","scope":85563,"src":"27582:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":85493,"nodeType":"UserDefinedTypeName","pathNode":{"id":85492,"name":"IWrappedVara","nameLocations":["27582:12:168"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"27582:12:168"},"referencedDeclaration":75001,"src":"27582:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":85500,"initialValue":{"arguments":[{"expression":{"expression":{"id":85496,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85337,"src":"27623:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27630:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"27623:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":85498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27644:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"27623:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85495,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"27610:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":85499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27610:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"27582:74:168"},{"assignments":[85502],"declarations":[{"constant":false,"id":85502,"mutability":"mutable","name":"fee","nameLocation":"27675:3:168","nodeType":"VariableDeclaration","scope":85563,"src":"27667:11:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85501,"name":"uint256","nodeType":"ElementaryTypeName","src":"27667:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":85510,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":85509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85503,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85337,"src":"27693:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27700:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27693:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27713:28:168","memberName":"requestCodeValidationBaseFee","nodeType":"MemberAccess","referencedDeclaration":87621,"src":"27693:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":85506,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85337,"src":"27744:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85507,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27751:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"27744:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85508,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"27764:29:168","memberName":"requestCodeValidationExtraFee","nodeType":"MemberAccess","referencedDeclaration":87624,"src":"27744:49:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27693:100:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27667:126:168"},{"clauses":[{"block":{"id":85524,"nodeType":"Block","src":"27885:2:168","statements":[]},"errorName":"","id":85525,"nodeType":"TryCatchClause","src":"27885:2:168"},{"block":{"id":85526,"nodeType":"Block","src":"27894:2:168","statements":[]},"errorName":"","id":85527,"nodeType":"TryCatchClause","src":"27888:8:168"}],"externalCall":{"arguments":[{"id":85513,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85301,"src":"27827:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85516,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27847:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27839:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85514,"name":"address","nodeType":"ElementaryTypeName","src":"27839:7:168","typeDescriptions":{}}},"id":85517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27839:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85518,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85502,"src":"27854:3:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85519,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85308,"src":"27859:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85520,"name":"_v2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85316,"src":"27870:3:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":85521,"name":"_r2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85318,"src":"27875:3:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85522,"name":"_s2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85320,"src":"27880:3:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":85511,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85494,"src":"27807:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27820:6:168","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"27807:19:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":85523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27807:77:168","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85528,"nodeType":"TryStatement","src":"27803:93:168"},{"assignments":[85530],"declarations":[{"constant":false,"id":85530,"mutability":"mutable","name":"success","nameLocation":"27910:7:168","nodeType":"VariableDeclaration","scope":85563,"src":"27905:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":85529,"name":"bool","nodeType":"ElementaryTypeName","src":"27905:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":85540,"initialValue":{"arguments":[{"id":85533,"name":"_requester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85301,"src":"27946:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85536,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27966:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27958:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85534,"name":"address","nodeType":"ElementaryTypeName","src":"27958:7:168","typeDescriptions":{}}},"id":85537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27958:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85538,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85502,"src":"27973:3:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":85531,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85494,"src":"27920:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27933:12:168","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"27920:25:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":85539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27920:57:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"27905:72:168"},{"expression":{"arguments":[{"id":85542,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85530,"src":"27995:7:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85543,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"28004:18:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28004:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85541,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"27987:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27987:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85546,"nodeType":"ExpressionStatement","src":"27987:38:168"},{"expression":{"id":85557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":85547,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85337,"src":"28036:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28043:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"28036:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":85552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28056:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"28036:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":85553,"indexExpression":{"id":85550,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85303,"src":"28062:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"28036:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":85554,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"28073:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":85555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28078:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"28073:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":85556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"28088:19:168","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":87553,"src":"28073:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"28036:71:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":85558,"nodeType":"ExpressionStatement","src":"28036:71:168"},{"eventCall":{"arguments":[{"id":85560,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85303,"src":"28147:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":85559,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74512,"src":"28123:23:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":85561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28123:32:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85562,"nodeType":"EmitStatement","src":"28118:37:168"}]},"baseFunctions":[74899],"documentation":{"id":85299,"nodeType":"StructuredDocumentation","src":"24243:1496:168","text":" @dev Requests code validation for the given code ID on behalf of someone else.\n This method is expected to be called within EIP-4844/EIP-7594 transaction and will have sidecar\n attached to it containing WASM bytecode. On EVM, we can only verify that there was\n at least 1 blobhash in a transaction.\n Note that this function charges fee equal to `IRouter(router).requestCodeValidationBaseFee() + IRouter(router).requestCodeValidationExtraFee()`\n in the WVARA ERC20 token.\n @param _requester The address of the requester on behalf of whom the code validation is requested.\n @param _codeId The expected code ID for which the validation is requested.\n It's calculated as `gprimitives::CodeId::generate(wasm_code)` (blake2b hash).\n @param _blobHashes The array of blob hashes. `blobhash(i)` must be equal to `_blobHashes[i]`.\n This is needed to verify that the transaction has expected blobs attached.\n @param _deadline Deadline for the transaction to be executed.\n @param _v1 ECDSA signature parameter (for requestCodeValidation).\n @param _r1 ECDSA signature parameter (for requestCodeValidation).\n @param _s1 ECDSA signature parameter (for requestCodeValidation).\n @param _v2 ECDSA signature parameter (for permit).\n @param _r2 ECDSA signature parameter (for permit).\n @param _s2 ECDSA signature parameter (for permit)."},"functionSelector":"f0fd702a","implemented":true,"kind":"function","modifiers":[{"id":85323,"kind":"modifierInvocation","modifierName":{"id":85322,"name":"whenNotPaused","nameLocations":["26040:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"26040:13:168"},"nodeType":"ModifierInvocation","src":"26040:13:168"}],"name":"requestCodeValidationOnBehalf","nameLocation":"25753:29:168","parameters":{"id":85321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85301,"mutability":"mutable","name":"_requester","nameLocation":"25800:10:168","nodeType":"VariableDeclaration","scope":85564,"src":"25792:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85300,"name":"address","nodeType":"ElementaryTypeName","src":"25792:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85303,"mutability":"mutable","name":"_codeId","nameLocation":"25828:7:168","nodeType":"VariableDeclaration","scope":85564,"src":"25820:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25820:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85306,"mutability":"mutable","name":"_blobHashes","nameLocation":"25864:11:168","nodeType":"VariableDeclaration","scope":85564,"src":"25845:30:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":85304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25845:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":85305,"nodeType":"ArrayTypeName","src":"25845:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":85308,"mutability":"mutable","name":"_deadline","nameLocation":"25893:9:168","nodeType":"VariableDeclaration","scope":85564,"src":"25885:17:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85307,"name":"uint256","nodeType":"ElementaryTypeName","src":"25885:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85310,"mutability":"mutable","name":"_v1","nameLocation":"25918:3:168","nodeType":"VariableDeclaration","scope":85564,"src":"25912:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":85309,"name":"uint8","nodeType":"ElementaryTypeName","src":"25912:5:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":85312,"mutability":"mutable","name":"_r1","nameLocation":"25939:3:168","nodeType":"VariableDeclaration","scope":85564,"src":"25931:11:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85311,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25931:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85314,"mutability":"mutable","name":"_s1","nameLocation":"25960:3:168","nodeType":"VariableDeclaration","scope":85564,"src":"25952:11:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25952:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85316,"mutability":"mutable","name":"_v2","nameLocation":"25979:3:168","nodeType":"VariableDeclaration","scope":85564,"src":"25973:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":85315,"name":"uint8","nodeType":"ElementaryTypeName","src":"25973:5:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":85318,"mutability":"mutable","name":"_r2","nameLocation":"26000:3:168","nodeType":"VariableDeclaration","scope":85564,"src":"25992:11:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25992:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85320,"mutability":"mutable","name":"_s2","nameLocation":"26021:3:168","nodeType":"VariableDeclaration","scope":85564,"src":"26013:11:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"26013:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"25782:248:168"},"returnParameters":{"id":85324,"nodeType":"ParameterList","parameters":[],"src":"26054:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85609,"nodeType":"FunctionDefinition","src":"29242:396:168","nodes":[],"body":{"id":85608,"nodeType":"Block","src":"29396:242:168","nodes":[],"statements":[{"assignments":[85579,null],"declarations":[{"constant":false,"id":85579,"mutability":"mutable","name":"mirror","nameLocation":"29415:6:168","nodeType":"VariableDeclaration","scope":85608,"src":"29407:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85578,"name":"address","nodeType":"ElementaryTypeName","src":"29407:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":85585,"initialValue":{"arguments":[{"id":85581,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85567,"src":"29441:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85582,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85569,"src":"29450:5:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":85583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29457:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":85580,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86144,"src":"29426:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":85584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29426:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"29406:56:168"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":85595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85590,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85571,"src":"29513:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":85593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29545:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29537:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85591,"name":"address","nodeType":"ElementaryTypeName","src":"29537:7:168","typeDescriptions":{}}},"id":85594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29537:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"29513:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":85598,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85571,"src":"29563:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":85599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"29513:70:168","trueExpression":{"expression":{"id":85596,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29550:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29554:6:168","memberName":"sender","nodeType":"MemberAccess","src":"29550:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85600,"name":"mirrorImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84595,"src":"29585:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":85601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29585:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":85602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29599:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":85603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29605:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":85587,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85579,"src":"29481:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85586,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"29473:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":85588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29473:15:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":85589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29502:10:168","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"29473:39:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":85604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29473:134:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85605,"nodeType":"ExpressionStatement","src":"29473:134:168"},{"expression":{"id":85606,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85579,"src":"29625:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":85577,"id":85607,"nodeType":"Return","src":"29618:13:168"}]},"baseFunctions":[74911],"documentation":{"id":85565,"nodeType":"StructuredDocumentation","src":"28168:1069:168","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, and initializer.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support,\n so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"3683c4d2","implemented":true,"kind":"function","modifiers":[{"id":85574,"kind":"modifierInvocation","modifierName":{"id":85573,"name":"whenNotPaused","nameLocations":["29352:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"29352:13:168"},"nodeType":"ModifierInvocation","src":"29352:13:168"}],"name":"createProgram","nameLocation":"29251:13:168","parameters":{"id":85572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85567,"mutability":"mutable","name":"_codeId","nameLocation":"29273:7:168","nodeType":"VariableDeclaration","scope":85609,"src":"29265:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85566,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29265:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85569,"mutability":"mutable","name":"_salt","nameLocation":"29290:5:168","nodeType":"VariableDeclaration","scope":85609,"src":"29282:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85568,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29282:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85571,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"29305:20:168","nodeType":"VariableDeclaration","scope":85609,"src":"29297:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85570,"name":"address","nodeType":"ElementaryTypeName","src":"29297:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29264:62:168"},"returnParameters":{"id":85577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85576,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85609,"src":"29383:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85575,"name":"address","nodeType":"ElementaryTypeName","src":"29383:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29382:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85714,"nodeType":"FunctionDefinition","src":"31111:1031:168","nodes":[],"body":{"id":85713,"nodeType":"Block","src":"31416:726:168","nodes":[],"statements":[{"assignments":[85634,85637],"declarations":[{"constant":false,"id":85634,"mutability":"mutable","name":"mirror","nameLocation":"31435:6:168","nodeType":"VariableDeclaration","scope":85713,"src":"31427:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85633,"name":"address","nodeType":"ElementaryTypeName","src":"31427:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85637,"mutability":"mutable","name":"router","nameLocation":"31459:6:168","nodeType":"VariableDeclaration","scope":85713,"src":"31443:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":85636,"nodeType":"UserDefinedTypeName","pathNode":{"id":85635,"name":"Storage","nameLocations":["31443:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"31443:7:168"},"referencedDeclaration":74490,"src":"31443:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":85643,"initialValue":{"arguments":[{"id":85639,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85612,"src":"31484:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85640,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85614,"src":"31493:5:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":85641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31500:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":85638,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86144,"src":"31469:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":85642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31469:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"31426:79:168"},{"assignments":[85646],"declarations":[{"constant":false,"id":85646,"mutability":"mutable","name":"_wrappedVara","nameLocation":"31529:12:168","nodeType":"VariableDeclaration","scope":85713,"src":"31516:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":85645,"nodeType":"UserDefinedTypeName","pathNode":{"id":85644,"name":"IWrappedVara","nameLocations":["31516:12:168"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"31516:12:168"},"referencedDeclaration":75001,"src":"31516:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":85652,"initialValue":{"arguments":[{"expression":{"expression":{"id":85648,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85637,"src":"31557:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31564:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"31557:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":85650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"31578:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"31557:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85647,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"31544:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":85651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31544:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"31516:74:168"},{"clauses":[{"block":{"id":85667,"nodeType":"Block","src":"31702:2:168","statements":[]},"errorName":"","id":85668,"nodeType":"TryCatchClause","src":"31702:2:168"},{"block":{"id":85669,"nodeType":"Block","src":"31711:2:168","statements":[]},"errorName":"","id":85670,"nodeType":"TryCatchClause","src":"31705:8:168"}],"externalCall":{"arguments":[{"expression":{"id":85655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31625:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31629:6:168","memberName":"sender","nodeType":"MemberAccess","src":"31625:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85659,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31645:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31637:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85657,"name":"address","nodeType":"ElementaryTypeName","src":"31637:7:168","typeDescriptions":{}}},"id":85660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31637:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85661,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85618,"src":"31652:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":85662,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85620,"src":"31679:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85663,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85622,"src":"31690:2:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":85664,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85624,"src":"31694:2:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85665,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85626,"src":"31698:2:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":85653,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85646,"src":"31605:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31618:6:168","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"31605:19:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":85666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31605:96:168","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85671,"nodeType":"TryStatement","src":"31601:112:168"},{"assignments":[85673],"declarations":[{"constant":false,"id":85673,"mutability":"mutable","name":"success","nameLocation":"31727:7:168","nodeType":"VariableDeclaration","scope":85713,"src":"31722:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":85672,"name":"bool","nodeType":"ElementaryTypeName","src":"31722:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":85684,"initialValue":{"arguments":[{"expression":{"id":85676,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31763:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31767:6:168","memberName":"sender","nodeType":"MemberAccess","src":"31763:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85680,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31783:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31775:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85678,"name":"address","nodeType":"ElementaryTypeName","src":"31775:7:168","typeDescriptions":{}}},"id":85681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31775:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85682,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85618,"src":"31790:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":85674,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85646,"src":"31737:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31750:12:168","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"31737:25:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":85683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31737:79:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"31722:94:168"},{"expression":{"arguments":[{"id":85686,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85673,"src":"31834:7:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85687,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"31843:18:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31843:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85685,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"31826:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31826:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85690,"nodeType":"ExpressionStatement","src":"31826:38:168"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":85700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85695,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85616,"src":"31932:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":85698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31964:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31956:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85696,"name":"address","nodeType":"ElementaryTypeName","src":"31956:7:168","typeDescriptions":{}}},"id":85699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31956:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"31932:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":85703,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85616,"src":"31982:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":85704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"31932:70:168","trueExpression":{"expression":{"id":85701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"31969:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31973:6:168","memberName":"sender","nodeType":"MemberAccess","src":"31969:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85705,"name":"mirrorImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84595,"src":"32020:10:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":85706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32020:12:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":85707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32050:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":85708,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85618,"src":"32072:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":85692,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85634,"src":"31883:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85691,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"31875:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":85693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31875:15:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":85694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31904:10:168","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"31875:39:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":85709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31875:236:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85710,"nodeType":"ExpressionStatement","src":"31875:236:168"},{"expression":{"id":85711,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85634,"src":"32129:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":85632,"id":85712,"nodeType":"Return","src":"32122:13:168"}]},"baseFunctions":[74933],"documentation":{"id":85610,"nodeType":"StructuredDocumentation","src":"29644:1462:168","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and initial executable balance\n in WVARA ERC20 token.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = true` without \"Solidity ABI Interface\" support,\n so it will be more gas efficient, but services like Etherscan won't be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"0d91bf2a","implemented":true,"kind":"function","modifiers":[{"id":85629,"kind":"modifierInvocation","modifierName":{"id":85628,"name":"whenNotPaused","nameLocations":["31384:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"31384:13:168"},"nodeType":"ModifierInvocation","src":"31384:13:168"}],"name":"createProgramWithExecutableBalance","nameLocation":"31120:34:168","parameters":{"id":85627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85612,"mutability":"mutable","name":"_codeId","nameLocation":"31172:7:168","nodeType":"VariableDeclaration","scope":85714,"src":"31164:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31164:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85614,"mutability":"mutable","name":"_salt","nameLocation":"31197:5:168","nodeType":"VariableDeclaration","scope":85714,"src":"31189:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31189:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85616,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"31220:20:168","nodeType":"VariableDeclaration","scope":85714,"src":"31212:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85615,"name":"address","nodeType":"ElementaryTypeName","src":"31212:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85618,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"31258:25:168","nodeType":"VariableDeclaration","scope":85714,"src":"31250:33:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":85617,"name":"uint128","nodeType":"ElementaryTypeName","src":"31250:7:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":85620,"mutability":"mutable","name":"_deadline","nameLocation":"31301:9:168","nodeType":"VariableDeclaration","scope":85714,"src":"31293:17:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85619,"name":"uint256","nodeType":"ElementaryTypeName","src":"31293:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85622,"mutability":"mutable","name":"_v","nameLocation":"31326:2:168","nodeType":"VariableDeclaration","scope":85714,"src":"31320:8:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":85621,"name":"uint8","nodeType":"ElementaryTypeName","src":"31320:5:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":85624,"mutability":"mutable","name":"_r","nameLocation":"31346:2:168","nodeType":"VariableDeclaration","scope":85714,"src":"31338:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85623,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31338:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85626,"mutability":"mutable","name":"_s","nameLocation":"31366:2:168","nodeType":"VariableDeclaration","scope":85714,"src":"31358:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"31358:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"31154:220:168"},"returnParameters":{"id":85632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85631,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85714,"src":"31407:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85630,"name":"address","nodeType":"ElementaryTypeName","src":"31407:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31406:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85760,"nodeType":"FunctionDefinition","src":"33304:448:168","nodes":[],"body":{"id":85759,"nodeType":"Block","src":"33507:245:168","nodes":[],"statements":[{"assignments":[85731,null],"declarations":[{"constant":false,"id":85731,"mutability":"mutable","name":"mirror","nameLocation":"33526:6:168","nodeType":"VariableDeclaration","scope":85759,"src":"33518:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85730,"name":"address","nodeType":"ElementaryTypeName","src":"33518:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":85737,"initialValue":{"arguments":[{"id":85733,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85717,"src":"33552:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85734,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85719,"src":"33561:5:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":85735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33568:5:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":85732,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86144,"src":"33537:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":85736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33537:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"33517:57:168"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":85747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85742,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85721,"src":"33625:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":85745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33657:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33649:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85743,"name":"address","nodeType":"ElementaryTypeName","src":"33649:7:168","typeDescriptions":{}}},"id":85746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33649:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"33625:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":85750,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85721,"src":"33675:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":85751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"33625:70:168","trueExpression":{"expression":{"id":85748,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"33662:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33666:6:168","memberName":"sender","nodeType":"MemberAccess","src":"33662:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85752,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85723,"src":"33697:13:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":85753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33712:5:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":85754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33719:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":85739,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85731,"src":"33593:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85738,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"33585:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":85740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33585:15:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":85741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33614:10:168","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"33585:39:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":85755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33585:136:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85756,"nodeType":"ExpressionStatement","src":"33585:136:168"},{"expression":{"id":85757,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85731,"src":"33739:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":85729,"id":85758,"nodeType":"Return","src":"33732:13:168"}]},"baseFunctions":[74947],"documentation":{"id":85715,"nodeType":"StructuredDocumentation","src":"32148:1151:168","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer and ABI interface.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support,\n so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _abiInterface The ABI interface address for the program.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"0c18d277","implemented":true,"kind":"function","modifiers":[{"id":85726,"kind":"modifierInvocation","modifierName":{"id":85725,"name":"whenNotPaused","nameLocations":["33475:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"33475:13:168"},"nodeType":"ModifierInvocation","src":"33475:13:168"}],"name":"createProgramWithAbiInterface","nameLocation":"33313:29:168","parameters":{"id":85724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85717,"mutability":"mutable","name":"_codeId","nameLocation":"33360:7:168","nodeType":"VariableDeclaration","scope":85760,"src":"33352:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85716,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33352:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85719,"mutability":"mutable","name":"_salt","nameLocation":"33385:5:168","nodeType":"VariableDeclaration","scope":85760,"src":"33377:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85718,"name":"bytes32","nodeType":"ElementaryTypeName","src":"33377:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85721,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"33408:20:168","nodeType":"VariableDeclaration","scope":85760,"src":"33400:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85720,"name":"address","nodeType":"ElementaryTypeName","src":"33400:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85723,"mutability":"mutable","name":"_abiInterface","nameLocation":"33446:13:168","nodeType":"VariableDeclaration","scope":85760,"src":"33438:21:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85722,"name":"address","nodeType":"ElementaryTypeName","src":"33438:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33342:123:168"},"returnParameters":{"id":85729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85760,"src":"33498:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85727,"name":"address","nodeType":"ElementaryTypeName","src":"33498:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33497:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":85866,"nodeType":"FunctionDefinition","src":"35308:1080:168","nodes":[],"body":{"id":85865,"nodeType":"Block","src":"35659:729:168","nodes":[],"statements":[{"assignments":[85787,85790],"declarations":[{"constant":false,"id":85787,"mutability":"mutable","name":"mirror","nameLocation":"35678:6:168","nodeType":"VariableDeclaration","scope":85865,"src":"35670:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85786,"name":"address","nodeType":"ElementaryTypeName","src":"35670:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85790,"mutability":"mutable","name":"router","nameLocation":"35702:6:168","nodeType":"VariableDeclaration","scope":85865,"src":"35686:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":85789,"nodeType":"UserDefinedTypeName","pathNode":{"id":85788,"name":"Storage","nameLocations":["35686:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"35686:7:168"},"referencedDeclaration":74490,"src":"35686:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":85796,"initialValue":{"arguments":[{"id":85792,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85763,"src":"35727:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85793,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85765,"src":"35736:5:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":85794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35743:5:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":85791,"name":"_createProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86144,"src":"35712:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function (bytes32,bytes32,bool) returns (address,struct IRouter.Storage storage pointer)"}},"id":85795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35712:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"nodeType":"VariableDeclarationStatement","src":"35669:80:168"},{"assignments":[85799],"declarations":[{"constant":false,"id":85799,"mutability":"mutable","name":"_wrappedVara","nameLocation":"35773:12:168","nodeType":"VariableDeclaration","scope":85865,"src":"35760:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"},"typeName":{"id":85798,"nodeType":"UserDefinedTypeName","pathNode":{"id":85797,"name":"IWrappedVara","nameLocations":["35760:12:168"],"nodeType":"IdentifierPath","referencedDeclaration":75001,"src":"35760:12:168"},"referencedDeclaration":75001,"src":"35760:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":85805,"initialValue":{"arguments":[{"expression":{"expression":{"id":85801,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85790,"src":"35801:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35808:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"35801:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":85803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35822:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"35801:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85800,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"35788:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":85804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35788:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"35760:74:168"},{"clauses":[{"block":{"id":85820,"nodeType":"Block","src":"35946:2:168","statements":[]},"errorName":"","id":85821,"nodeType":"TryCatchClause","src":"35946:2:168"},{"block":{"id":85822,"nodeType":"Block","src":"35955:2:168","statements":[]},"errorName":"","id":85823,"nodeType":"TryCatchClause","src":"35949:8:168"}],"externalCall":{"arguments":[{"expression":{"id":85808,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"35869:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35873:6:168","memberName":"sender","nodeType":"MemberAccess","src":"35869:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85812,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"35889:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"35881:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85810,"name":"address","nodeType":"ElementaryTypeName","src":"35881:7:168","typeDescriptions":{}}},"id":85813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35881:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85814,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85771,"src":"35896:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":85815,"name":"_deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85773,"src":"35923:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":85816,"name":"_v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85775,"src":"35934:2:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":85817,"name":"_r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85777,"src":"35938:2:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85818,"name":"_s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85779,"src":"35942:2:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":85806,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85799,"src":"35849:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35862:6:168","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":46883,"src":"35849:19:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":85819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35849:96:168","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85824,"nodeType":"TryStatement","src":"35845:112:168"},{"assignments":[85826],"declarations":[{"constant":false,"id":85826,"mutability":"mutable","name":"success","nameLocation":"35971:7:168","nodeType":"VariableDeclaration","scope":85865,"src":"35966:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":85825,"name":"bool","nodeType":"ElementaryTypeName","src":"35966:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":85837,"initialValue":{"arguments":[{"expression":{"id":85829,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36007:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36011:6:168","memberName":"sender","nodeType":"MemberAccess","src":"36007:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":85833,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"36027:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":85832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36019:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85831,"name":"address","nodeType":"ElementaryTypeName","src":"36019:7:168","typeDescriptions":{}}},"id":85834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36019:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85835,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85771,"src":"36034:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":85827,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85799,"src":"35981:12:168","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":85828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35994:12:168","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":46835,"src":"35981:25:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":85836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35981:79:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"35966:94:168"},{"expression":{"arguments":[{"id":85839,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85826,"src":"36078:7:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85840,"name":"TransferFromFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74598,"src":"36087:18:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36087:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85838,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"36070:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36070:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85843,"nodeType":"ExpressionStatement","src":"36070:38:168"},{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":85853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":85848,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85767,"src":"36176:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":85851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36208:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"36200:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":85849,"name":"address","nodeType":"ElementaryTypeName","src":"36200:7:168","typeDescriptions":{}}},"id":85852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36200:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"36176:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":85856,"name":"_overrideInitializer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85767,"src":"36226:20:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":85857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"36176:70:168","trueExpression":{"expression":{"id":85854,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"36213:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":85855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36217:6:168","memberName":"sender","nodeType":"MemberAccess","src":"36213:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":85858,"name":"_abiInterface","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85769,"src":"36264:13:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":85859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"36295:5:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":85860,"name":"_initialExecutableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85771,"src":"36318:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":85845,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85787,"src":"36127:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":85844,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"36119:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":85846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36119:15:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":85847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36148:10:168","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":74385,"src":"36119:39:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint128_$returns$__$","typeString":"function (address,address,bool,uint128) external"}},"id":85861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36119:238:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85862,"nodeType":"ExpressionStatement","src":"36119:238:168"},{"expression":{"id":85863,"name":"mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85787,"src":"36375:6:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":85785,"id":85864,"nodeType":"Return","src":"36368:13:168"}]},"baseFunctions":[74971],"documentation":{"id":85761,"nodeType":"StructuredDocumentation","src":"33758:1545:168","text":" @dev Creates new program (`Mirror`) with the given code ID, salt, initializer, ABI interface and initial executable balance\n in WVARA ERC20 token.\n Note that the program creation is deterministic, so if you try to create program with the same code ID and salt,\n you will get the same program address.\n Also note that the `Mirror` will be created with `isSmall = false` WITH \"Solidity ABI Interface\" support,\n so it will be less gas efficient, but services like Etherscan will be able to encode some calls and decode some events.\n As result of execution, the `ProgramCreated` event will be emitted.\n @param _codeId The code ID of the program to create. Must be in `CodeState.Validated` state.\n @param _salt The salt for the program creation.\n @param _overrideInitializer The initializer address for the program that can send the first (init) message to the program.\n If set to `address(0)`, `msg.sender` will be used as the initializer.\n @param _abiInterface The ABI interface address for the program.\n @param _initialExecutableBalance The value in WVARA ERC20 token to transfer to executable balance to `Mirror` after creation.\n @param _deadline Deadline for the transaction to be executed.\n @param _v ECDSA signature parameter.\n @param _r ECDSA signature parameter.\n @param _s ECDSA signature parameter.\n @return mirror The address of the created program (`Mirror`)."},"functionSelector":"ee32004f","implemented":true,"kind":"function","modifiers":[{"id":85782,"kind":"modifierInvocation","modifierName":{"id":85781,"name":"whenNotPaused","nameLocations":["35627:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"35627:13:168"},"nodeType":"ModifierInvocation","src":"35627:13:168"}],"name":"createProgramWithAbiInterfaceAndExecutableBalance","nameLocation":"35317:49:168","parameters":{"id":85780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85763,"mutability":"mutable","name":"_codeId","nameLocation":"35384:7:168","nodeType":"VariableDeclaration","scope":85866,"src":"35376:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35376:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85765,"mutability":"mutable","name":"_salt","nameLocation":"35409:5:168","nodeType":"VariableDeclaration","scope":85866,"src":"35401:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85764,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35401:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85767,"mutability":"mutable","name":"_overrideInitializer","nameLocation":"35432:20:168","nodeType":"VariableDeclaration","scope":85866,"src":"35424:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85766,"name":"address","nodeType":"ElementaryTypeName","src":"35424:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85769,"mutability":"mutable","name":"_abiInterface","nameLocation":"35470:13:168","nodeType":"VariableDeclaration","scope":85866,"src":"35462:21:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85768,"name":"address","nodeType":"ElementaryTypeName","src":"35462:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85771,"mutability":"mutable","name":"_initialExecutableBalance","nameLocation":"35501:25:168","nodeType":"VariableDeclaration","scope":85866,"src":"35493:33:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":85770,"name":"uint128","nodeType":"ElementaryTypeName","src":"35493:7:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":85773,"mutability":"mutable","name":"_deadline","nameLocation":"35544:9:168","nodeType":"VariableDeclaration","scope":85866,"src":"35536:17:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85772,"name":"uint256","nodeType":"ElementaryTypeName","src":"35536:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85775,"mutability":"mutable","name":"_v","nameLocation":"35569:2:168","nodeType":"VariableDeclaration","scope":85866,"src":"35563:8:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":85774,"name":"uint8","nodeType":"ElementaryTypeName","src":"35563:5:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":85777,"mutability":"mutable","name":"_r","nameLocation":"35589:2:168","nodeType":"VariableDeclaration","scope":85866,"src":"35581:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85776,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35581:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":85779,"mutability":"mutable","name":"_s","nameLocation":"35609:2:168","nodeType":"VariableDeclaration","scope":85866,"src":"35601:10:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85778,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35601:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"35366:251:168"},"returnParameters":{"id":85785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":85866,"src":"35650:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85783,"name":"address","nodeType":"ElementaryTypeName","src":"35650:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"35649:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":86041,"nodeType":"FunctionDefinition","src":"36856:2270:168","nodes":[],"body":{"id":86040,"nodeType":"Block","src":"37032:2094:168","nodes":[],"statements":[{"assignments":[85883],"declarations":[{"constant":false,"id":85883,"mutability":"mutable","name":"router","nameLocation":"37058:6:168","nodeType":"VariableDeclaration","scope":86040,"src":"37042:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":85882,"nodeType":"UserDefinedTypeName","pathNode":{"id":85881,"name":"Storage","nameLocations":["37042:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"37042:7:168"},"referencedDeclaration":74490,"src":"37042:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":85886,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":85884,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"37067:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":85885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37067:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"37042:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85888,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"37095:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37102:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"37095:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":85890,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37115:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"37095:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":85893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37131:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":85892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"37123:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":85891,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37123:7:168","typeDescriptions":{}}},"id":85894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37123:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"37095:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85896,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"37135:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37135:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85887,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37087:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37087:82:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85899,"nodeType":"ExpressionStatement","src":"37087:82:168"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":85903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":85900,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"37333:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37340:8:168","memberName":"reserved","nodeType":"MemberAccess","referencedDeclaration":74461,"src":"37333:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":85902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37352:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"37333:20:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":85927,"nodeType":"IfStatement","src":"37329:295:168","trueBody":{"id":85926,"nodeType":"Block","src":"37355:269:168","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":85907,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"37401:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37408:9:168","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":87486,"src":"37401:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":85909,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"37419:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37426:6:168","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":87495,"src":"37419:13:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":85905,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"37377:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":85906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37382:18:168","memberName":"blockIsPredecessor","nodeType":"MemberAccess","referencedDeclaration":88004,"src":"37377:23:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint8_$returns$_t_bool_$","typeString":"function (bytes32,uint8) view returns (bool)"}},"id":85911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37377:56:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85912,"name":"PredecessorBlockNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74600,"src":"37435:24:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37435:26:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85904,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37369:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37369:93:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85915,"nodeType":"ExpressionStatement","src":"37369:93:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":85921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":85917,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"37546:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":85918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37552:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"37546:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":85919,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"37564:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37571:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"37564:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"37546:39:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85922,"name":"BatchTimestampNotInPast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74602,"src":"37587:23:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37587:25:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85916,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37538:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37538:75:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85925,"nodeType":"ExpressionStatement","src":"37538:75:168"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":85934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85929,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"37737:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37744:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"37737:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":85931,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37765:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87559,"src":"37737:32:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":85932,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"37773:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37780:26:168","memberName":"previousCommittedBatchHash","nodeType":"MemberAccess","referencedDeclaration":87492,"src":"37773:33:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"37737:69:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85935,"name":"InvalidPreviousCommittedBatchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74604,"src":"37808:33:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37808:35:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37716:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37716:137:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85938,"nodeType":"ExpressionStatement","src":"37716:137:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":85945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":85940,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"37872:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":85941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37879:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"37872:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":85942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"37900:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87561,"src":"37872:37:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":85943,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"37913:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37920:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"37913:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"37872:62:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":85946,"name":"BatchTimestampTooEarly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74606,"src":"37936:22:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":85947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37936:24:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":85939,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"37864:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":85948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37864:97:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85949,"nodeType":"ExpressionStatement","src":"37864:97:168"},{"assignments":[85951],"declarations":[{"constant":false,"id":85951,"mutability":"mutable","name":"_chainCommitmentHash","nameLocation":"37980:20:168","nodeType":"VariableDeclaration","scope":86040,"src":"37972:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"37972:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85956,"initialValue":{"arguments":[{"id":85953,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38016:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":85954,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38024:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":85952,"name":"_commitChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86207,"src":"38003:12:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":85955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38003:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"37972:59:168"},{"eventCall":{"arguments":[{"id":85958,"name":"COMMIT_BATCH_BEFORE_COMMIT_CODES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84157,"src":"38058:32:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":85957,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84164,"src":"38047:10:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":85959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38047:44:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85960,"nodeType":"EmitStatement","src":"38042:49:168"},{"assignments":[85962],"declarations":[{"constant":false,"id":85962,"mutability":"mutable","name":"_codeCommitmentsHash","nameLocation":"38109:20:168","nodeType":"VariableDeclaration","scope":86040,"src":"38101:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38101:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85967,"initialValue":{"arguments":[{"id":85964,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38145:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":85965,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38153:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":85963,"name":"_commitCodes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86349,"src":"38132:12:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":85966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38132:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38101:59:168"},{"eventCall":{"arguments":[{"id":85969,"name":"COMMIT_BATCH_AFTER_COMMIT_CODES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84160,"src":"38186:31:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":85968,"name":"DebugEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84164,"src":"38175:10:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":85970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38175:43:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85971,"nodeType":"EmitStatement","src":"38170:48:168"},{"assignments":[85973],"declarations":[{"constant":false,"id":85973,"mutability":"mutable","name":"_rewardsCommitmentHash","nameLocation":"38237:22:168","nodeType":"VariableDeclaration","scope":86040,"src":"38229:30:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85972,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38229:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85978,"initialValue":{"arguments":[{"id":85975,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38277:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":85976,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38285:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":85974,"name":"_commitRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86506,"src":"38262:14:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":85977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38262:30:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38229:63:168"},{"assignments":[85980],"declarations":[{"constant":false,"id":85980,"mutability":"mutable","name":"_validatorsCommitmentHash","nameLocation":"38310:25:168","nodeType":"VariableDeclaration","scope":86040,"src":"38302:33:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38302:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":85985,"initialValue":{"arguments":[{"id":85982,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38356:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":85983,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38364:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}],"id":85981,"name":"_commitValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86652,"src":"38338:17:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_struct$_BatchCommitment_$87516_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.BatchCommitment calldata) returns (bytes32)"}},"id":85984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38338:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38302:69:168"},{"assignments":[85987],"declarations":[{"constant":false,"id":85987,"mutability":"mutable","name":"_batchHash","nameLocation":"38390:10:168","nodeType":"VariableDeclaration","scope":86040,"src":"38382:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":85986,"name":"bytes32","nodeType":"ElementaryTypeName","src":"38382:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86003,"initialValue":{"arguments":[{"expression":{"id":85990,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38441:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38448:9:168","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":87486,"src":"38441:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":85992,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38471:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38478:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"38471:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"expression":{"id":85994,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38506:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38513:26:168","memberName":"previousCommittedBatchHash","nodeType":"MemberAccess","referencedDeclaration":87492,"src":"38506:33:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":85996,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38553:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":85997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38560:6:168","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":87495,"src":"38553:13:168","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":85998,"name":"_chainCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85951,"src":"38580:20:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":85999,"name":"_codeCommitmentsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85962,"src":"38614:20:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86000,"name":"_rewardsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85973,"src":"38648:22:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86001,"name":"_validatorsCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85980,"src":"38684:25:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":85988,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"38403:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":85989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38408:19:168","memberName":"batchCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87848,"src":"38403:24:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint48_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,uint48,bytes32,uint8,bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":86002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38403:316:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"38382:337:168"},{"expression":{"id":86010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":86004,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38730:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38737:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"38730:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":86008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38758:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87559,"src":"38730:32:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86009,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85987,"src":"38765:10:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"38730:45:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":86011,"nodeType":"ExpressionStatement","src":"38730:45:168"},{"expression":{"id":86019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"expression":{"id":86012,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38785:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"38792:20:168","memberName":"latestCommittedBatch","nodeType":"MemberAccess","referencedDeclaration":74469,"src":"38785:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_CommittedBatchInfo_$87562_storage","typeString":"struct Gear.CommittedBatchInfo storage ref"}},"id":86016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"38813:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87561,"src":"38785:37:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":86017,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"38825:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38832:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"38825:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"38785:61:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":86020,"nodeType":"ExpressionStatement","src":"38785:61:168"},{"eventCall":{"arguments":[{"id":86022,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85987,"src":"38877:10:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":86021,"name":"BatchCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74495,"src":"38862:14:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":86023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38862:26:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86024,"nodeType":"EmitStatement","src":"38857:31:168"},{"expression":{"arguments":[{"arguments":[{"id":86028,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85883,"src":"38963:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"id":86029,"name":"TRANSIENT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84139,"src":"38971:17:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86030,"name":"_batchHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85987,"src":"38990:10:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86031,"name":"_signatureType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85873,"src":"39002:14:168","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},{"id":86032,"name":"_signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85876,"src":"39018:11:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},{"expression":{"id":86033,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85870,"src":"39031:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39038:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"39031:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":86026,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"38920:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38925:20:168","memberName":"validateSignaturesAt","nodeType":"MemberAccess","referencedDeclaration":88290,"src":"38920:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_bytes32_$_t_bytes32_$_t_enum$_SignatureType_$87729_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bool_$","typeString":"function (struct IRouter.Storage storage pointer,bytes32,bytes32,enum Gear.SignatureType,bytes calldata[] calldata,uint256) returns (bool)"}},"id":86035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38920:146:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86036,"name":"SignatureVerificationFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74634,"src":"39080:27:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39080:29:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86025,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"38899:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38899:220:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86039,"nodeType":"ExpressionStatement","src":"38899:220:168"}]},"baseFunctions":[74984],"documentation":{"id":85867,"nodeType":"StructuredDocumentation","src":"36394:457:168","text":" @dev Commits new batch of changes to `Router` state.\n `CodeGotValidated` event is emitted for each code in commitment.\n `AnnouncesCommitted` event is emitted on success. Triggers multiple events for each corresponding `Mirror` instances.\n @param _batch The batch commitment data.\n @param _signatureType The type of signature to validate.\n @param _signatures The signatures for the batch commitment."},"functionSelector":"b24fcac0","implemented":true,"kind":"function","modifiers":[{"id":85879,"kind":"modifierInvocation","modifierName":{"id":85878,"name":"nonReentrant","nameLocations":["37019:12:168"],"nodeType":"IdentifierPath","referencedDeclaration":43886,"src":"37019:12:168"},"nodeType":"ModifierInvocation","src":"37019:12:168"}],"name":"commitBatch","nameLocation":"36865:11:168","parameters":{"id":85877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85870,"mutability":"mutable","name":"_batch","nameLocation":"36916:6:168","nodeType":"VariableDeclaration","scope":86041,"src":"36886:36:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":85869,"nodeType":"UserDefinedTypeName","pathNode":{"id":85868,"name":"Gear.BatchCommitment","nameLocations":["36886:4:168","36891:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"36886:20:168"},"referencedDeclaration":87516,"src":"36886:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"},{"constant":false,"id":85873,"mutability":"mutable","name":"_signatureType","nameLocation":"36951:14:168","nodeType":"VariableDeclaration","scope":86041,"src":"36932:33:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"},"typeName":{"id":85872,"nodeType":"UserDefinedTypeName","pathNode":{"id":85871,"name":"Gear.SignatureType","nameLocations":["36932:4:168","36937:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":87729,"src":"36932:18:168"},"referencedDeclaration":87729,"src":"36932:18:168","typeDescriptions":{"typeIdentifier":"t_enum$_SignatureType_$87729","typeString":"enum Gear.SignatureType"}},"visibility":"internal"},{"constant":false,"id":85876,"mutability":"mutable","name":"_signatures","nameLocation":"36992:11:168","nodeType":"VariableDeclaration","scope":86041,"src":"36975:28:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":85874,"name":"bytes","nodeType":"ElementaryTypeName","src":"36975:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":85875,"nodeType":"ArrayTypeName","src":"36975:7:168","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"36876:133:168"},"returnParameters":{"id":85880,"nodeType":"ParameterList","parameters":[],"src":"37032:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":86144,"nodeType":"FunctionDefinition","src":"39170:934:168","nodes":[],"body":{"id":86143,"nodeType":"Block","src":"39284:820:168","nodes":[],"statements":[{"assignments":[86057],"declarations":[{"constant":false,"id":86057,"mutability":"mutable","name":"router","nameLocation":"39310:6:168","nodeType":"VariableDeclaration","scope":86143,"src":"39294:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86056,"nodeType":"UserDefinedTypeName","pathNode":{"id":86055,"name":"Storage","nameLocations":["39294:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"39294:7:168"},"referencedDeclaration":74490,"src":"39294:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":86060,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":86058,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"39319:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":86059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39319:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"39294:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86062,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86057,"src":"39346:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39353:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"39346:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":86064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39366:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"39346:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":86067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39382:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":86066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39374:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":86065,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39374:7:168","typeDescriptions":{}}},"id":86068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39374:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"39346:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86070,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"39386:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39386:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86061,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39338:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39338:82:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86073,"nodeType":"ExpressionStatement","src":"39338:82:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":86083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":86075,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86057,"src":"39439:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39446:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39439:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39459:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"39439:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":86079,"indexExpression":{"id":86078,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86043,"src":"39465:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"39439:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":86080,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"39477:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39482:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"39477:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":86082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39492:9:168","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":87555,"src":"39477:24:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"39439:62:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86084,"name":"CodeNotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74596,"src":"39503:16:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39503:18:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86074,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"39431:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39431:91:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86087,"nodeType":"ExpressionStatement","src":"39431:91:168"},{"assignments":[86089],"declarations":[{"constant":false,"id":86089,"mutability":"mutable","name":"salt","nameLocation":"39691:4:168","nodeType":"VariableDeclaration","scope":86143,"src":"39683:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39683:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86095,"initialValue":{"arguments":[{"id":86092,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86043,"src":"39733:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86093,"name":"_salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86045,"src":"39742:5:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86090,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"39698:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":86091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39705:27:168","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41482,"src":"39698:34:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":86094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39698:50:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"39683:65:168"},{"assignments":[86097],"declarations":[{"constant":false,"id":86097,"mutability":"mutable","name":"actorId","nameLocation":"39766:7:168","nodeType":"VariableDeclaration","scope":86143,"src":"39758:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86096,"name":"address","nodeType":"ElementaryTypeName","src":"39758:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":86116,"initialValue":{"condition":{"id":86098,"name":"_isSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86047,"src":"39776:8:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":86111,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"39899:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":86110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39891:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":86109,"name":"address","nodeType":"ElementaryTypeName","src":"39891:7:168","typeDescriptions":{}}},"id":86112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39891:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":86113,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86089,"src":"39906:4:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86107,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87250,"src":"39865:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$87250_$","typeString":"type(library Clones)"}},"id":86108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39872:18:168","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":87019,"src":"39865:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":86114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39865:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":86115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"39776:135:168","trueExpression":{"arguments":[{"arguments":[{"id":86103,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"39838:4:168","typeDescriptions":{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_RouterWithInstrumentation_$86997","typeString":"contract RouterWithInstrumentation"}],"id":86102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"39830:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":86101,"name":"address","nodeType":"ElementaryTypeName","src":"39830:7:168","typeDescriptions":{}}},"id":86104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39830:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":86105,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86089,"src":"39845:4:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86099,"name":"ClonesSmall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":87334,"src":"39799:11:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ClonesSmall_$87334_$","typeString":"type(library ClonesSmall)"}},"id":86100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39811:18:168","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":87272,"src":"39799:30:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":86106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39799:51:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"39758:153:168"},{"expression":{"id":86125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":86117,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86057,"src":"39922:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39929:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39922:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39942:8:168","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"39922:28:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":86123,"indexExpression":{"id":86120,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86097,"src":"39951:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"39922:37:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86124,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86043,"src":"39962:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"39922:47:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":86126,"nodeType":"ExpressionStatement","src":"39922:47:168"},{"expression":{"id":86132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"39979:35:168","subExpression":{"expression":{"expression":{"id":86127,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86057,"src":"39979:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"39986:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"39979:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"39999:13:168","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":87612,"src":"39979:33:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86133,"nodeType":"ExpressionStatement","src":"39979:35:168"},{"eventCall":{"arguments":[{"id":86135,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86097,"src":"40045:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":86136,"name":"_codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86043,"src":"40054:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":86134,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74531,"src":"40030:14:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":86137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40030:32:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86138,"nodeType":"EmitStatement","src":"40025:37:168"},{"expression":{"components":[{"id":86139,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86097,"src":"40081:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":86140,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86057,"src":"40090:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"id":86141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"40080:17:168","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"tuple(address,struct IRouter.Storage storage pointer)"}},"functionReturnParameters":86054,"id":86142,"nodeType":"Return","src":"40073:24:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_createProgram","nameLocation":"39179:14:168","parameters":{"id":86048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86043,"mutability":"mutable","name":"_codeId","nameLocation":"39202:7:168","nodeType":"VariableDeclaration","scope":86144,"src":"39194:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86042,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39194:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":86045,"mutability":"mutable","name":"_salt","nameLocation":"39219:5:168","nodeType":"VariableDeclaration","scope":86144,"src":"39211:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86044,"name":"bytes32","nodeType":"ElementaryTypeName","src":"39211:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":86047,"mutability":"mutable","name":"_isSmall","nameLocation":"39231:8:168","nodeType":"VariableDeclaration","scope":86144,"src":"39226:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86046,"name":"bool","nodeType":"ElementaryTypeName","src":"39226:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39193:47:168"},"returnParameters":{"id":86054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86144,"src":"39258:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86049,"name":"address","nodeType":"ElementaryTypeName","src":"39258:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":86053,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86144,"src":"39267:15:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86052,"nodeType":"UserDefinedTypeName","pathNode":{"id":86051,"name":"Storage","nameLocations":["39267:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"39267:7:168"},"referencedDeclaration":74490,"src":"39267:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"39257:26:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86207,"nodeType":"FunctionDefinition","src":"40110:683:168","nodes":[],"body":{"id":86206,"nodeType":"Block","src":"40220:573:168","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86156,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86150,"src":"40238:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40245:15:168","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":87500,"src":"40238:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":86158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40261:6:168","memberName":"length","nodeType":"MemberAccess","src":"40238:29:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":86159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40271:1:168","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"40238:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86161,"name":"TooManyChainCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74608,"src":"40274:23:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40274:25:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86155,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"40230:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40230:70:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86164,"nodeType":"ExpressionStatement","src":"40230:70:168"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86165,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86150,"src":"40315:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40322:15:168","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":87500,"src":"40315:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":86167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40338:6:168","memberName":"length","nodeType":"MemberAccess","src":"40315:29:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":86168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40348:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"40315:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86175,"nodeType":"IfStatement","src":"40311:177:168","trueBody":{"id":86174,"nodeType":"Block","src":"40351:137:168","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":86171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"40474:2:168","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":86170,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"40464:9:168","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":86172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40464:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86154,"id":86173,"nodeType":"Return","src":"40457:20:168"}]}},{"assignments":[86180],"declarations":[{"constant":false,"id":86180,"mutability":"mutable","name":"_commitment","nameLocation":"40528:11:168","nodeType":"VariableDeclaration","scope":86206,"src":"40498:41:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment"},"typeName":{"id":86179,"nodeType":"UserDefinedTypeName","pathNode":{"id":86178,"name":"Gear.ChainCommitment","nameLocations":["40498:4:168","40503:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87470,"src":"40498:20:168"},"referencedDeclaration":87470,"src":"40498:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_storage_ptr","typeString":"struct Gear.ChainCommitment"}},"visibility":"internal"}],"id":86185,"initialValue":{"baseExpression":{"expression":{"id":86181,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86150,"src":"40542:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40549:15:168","memberName":"chainCommitment","nodeType":"MemberAccess","referencedDeclaration":87500,"src":"40542:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ChainCommitment_$87470_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata[] calldata"}},"id":86184,"indexExpression":{"hexValue":"30","id":86183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40565:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"40542:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"40498:69:168"},{"assignments":[86187],"declarations":[{"constant":false,"id":86187,"mutability":"mutable","name":"_transitionsHash","nameLocation":"40586:16:168","nodeType":"VariableDeclaration","scope":86206,"src":"40578:24:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86186,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40578:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86193,"initialValue":{"arguments":[{"id":86189,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86147,"src":"40624:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":86190,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86180,"src":"40632:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":86191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40644:11:168","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":87466,"src":"40632:23:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}],"id":86188,"name":"_commitTransitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86772,"src":"40605:18:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Storage_$74490_storage_ptr_$_t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.Storage storage pointer,struct Gear.StateTransition calldata[] calldata) returns (bytes32)"}},"id":86192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40605:51:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"40578:78:168"},{"eventCall":{"arguments":[{"expression":{"id":86195,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86180,"src":"40691:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":86196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40703:4:168","memberName":"head","nodeType":"MemberAccess","referencedDeclaration":87469,"src":"40691:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":86194,"name":"AnnouncesCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74500,"src":"40672:18:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":86197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40672:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86198,"nodeType":"EmitStatement","src":"40667:41:168"},{"expression":{"arguments":[{"id":86201,"name":"_transitionsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86187,"src":"40751:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":86202,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86180,"src":"40769:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ChainCommitment_$87470_calldata_ptr","typeString":"struct Gear.ChainCommitment calldata"}},"id":86203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40781:4:168","memberName":"head","nodeType":"MemberAccess","referencedDeclaration":87469,"src":"40769:16:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86199,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"40726:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40731:19:168","memberName":"chainCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87746,"src":"40726:24:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":86204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40726:60:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86154,"id":86205,"nodeType":"Return","src":"40719:67:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitChain","nameLocation":"40119:12:168","parameters":{"id":86151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86147,"mutability":"mutable","name":"router","nameLocation":"40148:6:168","nodeType":"VariableDeclaration","scope":86207,"src":"40132:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86146,"nodeType":"UserDefinedTypeName","pathNode":{"id":86145,"name":"Storage","nameLocations":["40132:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"40132:7:168"},"referencedDeclaration":74490,"src":"40132:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":86150,"mutability":"mutable","name":"_batch","nameLocation":"40186:6:168","nodeType":"VariableDeclaration","scope":86207,"src":"40156:36:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":86149,"nodeType":"UserDefinedTypeName","pathNode":{"id":86148,"name":"Gear.BatchCommitment","nameLocations":["40156:4:168","40161:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"40156:20:168"},"referencedDeclaration":87516,"src":"40156:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"40131:62:168"},"returnParameters":{"id":86154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86207,"src":"40211:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40211:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"40210:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86349,"nodeType":"FunctionDefinition","src":"40799:1402:168","nodes":[],"body":{"id":86348,"nodeType":"Block","src":"40909:1292:168","nodes":[],"statements":[{"assignments":[86219],"declarations":[{"constant":false,"id":86219,"mutability":"mutable","name":"codeCommitmentsLen","nameLocation":"40927:18:168","nodeType":"VariableDeclaration","scope":86348,"src":"40919:26:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86218,"name":"uint256","nodeType":"ElementaryTypeName","src":"40919:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86223,"initialValue":{"expression":{"expression":{"id":86220,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86213,"src":"40948:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40955:15:168","memberName":"codeCommitments","nodeType":"MemberAccess","referencedDeclaration":87505,"src":"40948:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$87460_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":86222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40971:6:168","memberName":"length","nodeType":"MemberAccess","src":"40948:29:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40919:58:168"},{"assignments":[86225],"declarations":[{"constant":false,"id":86225,"mutability":"mutable","name":"codeCommitmentsHashSize","nameLocation":"40995:23:168","nodeType":"VariableDeclaration","scope":86348,"src":"40987:31:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86224,"name":"uint256","nodeType":"ElementaryTypeName","src":"40987:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86229,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86226,"name":"codeCommitmentsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86219,"src":"41021:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":86227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41042:2:168","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"41021:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"40987:57:168"},{"assignments":[86231],"declarations":[{"constant":false,"id":86231,"mutability":"mutable","name":"codeCommitmentsPtr","nameLocation":"41062:18:168","nodeType":"VariableDeclaration","scope":86348,"src":"41054:26:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86230,"name":"uint256","nodeType":"ElementaryTypeName","src":"41054:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86236,"initialValue":{"arguments":[{"id":86234,"name":"codeCommitmentsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86225,"src":"41099:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":86232,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41083:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":86233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41090:8:168","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"41083:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":86235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41083:40:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"41054:69:168"},{"assignments":[86238],"declarations":[{"constant":false,"id":86238,"mutability":"mutable","name":"offset","nameLocation":"41141:6:168","nodeType":"VariableDeclaration","scope":86348,"src":"41133:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86237,"name":"uint256","nodeType":"ElementaryTypeName","src":"41133:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86240,"initialValue":{"hexValue":"30","id":86239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41150:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41133:18:168"},{"body":{"id":86339,"nodeType":"Block","src":"41211:884:168","statements":[{"assignments":[86255],"declarations":[{"constant":false,"id":86255,"mutability":"mutable","name":"_commitment","nameLocation":"41254:11:168","nodeType":"VariableDeclaration","scope":86339,"src":"41225:40:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment"},"typeName":{"id":86254,"nodeType":"UserDefinedTypeName","pathNode":{"id":86253,"name":"Gear.CodeCommitment","nameLocations":["41225:4:168","41230:14:168"],"nodeType":"IdentifierPath","referencedDeclaration":87460,"src":"41225:19:168"},"referencedDeclaration":87460,"src":"41225:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_storage_ptr","typeString":"struct Gear.CodeCommitment"}},"visibility":"internal"}],"id":86260,"initialValue":{"baseExpression":{"expression":{"id":86256,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86213,"src":"41268:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41275:15:168","memberName":"codeCommitments","nodeType":"MemberAccess","referencedDeclaration":87505,"src":"41268:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$87460_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata[] calldata"}},"id":86259,"indexExpression":{"id":86258,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86242,"src":"41291:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41268:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"41225:68:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"},"id":86271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":86262,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86210,"src":"41333:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41340:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41333:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41353:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"41333:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":86267,"indexExpression":{"expression":{"id":86265,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41359:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41371:2:168","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41359:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"41333:41:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":86268,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41378:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41383:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"41378:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":86270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41393:19:168","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":87553,"src":"41378:34:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"41333:79:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86272,"name":"CodeValidationNotRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74612,"src":"41430:26:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41430:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"41308:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41308:164:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86275,"nodeType":"ExpressionStatement","src":"41308:164:168"},{"condition":{"expression":{"id":86276,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41491:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41503:5:168","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":87459,"src":"41491:17:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":86307,"nodeType":"Block","src":"41676:81:168","statements":[{"expression":{"id":86305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"41694:48:168","subExpression":{"baseExpression":{"expression":{"expression":{"id":86299,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86210,"src":"41701:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86300,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41708:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41701:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41721:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"41701:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":86304,"indexExpression":{"expression":{"id":86302,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41727:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41739:2:168","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41727:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41701:41:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86306,"nodeType":"ExpressionStatement","src":"41694:48:168"}]},"id":86308,"nodeType":"IfStatement","src":"41487:270:168","trueBody":{"id":86298,"nodeType":"Block","src":"41510:160:168","statements":[{"expression":{"id":86289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"expression":{"id":86278,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86210,"src":"41528:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41535:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41528:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41548:5:168","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":87604,"src":"41528:25:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$87556_$","typeString":"mapping(bytes32 => enum Gear.CodeState)"}},"id":86285,"indexExpression":{"expression":{"id":86281,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41554:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41566:2:168","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41554:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"41528:41:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":86286,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41572:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41577:9:168","memberName":"CodeState","nodeType":"MemberAccess","referencedDeclaration":87556,"src":"41572:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$87556_$","typeString":"type(enum Gear.CodeState)"}},"id":86288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41587:9:168","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":87555,"src":"41572:24:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"src":"41528:68:168","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$87556","typeString":"enum Gear.CodeState"}},"id":86290,"nodeType":"ExpressionStatement","src":"41528:68:168"},{"expression":{"id":86296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41614:41:168","subExpression":{"expression":{"expression":{"id":86291,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86210,"src":"41614:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"41621:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"41614:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86295,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"41634:19:168","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":87615,"src":"41614:39:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86297,"nodeType":"ExpressionStatement","src":"41614:41:168"}]}},{"eventCall":{"arguments":[{"expression":{"id":86310,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41793:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41805:2:168","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41793:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":86312,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41809:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41821:5:168","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":87459,"src":"41809:17:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":86309,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74507,"src":"41776:16:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":86314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41776:51:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86315,"nodeType":"EmitStatement","src":"41771:56:168"},{"assignments":[86317],"declarations":[{"constant":false,"id":86317,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"41850:18:168","nodeType":"VariableDeclaration","scope":86339,"src":"41842:26:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86316,"name":"bytes32","nodeType":"ElementaryTypeName","src":"41842:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86325,"initialValue":{"arguments":[{"expression":{"id":86320,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41895:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41907:2:168","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":87456,"src":"41895:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":86322,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86255,"src":"41911:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$87460_calldata_ptr","typeString":"struct Gear.CodeCommitment calldata"}},"id":86323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41923:5:168","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":87459,"src":"41911:17:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":86318,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"41871:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41876:18:168","memberName":"codeCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87763,"src":"41871:23:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bool_$returns$_t_bytes32_$","typeString":"function (bytes32,bool) pure returns (bytes32)"}},"id":86324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41871:58:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"41842:87:168"},{"expression":{"arguments":[{"id":86329,"name":"codeCommitmentsPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86231,"src":"41969:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":86330,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86238,"src":"41989:6:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":86331,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86317,"src":"41997:18:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86326,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"41943:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":86328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41950:18:168","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"41943:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":86332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41943:73:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86333,"nodeType":"ExpressionStatement","src":"41943:73:168"},{"id":86338,"nodeType":"UncheckedBlock","src":"42030:55:168","statements":[{"expression":{"id":86336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86334,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86238,"src":"42058:6:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":86335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42068:2:168","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"42058:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86337,"nodeType":"ExpressionStatement","src":"42058:12:168"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86245,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86242,"src":"41182:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":86246,"name":"codeCommitmentsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86219,"src":"41186:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"41182:22:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86340,"initializationExpression":{"assignments":[86242],"declarations":[{"constant":false,"id":86242,"mutability":"mutable","name":"i","nameLocation":"41175:1:168","nodeType":"VariableDeclaration","scope":86340,"src":"41167:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86241,"name":"uint256","nodeType":"ElementaryTypeName","src":"41167:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86244,"initialValue":{"hexValue":"30","id":86243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41179:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"41167:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":86249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"41206:3:168","subExpression":{"id":86248,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86242,"src":"41206:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86250,"nodeType":"ExpressionStatement","src":"41206:3:168"},"nodeType":"ForStatement","src":"41162:933:168"},{"expression":{"arguments":[{"id":86343,"name":"codeCommitmentsPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86231,"src":"42147:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":86344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42167:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":86345,"name":"codeCommitmentsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86225,"src":"42170:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":86341,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"42112:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":86342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42119:27:168","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"42112:34:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":86346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42112:82:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86217,"id":86347,"nodeType":"Return","src":"42105:89:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitCodes","nameLocation":"40808:12:168","parameters":{"id":86214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86210,"mutability":"mutable","name":"router","nameLocation":"40837:6:168","nodeType":"VariableDeclaration","scope":86349,"src":"40821:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86209,"nodeType":"UserDefinedTypeName","pathNode":{"id":86208,"name":"Storage","nameLocations":["40821:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"40821:7:168"},"referencedDeclaration":74490,"src":"40821:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":86213,"mutability":"mutable","name":"_batch","nameLocation":"40875:6:168","nodeType":"VariableDeclaration","scope":86349,"src":"40845:36:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":86212,"nodeType":"UserDefinedTypeName","pathNode":{"id":86211,"name":"Gear.BatchCommitment","nameLocations":["40845:4:168","40850:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"40845:20:168"},"referencedDeclaration":87516,"src":"40845:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"40820:62:168"},"returnParameters":{"id":86217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86216,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86349,"src":"40900:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"40900:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"40899:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86506,"nodeType":"FunctionDefinition","src":"42243:1705:168","nodes":[],"body":{"id":86505,"nodeType":"Block","src":"42355:1593:168","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86361,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86355,"src":"42373:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42380:17:168","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":87510,"src":"42373:24:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":86363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42398:6:168","memberName":"length","nodeType":"MemberAccess","src":"42373:31:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":86364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42408:1:168","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"42373:36:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86366,"name":"TooManyRewardsCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74614,"src":"42411:25:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42411:27:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42365:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42365:74:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86369,"nodeType":"ExpressionStatement","src":"42365:74:168"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86370,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86355,"src":"42454:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42461:17:168","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":87510,"src":"42454:24:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":86372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42479:6:168","memberName":"length","nodeType":"MemberAccess","src":"42454:31:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":86373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42489:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"42454:36:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86380,"nodeType":"IfStatement","src":"42450:179:168","trueBody":{"id":86379,"nodeType":"Block","src":"42492:137:168","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":86376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"42615:2:168","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":86375,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"42605:9:168","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":86377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42605:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86359,"id":86378,"nodeType":"Return","src":"42598:20:168"}]}},{"assignments":[86385],"declarations":[{"constant":false,"id":86385,"mutability":"mutable","name":"_commitment","nameLocation":"42671:11:168","nodeType":"VariableDeclaration","scope":86505,"src":"42639:43:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment"},"typeName":{"id":86384,"nodeType":"UserDefinedTypeName","pathNode":{"id":86383,"name":"Gear.RewardsCommitment","nameLocations":["42639:4:168","42644:17:168"],"nodeType":"IdentifierPath","referencedDeclaration":87526,"src":"42639:22:168"},"referencedDeclaration":87526,"src":"42639:22:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_storage_ptr","typeString":"struct Gear.RewardsCommitment"}},"visibility":"internal"}],"id":86390,"initialValue":{"baseExpression":{"expression":{"id":86386,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86355,"src":"42685:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42692:17:168","memberName":"rewardsCommitment","nodeType":"MemberAccess","referencedDeclaration":87510,"src":"42685:24:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_RewardsCommitment_$87526_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata[] calldata"}},"id":86389,"indexExpression":{"hexValue":"30","id":86388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42710:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"42685:27:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"42639:73:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":86396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86392,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"42731:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42743:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"42731:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":86394,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86355,"src":"42755:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42762:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"42755:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"42731:45:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86397,"name":"RewardsCommitmentTimestampNotInPast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74616,"src":"42778:35:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42778:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86391,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42723:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42723:93:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86400,"nodeType":"ExpressionStatement","src":"42723:93:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":86407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86402,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"42834:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42846:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"42834:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"expression":{"id":86404,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86352,"src":"42859:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42866:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"42859:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":86406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"42879:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"42859:29:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"42834:54:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86408,"name":"RewardsCommitmentPredatesGenesis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74618,"src":"42890:32:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42890:34:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86401,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"42826:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42826:99:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86411,"nodeType":"ExpressionStatement","src":"42826:99:168"},{"assignments":[86413],"declarations":[{"constant":false,"id":86413,"mutability":"mutable","name":"commitmentEraIndex","nameLocation":"42944:18:168","nodeType":"VariableDeclaration","scope":86505,"src":"42936:26:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86412,"name":"uint256","nodeType":"ElementaryTypeName","src":"42936:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86420,"initialValue":{"arguments":[{"id":86416,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86352,"src":"42981:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":86417,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"42989:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43001:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"42989:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":86414,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"42965:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42970:10:168","memberName":"eraIndexAt","nodeType":"MemberAccess","referencedDeclaration":88498,"src":"42965:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":86419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42965:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"42936:75:168"},{"assignments":[86422],"declarations":[{"constant":false,"id":86422,"mutability":"mutable","name":"batchEraIndex","nameLocation":"43029:13:168","nodeType":"VariableDeclaration","scope":86505,"src":"43021:21:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86421,"name":"uint256","nodeType":"ElementaryTypeName","src":"43021:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86429,"initialValue":{"arguments":[{"id":86425,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86352,"src":"43061:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},{"expression":{"id":86426,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86355,"src":"43069:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43076:14:168","memberName":"blockTimestamp","nodeType":"MemberAccess","referencedDeclaration":87489,"src":"43069:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":86423,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"43045:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43050:10:168","memberName":"eraIndexAt","nodeType":"MemberAccess","referencedDeclaration":88498,"src":"43045:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IRouter.Storage storage pointer,uint256) view returns (uint256)"}},"id":86428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43045:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"43021:70:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86431,"name":"commitmentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86413,"src":"43110:18:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":86432,"name":"batchEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86422,"src":"43131:13:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43110:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86434,"name":"RewardsCommitmentEraNotPrevious","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74620,"src":"43146:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43146:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86430,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"43102:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43102:78:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86437,"nodeType":"ExpressionStatement","src":"43102:78:168"},{"assignments":[86439],"declarations":[{"constant":false,"id":86439,"mutability":"mutable","name":"_middleware","nameLocation":"43199:11:168","nodeType":"VariableDeclaration","scope":86505,"src":"43191:19:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86438,"name":"address","nodeType":"ElementaryTypeName","src":"43191:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":86443,"initialValue":{"expression":{"expression":{"id":86440,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86352,"src":"43213:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43220:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43213:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":86442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43234:10:168","memberName":"middleware","nodeType":"MemberAccess","referencedDeclaration":87451,"src":"43213:31:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"43191:53:168"},{"assignments":[86445],"declarations":[{"constant":false,"id":86445,"mutability":"mutable","name":"success","nameLocation":"43259:7:168","nodeType":"VariableDeclaration","scope":86505,"src":"43254:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":86444,"name":"bool","nodeType":"ElementaryTypeName","src":"43254:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":86461,"initialValue":{"arguments":[{"id":86452,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86439,"src":"43337:11:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86453,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43350:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43362:9:168","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":87520,"src":"43350:21:168","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":86455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43372:6:168","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":87529,"src":"43350:28:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"expression":{"id":86456,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43381:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43393:7:168","memberName":"stakers","nodeType":"MemberAccess","referencedDeclaration":87523,"src":"43381:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"}},"id":86458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43401:11:168","memberName":"totalAmount","nodeType":"MemberAccess","referencedDeclaration":87539,"src":"43381:31:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"43350:62:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"expression":{"id":86447,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86352,"src":"43282:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86448,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43289:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43282:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":86449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43303:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"43282:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86446,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75001,"src":"43269:12:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$75001_$","typeString":"type(contract IWrappedVara)"}},"id":86450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43269:46:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$75001","typeString":"contract IWrappedVara"}},"id":86451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43329:7:168","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":46823,"src":"43269:67:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":86460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43269:144:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"43254:159:168"},{"expression":{"arguments":[{"id":86463,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86445,"src":"43431:7:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86464,"name":"ApproveERC20Failed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74622,"src":"43440:18:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43440:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86462,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"43423:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43423:38:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86467,"nodeType":"ExpressionStatement","src":"43423:38:168"},{"assignments":[86469],"declarations":[{"constant":false,"id":86469,"mutability":"mutable","name":"_operatorRewardsHash","nameLocation":"43480:20:168","nodeType":"VariableDeclaration","scope":86505,"src":"43472:28:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86468,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43472:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86484,"initialValue":{"arguments":[{"expression":{"expression":{"id":86474,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86352,"src":"43584:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43591:13:168","memberName":"implAddresses","nodeType":"MemberAccess","referencedDeclaration":74473,"src":"43584:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_AddressBook_$87452_storage","typeString":"struct Gear.AddressBook storage ref"}},"id":86476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"43605:11:168","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":87448,"src":"43584:32:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":86477,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43618:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43630:9:168","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":87520,"src":"43618:21:168","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":86479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43640:6:168","memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":87529,"src":"43618:28:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":86480,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43648:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43660:9:168","memberName":"operators","nodeType":"MemberAccess","referencedDeclaration":87520,"src":"43648:21:168","typeDescriptions":{"typeIdentifier":"t_struct$_OperatorRewardsCommitment_$87532_calldata_ptr","typeString":"struct Gear.OperatorRewardsCommitment calldata"}},"id":86482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43670:4:168","memberName":"root","nodeType":"MemberAccess","referencedDeclaration":87531,"src":"43648:26:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":86471,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86439,"src":"43515:11:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86470,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"43503:11:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$74131_$","typeString":"type(contract IMiddleware)"}},"id":86472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43503:24:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$74131","typeString":"contract IMiddleware"}},"id":86473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43541:25:168","memberName":"distributeOperatorRewards","nodeType":"MemberAccess","referencedDeclaration":74119,"src":"43503:63:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) external returns (bytes32)"}},"id":86483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43503:185:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43472:216:168"},{"assignments":[86486],"declarations":[{"constant":false,"id":86486,"mutability":"mutable","name":"_stakerRewardsHash","nameLocation":"43707:18:168","nodeType":"VariableDeclaration","scope":86505,"src":"43699:26:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"43699:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86496,"initialValue":{"arguments":[{"expression":{"id":86491,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43789:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43801:7:168","memberName":"stakers","nodeType":"MemberAccess","referencedDeclaration":87523,"src":"43789:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"}},{"expression":{"id":86493,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43810:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43822:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"43810:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StakerRewardsCommitment_$87542_calldata_ptr","typeString":"struct Gear.StakerRewardsCommitment calldata"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"arguments":[{"id":86488,"name":"_middleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86439,"src":"43752:11:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86487,"name":"IMiddleware","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74131,"src":"43740:11:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMiddleware_$74131_$","typeString":"type(contract IMiddleware)"}},"id":86489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43740:24:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMiddleware_$74131","typeString":"contract IMiddleware"}},"id":86490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43765:23:168","memberName":"distributeStakerRewards","nodeType":"MemberAccess","referencedDeclaration":74130,"src":"43740:48:168","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_StakerRewardsCommitment_$87542_memory_ptr_$_t_uint48_$returns$_t_bytes32_$","typeString":"function (struct Gear.StakerRewardsCommitment memory,uint48) external returns (bytes32)"}},"id":86495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43740:92:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"43699:133:168"},{"expression":{"arguments":[{"id":86499,"name":"_operatorRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86469,"src":"43877:20:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":86500,"name":"_stakerRewardsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86486,"src":"43899:18:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":86501,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86385,"src":"43919:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_RewardsCommitment_$87526_calldata_ptr","typeString":"struct Gear.RewardsCommitment calldata"}},"id":86502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43931:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87525,"src":"43919:21:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":86497,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"43850:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43855:21:168","memberName":"rewardsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87785,"src":"43850:26:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint48_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,uint48) pure returns (bytes32)"}},"id":86503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43850:91:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86359,"id":86504,"nodeType":"Return","src":"43843:98:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitRewards","nameLocation":"42252:14:168","parameters":{"id":86356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86352,"mutability":"mutable","name":"router","nameLocation":"42283:6:168","nodeType":"VariableDeclaration","scope":86506,"src":"42267:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86351,"nodeType":"UserDefinedTypeName","pathNode":{"id":86350,"name":"Storage","nameLocations":["42267:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"42267:7:168"},"referencedDeclaration":74490,"src":"42267:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":86355,"mutability":"mutable","name":"_batch","nameLocation":"42321:6:168","nodeType":"VariableDeclaration","scope":86506,"src":"42291:36:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":86354,"nodeType":"UserDefinedTypeName","pathNode":{"id":86353,"name":"Gear.BatchCommitment","nameLocations":["42291:4:168","42296:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"42291:20:168"},"referencedDeclaration":87516,"src":"42291:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"42266:62:168"},"returnParameters":{"id":86359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86506,"src":"42346:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"42346:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"42345:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86652,"nodeType":"FunctionDefinition","src":"44015:1657:168","nodes":[],"body":{"id":86651,"nodeType":"Block","src":"44130:1542:168","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86519,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86513,"src":"44148:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44155:20:168","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":87515,"src":"44148:27:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":86521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44176:6:168","memberName":"length","nodeType":"MemberAccess","src":"44148:34:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":86522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44186:1:168","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44148:39:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86524,"name":"TooManyValidatorsCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74624,"src":"44189:28:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44189:30:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86518,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44140:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44140:80:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86527,"nodeType":"ExpressionStatement","src":"44140:80:168"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86528,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86513,"src":"44235:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44242:20:168","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":87515,"src":"44235:27:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":86530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44263:6:168","memberName":"length","nodeType":"MemberAccess","src":"44235:34:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":86531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44273:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44235:39:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86538,"nodeType":"IfStatement","src":"44231:182:168","trueBody":{"id":86537,"nodeType":"Block","src":"44276:137:168","statements":[{"documentation":" forge-lint: disable-next-item(asm-keccak256)","expression":{"arguments":[{"hexValue":"","id":86534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"44399:2:168","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":86533,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"44389:9:168","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":86535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44389:13:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86517,"id":86536,"nodeType":"Return","src":"44382:20:168"}]}},{"assignments":[86543],"declarations":[{"constant":false,"id":86543,"mutability":"mutable","name":"_commitment","nameLocation":"44458:11:168","nodeType":"VariableDeclaration","scope":86651,"src":"44423:46:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment"},"typeName":{"id":86542,"nodeType":"UserDefinedTypeName","pathNode":{"id":86541,"name":"Gear.ValidatorsCommitment","nameLocations":["44423:4:168","44428:20:168"],"nodeType":"IdentifierPath","referencedDeclaration":87482,"src":"44423:25:168"},"referencedDeclaration":87482,"src":"44423:25:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_storage_ptr","typeString":"struct Gear.ValidatorsCommitment"}},"visibility":"internal"}],"id":86548,"initialValue":{"baseExpression":{"expression":{"id":86544,"name":"_batch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86513,"src":"44472:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment calldata"}},"id":86545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44479:20:168","memberName":"validatorsCommitment","nodeType":"MemberAccess","referencedDeclaration":87515,"src":"44472:27:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValidatorsCommitment_$87482_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata[] calldata"}},"id":86547,"indexExpression":{"hexValue":"30","id":86546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44500:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"44472:30:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"44423:79:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86550,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"44521:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44533:10:168","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":87479,"src":"44521:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":86552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44544:6:168","memberName":"length","nodeType":"MemberAccess","src":"44521:29:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":86553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44553:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"44521:33:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86555,"name":"EmptyValidatorsList","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74626,"src":"44556:19:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44556:21:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86549,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44513:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44513:65:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86558,"nodeType":"ExpressionStatement","src":"44513:65:168"},{"assignments":[86560],"declarations":[{"constant":false,"id":86560,"mutability":"mutable","name":"currentEraIndex","nameLocation":"44651:15:168","nodeType":"VariableDeclaration","scope":86651,"src":"44643:23:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86559,"name":"uint256","nodeType":"ElementaryTypeName","src":"44643:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86572,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86561,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44670:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44676:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"44670:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":86563,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86510,"src":"44688:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44695:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"44688:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":86565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44708:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"44688:29:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"44670:47:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":86567,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"44669:49:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"expression":{"id":86568,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86510,"src":"44721:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44728:9:168","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44721:16:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":86570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44738:3:168","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"44721:20:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44669:72:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44643:98:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86574,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"44760:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44772:8:168","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"44760:20:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86576,"name":"currentEraIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86560,"src":"44784:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":86577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44802:1:168","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"44784:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44760:43:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86580,"name":"CommitmentEraNotNext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74628,"src":"44805:20:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44805:22:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86573,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44752:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44752:76:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86583,"nodeType":"ExpressionStatement","src":"44752:76:168"},{"assignments":[86585],"declarations":[{"constant":false,"id":86585,"mutability":"mutable","name":"nextEraStart","nameLocation":"44847:12:168","nodeType":"VariableDeclaration","scope":86651,"src":"44839:20:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86584,"name":"uint256","nodeType":"ElementaryTypeName","src":"44839:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86596,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86586,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86510,"src":"44862:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44869:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"44862:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":86588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44882:9:168","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":87575,"src":"44862:29:168","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86589,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86510,"src":"44894:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44901:9:168","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44894:16:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":86591,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44911:3:168","memberName":"era","nodeType":"MemberAccess","referencedDeclaration":87666,"src":"44894:20:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":86592,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"44917:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44929:8:168","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"44917:20:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44894:43:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44862:75:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"44839:98:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86598,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"44955:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44961:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"44955:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86600,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86585,"src":"44974:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"expression":{"id":86601,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86510,"src":"44989:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"44996:9:168","memberName":"timelines","nodeType":"MemberAccess","referencedDeclaration":74485,"src":"44989:16:168","typeDescriptions":{"typeIdentifier":"t_struct$_Timelines_$87671_storage","typeString":"struct Gear.Timelines storage ref"}},"id":86603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45006:8:168","memberName":"election","nodeType":"MemberAccess","referencedDeclaration":87668,"src":"44989:25:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44974:40:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"44955:59:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86606,"name":"ElectionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74630,"src":"45016:18:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45016:20:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86597,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"44947:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44947:90:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86609,"nodeType":"ExpressionStatement","src":"44947:90:168"},{"assignments":[86614],"declarations":[{"constant":false,"id":86614,"mutability":"mutable","name":"_validators","nameLocation":"45119:11:168","nodeType":"VariableDeclaration","scope":86651,"src":"45095:35:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":86613,"nodeType":"UserDefinedTypeName","pathNode":{"id":86612,"name":"Gear.Validators","nameLocations":["45095:4:168","45100:10:168"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"45095:15:168"},"referencedDeclaration":87429,"src":"45095:15:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"}],"id":86619,"initialValue":{"arguments":[{"id":86617,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86510,"src":"45160:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}],"expression":{"id":86615,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"45133:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45138:21:168","memberName":"previousEraValidators","nodeType":"MemberAccess","referencedDeclaration":88334,"src":"45133:26:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Storage_$74490_storage_ptr_$returns$_t_struct$_Validators_$87429_storage_ptr_$","typeString":"function (struct IRouter.Storage storage pointer) view returns (struct Gear.Validators storage pointer)"}},"id":86618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45133:34:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"45095:72:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86621,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86614,"src":"45185:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86622,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"45197:16:168","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"45185:28:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":86623,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"45216:5:168","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":86624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45222:9:168","memberName":"timestamp","nodeType":"MemberAccess","src":"45216:15:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"45185:46:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86626,"name":"ValidatorsAlreadyScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74632,"src":"45233:26:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45233:28:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86620,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"45177:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45177:85:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86629,"nodeType":"ExpressionStatement","src":"45177:85:168"},{"expression":{"arguments":[{"id":86631,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86614,"src":"45355:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},{"expression":{"id":86632,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"45380:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45392:19:168","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87474,"src":"45380:31:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"}},{"expression":{"id":86634,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"45425:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45437:33:168","memberName":"verifiableSecretSharingCommitment","nodeType":"MemberAccess","referencedDeclaration":87476,"src":"45425:45:168","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":86636,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"45484:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45496:10:168","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":87479,"src":"45484:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"id":86638,"name":"nextEraStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86585,"src":"45520:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"},{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_calldata_ptr","typeString":"struct Gear.AggregatedPublicKey calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86630,"name":"_resetValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86884,"src":"45325:16:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Validators_$87429_storage_ptr_$_t_struct$_AggregatedPublicKey_$87408_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct Gear.Validators storage pointer,struct Gear.AggregatedPublicKey memory,bytes memory,address[] memory,uint256)"}},"id":86639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45325:217:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86640,"nodeType":"ExpressionStatement","src":"45325:217:168"},{"eventCall":{"arguments":[{"expression":{"id":86642,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"45584:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}},"id":86643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45596:8:168","memberName":"eraIndex","nodeType":"MemberAccess","referencedDeclaration":87481,"src":"45584:20:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86641,"name":"ValidatorsCommittedForEra","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74517,"src":"45558:25:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":86644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45558:47:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86645,"nodeType":"EmitStatement","src":"45553:52:168"},{"expression":{"arguments":[{"id":86648,"name":"_commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86543,"src":"45653:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ValidatorsCommitment_$87482_calldata_ptr","typeString":"struct Gear.ValidatorsCommitment calldata"}],"expression":{"id":86646,"name":"Gear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88588,"src":"45623:4:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Gear_$88588_$","typeString":"type(library Gear)"}},"id":86647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45628:24:168","memberName":"validatorsCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":87811,"src":"45623:29:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ValidatorsCommitment_$87482_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.ValidatorsCommitment memory) pure returns (bytes32)"}},"id":86649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45623:42:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86517,"id":86650,"nodeType":"Return","src":"45616:49:168"}]},"documentation":{"id":86507,"nodeType":"StructuredDocumentation","src":"43954:56:168","text":" @dev Set validators for the next era."},"implemented":true,"kind":"function","modifiers":[],"name":"_commitValidators","nameLocation":"44024:17:168","parameters":{"id":86514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86510,"mutability":"mutable","name":"router","nameLocation":"44058:6:168","nodeType":"VariableDeclaration","scope":86652,"src":"44042:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86509,"nodeType":"UserDefinedTypeName","pathNode":{"id":86508,"name":"Storage","nameLocations":["44042:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"44042:7:168"},"referencedDeclaration":74490,"src":"44042:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":86513,"mutability":"mutable","name":"_batch","nameLocation":"44096:6:168","nodeType":"VariableDeclaration","scope":86652,"src":"44066:36:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_calldata_ptr","typeString":"struct Gear.BatchCommitment"},"typeName":{"id":86512,"nodeType":"UserDefinedTypeName","pathNode":{"id":86511,"name":"Gear.BatchCommitment","nameLocations":["44066:4:168","44071:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87516,"src":"44066:20:168"},"referencedDeclaration":87516,"src":"44066:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_BatchCommitment_$87516_storage_ptr","typeString":"struct Gear.BatchCommitment"}},"visibility":"internal"}],"src":"44041:62:168"},"returnParameters":{"id":86517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86652,"src":"44121:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"44121:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"44120:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86772,"nodeType":"FunctionDefinition","src":"45678:1168:168","nodes":[],"body":{"id":86771,"nodeType":"Block","src":"45822:1024:168","nodes":[],"statements":[{"assignments":[86665],"declarations":[{"constant":false,"id":86665,"mutability":"mutable","name":"transitionsLen","nameLocation":"45840:14:168","nodeType":"VariableDeclaration","scope":86771,"src":"45832:22:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86664,"name":"uint256","nodeType":"ElementaryTypeName","src":"45832:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86668,"initialValue":{"expression":{"id":86666,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86659,"src":"45857:12:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":86667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45870:6:168","memberName":"length","nodeType":"MemberAccess","src":"45857:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45832:44:168"},{"assignments":[86670],"declarations":[{"constant":false,"id":86670,"mutability":"mutable","name":"transitionsHashSize","nameLocation":"45894:19:168","nodeType":"VariableDeclaration","scope":86771,"src":"45886:27:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86669,"name":"uint256","nodeType":"ElementaryTypeName","src":"45886:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86674,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86671,"name":"transitionsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86665,"src":"45916:14:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":86672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45933:2:168","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"45916:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45886:49:168"},{"assignments":[86676],"declarations":[{"constant":false,"id":86676,"mutability":"mutable","name":"transitionsHashesMemPtr","nameLocation":"45953:23:168","nodeType":"VariableDeclaration","scope":86771,"src":"45945:31:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86675,"name":"uint256","nodeType":"ElementaryTypeName","src":"45945:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86681,"initialValue":{"arguments":[{"id":86679,"name":"transitionsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86670,"src":"45995:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":86677,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"45979:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":86678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45986:8:168","memberName":"allocate","nodeType":"MemberAccess","referencedDeclaration":41162,"src":"45979:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":86680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45979:36:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"45945:70:168"},{"assignments":[86683],"declarations":[{"constant":false,"id":86683,"mutability":"mutable","name":"offset","nameLocation":"46033:6:168","nodeType":"VariableDeclaration","scope":86771,"src":"46025:14:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86682,"name":"uint256","nodeType":"ElementaryTypeName","src":"46025:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86685,"initialValue":{"hexValue":"30","id":86684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46042:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46025:18:168"},{"body":{"id":86762,"nodeType":"Block","src":"46099:640:168","statements":[{"assignments":[86700],"declarations":[{"constant":false,"id":86700,"mutability":"mutable","name":"transition","nameLocation":"46143:10:168","nodeType":"VariableDeclaration","scope":86762,"src":"46113:40:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition"},"typeName":{"id":86699,"nodeType":"UserDefinedTypeName","pathNode":{"id":86698,"name":"Gear.StateTransition","nameLocations":["46113:4:168","46118:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"46113:20:168"},"referencedDeclaration":87663,"src":"46113:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"visibility":"internal"}],"id":86704,"initialValue":{"baseExpression":{"id":86701,"name":"_transitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86659,"src":"46156:12:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition calldata[] calldata"}},"id":86703,"indexExpression":{"id":86702,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86687,"src":"46169:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46156:15:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"46113:58:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":86706,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86655,"src":"46194:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86707,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46201:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"46194:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"46214:8:168","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"46194:28:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":86711,"indexExpression":{"expression":{"id":86709,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86700,"src":"46223:10:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":86710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46234:7:168","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"46223:18:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"46194:48:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":86712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46246:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"46194:53:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86714,"name":"UnknownProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"46249:14:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46249:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86705,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"46186:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46186:80:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86717,"nodeType":"ExpressionStatement","src":"46186:80:168"},{"assignments":[86719],"declarations":[{"constant":false,"id":86719,"mutability":"mutable","name":"value","nameLocation":"46289:5:168","nodeType":"VariableDeclaration","scope":86762,"src":"46281:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":86718,"name":"uint128","nodeType":"ElementaryTypeName","src":"46281:7:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":86721,"initialValue":{"hexValue":"30","id":86720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46297:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46281:17:168"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":86729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":86725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":86722,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86700,"src":"46317:10:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":86723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46328:14:168","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"46317:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":86724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46346:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"46317:30:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":86728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"46351:38:168","subExpression":{"expression":{"id":86726,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86700,"src":"46352:10:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":86727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46363:26:168","memberName":"valueToReceiveNegativeSign","nodeType":"MemberAccess","referencedDeclaration":87652,"src":"46352:37:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"46317:72:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86736,"nodeType":"IfStatement","src":"46313:144:168","trueBody":{"id":86735,"nodeType":"Block","src":"46391:66:168","statements":[{"expression":{"id":86733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86719,"src":"46409:5:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":86731,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86700,"src":"46417:10:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":86732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46428:14:168","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":87649,"src":"46417:25:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"46409:33:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":86734,"nodeType":"ExpressionStatement","src":"46409:33:168"}]}},{"assignments":[86738],"declarations":[{"constant":false,"id":86738,"mutability":"mutable","name":"transitionHash","nameLocation":"46479:14:168","nodeType":"VariableDeclaration","scope":86762,"src":"46471:22:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86737,"name":"bytes32","nodeType":"ElementaryTypeName","src":"46471:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86748,"initialValue":{"arguments":[{"id":86746,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86700,"src":"46561:10:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}],"expression":{"arguments":[{"expression":{"id":86740,"name":"transition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86700,"src":"46504:10:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_calldata_ptr","typeString":"struct Gear.StateTransition calldata"}},"id":86741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46515:7:168","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":87637,"src":"46504:18:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86739,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74395,"src":"46496:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$74395_$","typeString":"type(contract IMirror)"}},"id":86742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46496:27:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$74395","typeString":"contract IMirror"}},"id":86743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46524:22:168","memberName":"performStateTransition","nodeType":"MemberAccess","referencedDeclaration":74394,"src":"46496:50:168","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_StateTransition_$87663_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Gear.StateTransition memory) payable external returns (bytes32)"}},"id":86745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":86744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86719,"src":"46554:5:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"src":"46496:64:168","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_StateTransition_$87663_memory_ptr_$returns$_t_bytes32_$value","typeString":"function (struct Gear.StateTransition memory) payable external returns (bytes32)"}},"id":86747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46496:76:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"46471:101:168"},{"expression":{"arguments":[{"id":86752,"name":"transitionsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86676,"src":"46612:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":86753,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86683,"src":"46637:6:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":86754,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86738,"src":"46645:14:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86749,"name":"Memory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41257,"src":"46586:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Memory_$41257_$","typeString":"type(library Memory)"}},"id":86751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46593:18:168","memberName":"writeWordAsBytes32","nodeType":"MemberAccess","referencedDeclaration":41232,"src":"46586:25:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,bytes32) pure"}},"id":86755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46586:74:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86756,"nodeType":"ExpressionStatement","src":"46586:74:168"},{"id":86761,"nodeType":"UncheckedBlock","src":"46674:55:168","statements":[{"expression":{"id":86759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":86757,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86683,"src":"46702:6:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":86758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46712:2:168","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"46702:12:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86760,"nodeType":"ExpressionStatement","src":"46702:12:168"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86690,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86687,"src":"46074:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":86691,"name":"transitionsLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86665,"src":"46078:14:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"46074:18:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86763,"initializationExpression":{"assignments":[86687],"declarations":[{"constant":false,"id":86687,"mutability":"mutable","name":"i","nameLocation":"46067:1:168","nodeType":"VariableDeclaration","scope":86763,"src":"46059:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86686,"name":"uint256","nodeType":"ElementaryTypeName","src":"46059:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86689,"initialValue":{"hexValue":"30","id":86688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46071:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"46059:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":86694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"46094:3:168","subExpression":{"id":86693,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86687,"src":"46094:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86695,"nodeType":"ExpressionStatement","src":"46094:3:168"},"nodeType":"ForStatement","src":"46054:685:168"},{"expression":{"arguments":[{"id":86766,"name":"transitionsHashesMemPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86676,"src":"46791:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":86767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46816:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":86768,"name":"transitionsHashSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86670,"src":"46819:19:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":86764,"name":"Hashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41483,"src":"46756:6:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hashes_$41483_$","typeString":"type(library Hashes)"}},"id":86765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46763:27:168","memberName":"efficientKeccak256AsBytes32","nodeType":"MemberAccess","referencedDeclaration":41438,"src":"46756:34:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,uint256) pure returns (bytes32)"}},"id":86769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46756:83:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86663,"id":86770,"nodeType":"Return","src":"46749:90:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitTransitions","nameLocation":"45687:18:168","parameters":{"id":86660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86655,"mutability":"mutable","name":"router","nameLocation":"45722:6:168","nodeType":"VariableDeclaration","scope":86772,"src":"45706:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86654,"nodeType":"UserDefinedTypeName","pathNode":{"id":86653,"name":"Storage","nameLocations":["45706:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"45706:7:168"},"referencedDeclaration":74490,"src":"45706:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"},{"constant":false,"id":86659,"mutability":"mutable","name":"_transitions","nameLocation":"45762:12:168","nodeType":"VariableDeclaration","scope":86772,"src":"45730:44:168","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_calldata_ptr_$dyn_calldata_ptr","typeString":"struct Gear.StateTransition[]"},"typeName":{"baseType":{"id":86657,"nodeType":"UserDefinedTypeName","pathNode":{"id":86656,"name":"Gear.StateTransition","nameLocations":["45730:4:168","45735:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":87663,"src":"45730:20:168"},"referencedDeclaration":87663,"src":"45730:20:168","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$87663_storage_ptr","typeString":"struct Gear.StateTransition"}},"id":86658,"nodeType":"ArrayTypeName","src":"45730:22:168","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$87663_storage_$dyn_storage_ptr","typeString":"struct Gear.StateTransition[]"}},"visibility":"internal"}],"src":"45705:70:168"},"returnParameters":{"id":86663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86772,"src":"45809:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"45809:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"45808:9:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86884,"nodeType":"FunctionDefinition","src":"46852:1421:168","nodes":[],"body":{"id":86883,"nodeType":"Block","src":"47135:1138:168","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":86791,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86778,"src":"47525:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":86792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47549:1:168","memberName":"x","nodeType":"MemberAccess","referencedDeclaration":87405,"src":"47525:25:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":86793,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86778,"src":"47552:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"id":86794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47576:1:168","memberName":"y","nodeType":"MemberAccess","referencedDeclaration":87407,"src":"47552:25:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":86789,"name":"FROST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40965,"src":"47502:5:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FROST_$40965_$","typeString":"type(library FROST)"}},"id":86790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47508:16:168","memberName":"isValidPublicKey","nodeType":"MemberAccess","referencedDeclaration":40634,"src":"47502:22:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) pure returns (bool)"}},"id":86795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47502:76:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86796,"name":"InvalidFROSTAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74547,"src":"47592:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47592:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86788,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"47481:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47481:154:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86799,"nodeType":"ExpressionStatement","src":"47481:154:168"},{"expression":{"id":86804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":86800,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"47645:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47657:19:168","memberName":"aggregatedPublicKey","nodeType":"MemberAccess","referencedDeclaration":87413,"src":"47645:31:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86803,"name":"_newAggregatedPublicKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86778,"src":"47679:23:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey memory"}},"src":"47645:57:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage","typeString":"struct Gear.AggregatedPublicKey storage ref"}},"id":86805,"nodeType":"ExpressionStatement","src":"47645:57:168"},{"expression":{"id":86813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":86806,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"47712:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"47724:40:168","memberName":"verifiableSecretSharingCommitmentPointer","nodeType":"MemberAccess","referencedDeclaration":87416,"src":"47712:52:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":86811,"name":"_verifiableSecretSharingCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86780,"src":"47781:34:168","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":86809,"name":"SSTORE2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89044,"src":"47767:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SSTORE2_$89044_$","typeString":"type(library SSTORE2)"}},"id":86810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47775:5:168","memberName":"write","nodeType":"MemberAccess","referencedDeclaration":88900,"src":"47767:13:168","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":86812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47767:49:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"47712:104:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":86814,"nodeType":"ExpressionStatement","src":"47712:104:168"},{"body":{"id":86842,"nodeType":"Block","src":"47880:114:168","statements":[{"assignments":[86828],"declarations":[{"constant":false,"id":86828,"mutability":"mutable","name":"_validator","nameLocation":"47902:10:168","nodeType":"VariableDeclaration","scope":86842,"src":"47894:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86827,"name":"address","nodeType":"ElementaryTypeName","src":"47894:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":86833,"initialValue":{"baseExpression":{"expression":{"id":86829,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"47915:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86830,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47927:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"47915:16:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":86832,"indexExpression":{"id":86831,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86816,"src":"47932:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"47915:19:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"47894:40:168"},{"expression":{"id":86840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":86834,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"47948:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47960:3:168","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"47948:15:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":86838,"indexExpression":{"id":86836,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86828,"src":"47964:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"47948:27:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":86839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"47978:5:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"47948:35:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86841,"nodeType":"ExpressionStatement","src":"47948:35:168"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86819,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86816,"src":"47846:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":86820,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"47850:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"47862:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"47850:16:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":86822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47867:6:168","memberName":"length","nodeType":"MemberAccess","src":"47850:23:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"47846:27:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86843,"initializationExpression":{"assignments":[86816],"declarations":[{"constant":false,"id":86816,"mutability":"mutable","name":"i","nameLocation":"47839:1:168","nodeType":"VariableDeclaration","scope":86843,"src":"47831:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86815,"name":"uint256","nodeType":"ElementaryTypeName","src":"47831:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86818,"initialValue":{"hexValue":"30","id":86817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47843:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"47831:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":86825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"47875:3:168","subExpression":{"id":86824,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86816,"src":"47875:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86826,"nodeType":"ExpressionStatement","src":"47875:3:168"},"nodeType":"ForStatement","src":"47826:168:168"},{"body":{"id":86869,"nodeType":"Block","src":"48055:111:168","statements":[{"assignments":[86856],"declarations":[{"constant":false,"id":86856,"mutability":"mutable","name":"_validator","nameLocation":"48077:10:168","nodeType":"VariableDeclaration","scope":86869,"src":"48069:18:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86855,"name":"address","nodeType":"ElementaryTypeName","src":"48069:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":86860,"initialValue":{"baseExpression":{"id":86857,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86783,"src":"48090:14:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":86859,"indexExpression":{"id":86858,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86845,"src":"48105:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"48090:17:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"48069:38:168"},{"expression":{"id":86867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":86861,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"48121:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48133:3:168","memberName":"map","nodeType":"MemberAccess","referencedDeclaration":87421,"src":"48121:15:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":86865,"indexExpression":{"id":86863,"name":"_validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86856,"src":"48137:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"48121:27:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":86866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"48151:4:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"48121:34:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86868,"nodeType":"ExpressionStatement","src":"48121:34:168"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":86851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86848,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86845,"src":"48023:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":86849,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86783,"src":"48027:14:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":86850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48042:6:168","memberName":"length","nodeType":"MemberAccess","src":"48027:21:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"48023:25:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":86870,"initializationExpression":{"assignments":[86845],"declarations":[{"constant":false,"id":86845,"mutability":"mutable","name":"i","nameLocation":"48016:1:168","nodeType":"VariableDeclaration","scope":86870,"src":"48008:9:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86844,"name":"uint256","nodeType":"ElementaryTypeName","src":"48008:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":86847,"initialValue":{"hexValue":"30","id":86846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"48020:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"48008:13:168"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":86853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"48050:3:168","subExpression":{"id":86852,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86845,"src":"48050:1:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86854,"nodeType":"ExpressionStatement","src":"48050:3:168"},"nodeType":"ForStatement","src":"48003:163:168"},{"expression":{"id":86875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":86871,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"48175:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48187:4:168","memberName":"list","nodeType":"MemberAccess","referencedDeclaration":87425,"src":"48175:16:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86874,"name":"_newValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86783,"src":"48194:14:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"48175:33:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":86876,"nodeType":"ExpressionStatement","src":"48175:33:168"},{"expression":{"id":86881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":86877,"name":"_validators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86775,"src":"48218:11:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators storage pointer"}},"id":86879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48230:16:168","memberName":"useFromTimestamp","nodeType":"MemberAccess","referencedDeclaration":87428,"src":"48218:28:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86880,"name":"_useFromTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86785,"src":"48249:17:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"48218:48:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":86882,"nodeType":"ExpressionStatement","src":"48218:48:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_resetValidators","nameLocation":"46861:16:168","parameters":{"id":86786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86775,"mutability":"mutable","name":"_validators","nameLocation":"46911:11:168","nodeType":"VariableDeclaration","scope":86884,"src":"46887:35:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"},"typeName":{"id":86774,"nodeType":"UserDefinedTypeName","pathNode":{"id":86773,"name":"Gear.Validators","nameLocations":["46887:4:168","46892:10:168"],"nodeType":"IdentifierPath","referencedDeclaration":87429,"src":"46887:15:168"},"referencedDeclaration":87429,"src":"46887:15:168","typeDescriptions":{"typeIdentifier":"t_struct$_Validators_$87429_storage_ptr","typeString":"struct Gear.Validators"}},"visibility":"internal"},{"constant":false,"id":86778,"mutability":"mutable","name":"_newAggregatedPublicKey","nameLocation":"46964:23:168","nodeType":"VariableDeclaration","scope":86884,"src":"46932:55:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_memory_ptr","typeString":"struct Gear.AggregatedPublicKey"},"typeName":{"id":86777,"nodeType":"UserDefinedTypeName","pathNode":{"id":86776,"name":"Gear.AggregatedPublicKey","nameLocations":["46932:4:168","46937:19:168"],"nodeType":"IdentifierPath","referencedDeclaration":87408,"src":"46932:24:168"},"referencedDeclaration":87408,"src":"46932:24:168","typeDescriptions":{"typeIdentifier":"t_struct$_AggregatedPublicKey_$87408_storage_ptr","typeString":"struct Gear.AggregatedPublicKey"}},"visibility":"internal"},{"constant":false,"id":86780,"mutability":"mutable","name":"_verifiableSecretSharingCommitment","nameLocation":"47010:34:168","nodeType":"VariableDeclaration","scope":86884,"src":"46997:47:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86779,"name":"bytes","nodeType":"ElementaryTypeName","src":"46997:5:168","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":86783,"mutability":"mutable","name":"_newValidators","nameLocation":"47071:14:168","nodeType":"VariableDeclaration","scope":86884,"src":"47054:31:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":86781,"name":"address","nodeType":"ElementaryTypeName","src":"47054:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":86782,"nodeType":"ArrayTypeName","src":"47054:9:168","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":86785,"mutability":"mutable","name":"_useFromTimestamp","nameLocation":"47103:17:168","nodeType":"VariableDeclaration","scope":86884,"src":"47095:25:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86784,"name":"uint256","nodeType":"ElementaryTypeName","src":"47095:7:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"46877:249:168"},"returnParameters":{"id":86787,"nodeType":"ParameterList","parameters":[],"src":"47135:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86897,"nodeType":"FunctionDefinition","src":"48279:192:168","nodes":[],"body":{"id":86896,"nodeType":"Block","src":"48344:127:168","nodes":[],"statements":[{"assignments":[86891],"declarations":[{"constant":false,"id":86891,"mutability":"mutable","name":"slot","nameLocation":"48362:4:168","nodeType":"VariableDeclaration","scope":86896,"src":"48354:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48354:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86894,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":86892,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86909,"src":"48369:15:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":86893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48369:17:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"48354:32:168"},{"AST":{"nativeSrc":"48422:43:168","nodeType":"YulBlock","src":"48422:43:168","statements":[{"nativeSrc":"48436:19:168","nodeType":"YulAssignment","src":"48436:19:168","value":{"name":"slot","nativeSrc":"48451:4:168","nodeType":"YulIdentifier","src":"48451:4:168"},"variableNames":[{"name":"router.slot","nativeSrc":"48436:11:168","nodeType":"YulIdentifier","src":"48436:11:168"}]}]},"evmVersion":"osaka","externalReferences":[{"declaration":86888,"isOffset":false,"isSlot":true,"src":"48436:11:168","suffix":"slot","valueSize":1},{"declaration":86891,"isOffset":false,"isSlot":false,"src":"48451:4:168","valueSize":1}],"flags":["memory-safe"],"id":86895,"nodeType":"InlineAssembly","src":"48397:68:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_router","nameLocation":"48288:7:168","parameters":{"id":86885,"nodeType":"ParameterList","parameters":[],"src":"48295:2:168"},"returnParameters":{"id":86889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86888,"mutability":"mutable","name":"router","nameLocation":"48336:6:168","nodeType":"VariableDeclaration","scope":86897,"src":"48320:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86887,"nodeType":"UserDefinedTypeName","pathNode":{"id":86886,"name":"Storage","nameLocations":["48320:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"48320:7:168"},"referencedDeclaration":74490,"src":"48320:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"48319:24:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":86909,"nodeType":"FunctionDefinition","src":"48477:128:168","nodes":[],"body":{"id":86908,"nodeType":"Block","src":"48535:70:168","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":86904,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84136,"src":"48579:12:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86902,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"48552:11:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":86903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48564:14:168","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"48552:26:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":86905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48552:40:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":86906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"48593:5:168","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"48552:46:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":86901,"id":86907,"nodeType":"Return","src":"48545:53:168"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nameLocation":"48486:15:168","parameters":{"id":86898,"nodeType":"ParameterList","parameters":[],"src":"48501:2:168"},"returnParameters":{"id":86901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":86909,"src":"48526:7:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48526:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"48525:9:168"},"scope":86997,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":86937,"nodeType":"FunctionDefinition","src":"48611:240:168","nodes":[],"body":{"id":86936,"nodeType":"Block","src":"48679:172:168","nodes":[],"statements":[{"assignments":[86917],"declarations":[{"constant":false,"id":86917,"mutability":"mutable","name":"slot","nameLocation":"48697:4:168","nodeType":"VariableDeclaration","scope":86936,"src":"48689:12:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":86916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"48689:7:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":86922,"initialValue":{"arguments":[{"id":86920,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86911,"src":"48731:9:168","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":86918,"name":"SlotDerivation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48965,"src":"48704:14:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SlotDerivation_$48965_$","typeString":"type(library SlotDerivation)"}},"id":86919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48719:11:168","memberName":"erc7201Slot","nodeType":"MemberAccess","referencedDeclaration":48848,"src":"48704:26:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$","typeString":"function (string memory) pure returns (bytes32)"}},"id":86921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48704:37:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"48689:52:168"},{"expression":{"id":86930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":86926,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84136,"src":"48778:12:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":86923,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49089,"src":"48751:11:168","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$49089_$","typeString":"type(library StorageSlot)"}},"id":86925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48763:14:168","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":49022,"src":"48751:26:168","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$48977_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":86927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48751:40:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$48977_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":86928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"48792:5:168","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":48976,"src":"48751:46:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86929,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86917,"src":"48800:4:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"48751:53:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":86931,"nodeType":"ExpressionStatement","src":"48751:53:168"},{"eventCall":{"arguments":[{"id":86933,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86917,"src":"48839:4:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":86932,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74536,"src":"48820:18:168","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":86934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48820:24:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86935,"nodeType":"EmitStatement","src":"48815:29:168"}]},"implemented":true,"kind":"function","modifiers":[{"id":86914,"kind":"modifierInvocation","modifierName":{"id":86913,"name":"onlyOwner","nameLocations":["48669:9:168"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"48669:9:168"},"nodeType":"ModifierInvocation","src":"48669:9:168"}],"name":"_setStorageSlot","nameLocation":"48620:15:168","parameters":{"id":86912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86911,"mutability":"mutable","name":"namespace","nameLocation":"48650:9:168","nodeType":"VariableDeclaration","scope":86937,"src":"48636:23:168","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":86910,"name":"string","nodeType":"ElementaryTypeName","src":"48636:6:168","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"48635:25:168"},"returnParameters":{"id":86915,"nodeType":"ParameterList","parameters":[],"src":"48679:0:168"},"scope":86997,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":86996,"nodeType":"FunctionDefinition","src":"48999:396:168","nodes":[],"body":{"id":86995,"nodeType":"Block","src":"49040:355:168","nodes":[],"statements":[{"assignments":[86945],"declarations":[{"constant":false,"id":86945,"mutability":"mutable","name":"router","nameLocation":"49066:6:168","nodeType":"VariableDeclaration","scope":86995,"src":"49050:22:168","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":86944,"nodeType":"UserDefinedTypeName","pathNode":{"id":86943,"name":"Storage","nameLocations":["49050:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74490,"src":"49050:7:168"},"referencedDeclaration":74490,"src":"49050:7:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":86948,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":86946,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86897,"src":"49075:7:168","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$74490_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":86947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49075:9:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"49050:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":86950,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86945,"src":"49102:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49109:12:168","memberName":"genesisBlock","nodeType":"MemberAccess","referencedDeclaration":74465,"src":"49102:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_GenesisBlockInfo_$87576_storage","typeString":"struct Gear.GenesisBlockInfo storage ref"}},"id":86952,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49122:4:168","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":87571,"src":"49102:24:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":86955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49138:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":86954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49130:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":86953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"49130:7:168","typeDescriptions":{}}},"id":86956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49130:10:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"49102:38:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86958,"name":"RouterGenesisHashNotInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74562,"src":"49142:31:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49142:33:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86949,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49094:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49094:82:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86961,"nodeType":"ExpressionStatement","src":"49094:82:168"},{"assignments":[86963],"declarations":[{"constant":false,"id":86963,"mutability":"mutable","name":"value","nameLocation":"49195:5:168","nodeType":"VariableDeclaration","scope":86995,"src":"49187:13:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":86962,"name":"uint128","nodeType":"ElementaryTypeName","src":"49187:7:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":86969,"initialValue":{"arguments":[{"expression":{"id":86966,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"49211:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":86967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49215:5:168","memberName":"value","nodeType":"MemberAccess","src":"49211:9:168","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":86965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"49203:7:168","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":86964,"name":"uint128","nodeType":"ElementaryTypeName","src":"49203:7:168","typeDescriptions":{}}},"id":86968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49203:18:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"49187:34:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":86973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":86971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86963,"src":"49239:5:168","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":86972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49247:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"49239:9:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86974,"name":"ZeroValueTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74636,"src":"49250:17:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49250:19:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86970,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49231:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49231:39:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86977,"nodeType":"ExpressionStatement","src":"49231:39:168"},{"assignments":[86979],"declarations":[{"constant":false,"id":86979,"mutability":"mutable","name":"actorId","nameLocation":"49289:7:168","nodeType":"VariableDeclaration","scope":86995,"src":"49281:15:168","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":86978,"name":"address","nodeType":"ElementaryTypeName","src":"49281:7:168","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":86982,"initialValue":{"expression":{"id":86980,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"49299:3:168","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":86981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49303:6:168","memberName":"sender","nodeType":"MemberAccess","src":"49299:10:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"49281:28:168"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":86990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"expression":{"id":86984,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86945,"src":"49327:6:168","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$74490_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":86985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49334:12:168","memberName":"protocolData","nodeType":"MemberAccess","referencedDeclaration":74489,"src":"49327:19:168","typeDescriptions":{"typeIdentifier":"t_struct$_ProtocolData_$87625_storage","typeString":"struct Gear.ProtocolData storage ref"}},"id":86986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"49347:8:168","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":87609,"src":"49327:28:168","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":86988,"indexExpression":{"id":86987,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86979,"src":"49356:7:168","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"49327:37:168","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":86989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49368:1:168","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"49327:42:168","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":86991,"name":"UnknownProgram","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74610,"src":"49371:14:168","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":86992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49371:16:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":86983,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"49319:7:168","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":86993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49319:69:168","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":86994,"nodeType":"ExpressionStatement","src":"49319:69:168"}]},"documentation":{"id":86938,"nodeType":"StructuredDocumentation","src":"48857:137:168","text":" @dev Receives Ether from the `Mirror` instances when they\n perform state transitions with `valueToReceive`."},"implemented":true,"kind":"receive","modifiers":[{"id":86941,"kind":"modifierInvocation","modifierName":{"id":86940,"name":"whenNotPaused","nameLocations":["49026:13:168"],"nodeType":"IdentifierPath","referencedDeclaration":43748,"src":"49026:13:168"},"nodeType":"ModifierInvocation","src":"49026:13:168"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":86939,"nodeType":"ParameterList","parameters":[],"src":"49006:2:168"},"returnParameters":{"id":86942,"nodeType":"ParameterList","parameters":[],"src":"49040:0:168"},"scope":86997,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":84120,"name":"IRouter","nameLocations":["1595:7:168"],"nodeType":"IdentifierPath","referencedDeclaration":74985,"src":"1595:7:168"},"id":84121,"nodeType":"InheritanceSpecifier","src":"1595:7:168"},{"baseName":{"id":84122,"name":"OwnableUpgradeable","nameLocations":["1608:18:168"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"1608:18:168"},"id":84123,"nodeType":"InheritanceSpecifier","src":"1608:18:168"},{"baseName":{"id":84124,"name":"PausableUpgradeable","nameLocations":["1632:19:168"],"nodeType":"IdentifierPath","referencedDeclaration":43858,"src":"1632:19:168"},"id":84125,"nodeType":"InheritanceSpecifier","src":"1632:19:168"},{"baseName":{"id":84126,"name":"EIP712Upgradeable","nameLocations":["1657:17:168"],"nodeType":"IdentifierPath","referencedDeclaration":44416,"src":"1657:17:168"},"id":84127,"nodeType":"InheritanceSpecifier","src":"1657:17:168"},{"baseName":{"id":84128,"name":"NoncesUpgradeable","nameLocations":["1680:17:168"],"nodeType":"IdentifierPath","referencedDeclaration":43698,"src":"1680:17:168"},"id":84129,"nodeType":"InheritanceSpecifier","src":"1680:17:168"},{"baseName":{"id":84130,"name":"ReentrancyGuardTransientUpgradeable","nameLocations":["1703:35:168"],"nodeType":"IdentifierPath","referencedDeclaration":43943,"src":"1703:35:168"},"id":84131,"nodeType":"InheritanceSpecifier","src":"1703:35:168"},{"baseName":{"id":84132,"name":"UUPSUpgradeable","nameLocations":["1744:15:168"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"1744:15:168"},"id":84133,"nodeType":"InheritanceSpecifier","src":"1744:15:168"}],"canonicalName":"RouterWithInstrumentation","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[86997,46243,44833,43943,43698,44416,44823,43858,42322,43484,42590,74985],"name":"RouterWithInstrumentation","nameLocation":"1562:25:168","scope":86998,"usedErrors":[42158,42163,42339,42342,43601,43737,43740,43875,45427,45440,46100,46105,47372,48774,50701,50706,50711,53880,74539,74542,74545,74547,74550,74553,74556,74559,74562,74565,74572,74581,74586,74593,74596,74598,74600,74602,74604,74606,74608,74610,74612,74614,74616,74618,74620,74622,74624,74626,74628,74630,74632,74634,74636,87384,87387,87390,87393,87396,87399,87402],"usedEvents":[42169,42347,43729,43734,44781,44803,74495,74500,74507,74512,74517,74524,74531,74536,84164]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":168} \ No newline at end of file diff --git a/ethexe/ethereum/abi/WrappedVara.json b/ethexe/ethereum/abi/WrappedVara.json index df62ee48058..dbfa11d6b44 100644 --- a/ethexe/ethereum/abi/WrappedVara.json +++ b/ethexe/ethereum/abi/WrappedVara.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a080604052346100c257306080525f5160206125c65f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516124ff90816100c782396080518181816115ec01526116bb0152f35b6001600160401b0319166001600160401b039081175f5160206125c65f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461198e578063095ea7b31461196857806318160ddd1461193f57806323b872dd14611907578063313ce567146118ec5780633644e515146118ca57806340c10f191461188d57806342966c68146118705780634f1ef2861461164057806352d1902d146115da5780636c2eb35014610ec757806370a0823114610e83578063715018a614610e1c57806379cc679014610dec5780637ecebe0014610d9657806384b0196e14610c725780638da5cb5b14610c3e57806395d89b4114610b48578063a9059cbb14610b17578063ad3cb1cc14610acc578063c4d66de8146102f9578063d505accf14610197578063dd62ed3e146101505763f2fde38b14610121575f80fd5b3461014c57602036600319011261014c5761014a61013d611a6f565b610145611f16565b611d10565b005b5f80fd5b3461014c57604036600319011261014c57610169611a6f565b61017a610174611a85565b91611cd8565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461014c5760e036600319011261014c576101b0611a6f565b6101b8611a85565b604435906064359260843560ff8116810361014c578442116102e6576102ab6102b49160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261027960e082611a9b565b519020610284612124565b906040519161190160f01b83526002830152602282015260c43591604260a43592206121b6565b90929192612243565b6001600160a01b03168481036102cf575061014a9350611fff565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461014c57602036600319011261014c57610312611a6f565b5f5160206124bf5f395f51905f5254906001600160401b0360ff8360401c1615921680159081610ac4575b6001149081610aba575b159081610ab1575b50610aa2578160016001600160401b03195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610a6d575b61038d611c8b565b91610396611cb5565b9161039f61218b565b6103a761218b565b83516001600160401b038111610759576103ce5f51602061239f5f395f51905f5254611ad7565b601f81116109f3575b50602094601f8211600114610978579481929394955f9261096d575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b82516001600160401b0381116107595761043b5f5160206123ff5f395f51905f5254611ad7565b601f81116108f3575b506020601f821160011461087857819293945f9261086d575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61048661218b565b61048e61218b565b61049661218b565b61049f81611d10565b6104a7611c8b565b916104b061218b565b604051916104bf604084611a9b565b60018352603160f81b60208401526104d561218b565b83516001600160401b038111610759576104fc5f5160206123df5f395f51905f5254611ad7565b601f81116107f3575b50602094601f8211600114610778579481929394955f9261076d575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b82516001600160401b038111610759576105695f51602061245f5f395f51905f5254611ad7565b601f81116106df575b506020601f821160011461066457819293945f92610659575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f528190555f5160206124df5f395f51905f52556001600160a01b0381161561064657670de0b6b3a76400006105ee91612062565b6105f457005b60ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b01519050848061058b565b601f198216905f51602061245f5f395f51905f525f52805f20915f5b8181106106c7575095836001959697106106af575b505050811b015f51602061245f5f395f51905f52556105ac565b01515f1960f88460031b161c19169055848080610695565b9192602060018192868b015181550194019201610680565b81811115610572575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7560208410610751575b81601f9101920160051c03905f5b828110610744575050610572565b5f82820155600101610736565b5f9150610728565b634e487b7160e01b5f52604160045260245ffd5b015190508580610521565b601f198216955f5160206123df5f395f51905f525f52805f20915f5b8881106107db575083600195969798106107c3575b505050811b015f5160206123df5f395f51905f5255610542565b01515f1960f88460031b161c191690558580806107a9565b91926020600181928685015181550194019201610794565b81811115610505575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d60208410610865575b81601f9101920160051c03905f5b828110610858575050610505565b5f8282015560010161084a565b5f915061083c565b01519050848061045d565b601f198216905f5160206123ff5f395f51905f525f52805f20915f5b8181106108db575095836001959697106108c3575b505050811b015f5160206123ff5f395f51905f525561047e565b01515f1960f88460031b161c191690558480806108a9565b9192602060018192868b015181550194019201610894565b81811115610444575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa60208410610965575b81601f9101920160051c03905f5b828110610958575050610444565b5f8282015560010161094a565b5f915061093c565b0151905085806103f3565b601f198216955f51602061239f5f395f51905f525f52805f20915f5b8881106109db575083600195969798106109c3575b505050811b015f51602061239f5f395f51905f5255610414565b01515f1960f88460031b161c191690558580806109a9565b91926020600181928685015181550194019201610994565b818111156103d7575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab060208410610a65575b81601f9101920160051c03905f5b828110610a585750506103d7565b5f82820155600101610a4a565b5f9150610a3c565b6801000000000000000060ff60401b195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610385565b63f92ee8a960e01b5f5260045ffd5b9050158361034f565b303b159150610347565b83915061033d565b3461014c575f36600319011261014c57610b13604051610aed604082611a9b565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611a4b565b0390f35b3461014c57604036600319011261014c57610b3d610b33611a6f565b6024359033611e45565b602060405160018152f35b3461014c575f36600319011261014c576040515f5f5160206123ff5f395f51905f5254610b7481611ad7565b8084529060018116908115610c1a5750600114610bb0575b610b1383610b9c81850382611a9b565b604051918291602083526020830190611a4b565b5f5160206123ff5f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610c0057509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291610be8565b60ff191660208086019190915291151560051b84019091019150610b9c9050610b8c565b3461014c575f36600319011261014c575f51602061241f5f395f51905f52546040516001600160a01b039091168152602090f35b3461014c575f36600319011261014c575f51602061247f5f395f51905f52541580610d80575b15610d4357610ce7610ca8611b0f565b610cb0611bde565b6020610cf560405192610cc38385611a9b565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190611a4b565b908582036040870152611a4b565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d2c57505050500390f35b835185528695509381019392810192600101610d1d565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206124df5f395f51905f525415610c98565b3461014c57602036600319011261014c57610daf611a6f565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461014c57604036600319011261014c5761014a610e08611a6f565b60243590610e17823383611d81565b611f49565b3461014c575f36600319011261014c57610e34611f16565b5f51602061241f5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014c57602036600319011261014c576001600160a01b03610ea4611a6f565b165f525f5160206123bf5f395f51905f52602052602060405f2054604051908152f35b3461014c575f36600319011261014c57610edf611f16565b5f5160206124bf5f395f51905f525460ff8160401c169081156115c5575b50610aa2575f5160206124bf5f395f51905f52805468ffffffffffffffffff191668010000000000000002179055610f33611c8b565b610f3b611cb5565b610f4361218b565b610f4b61218b565b81516001600160401b03811161075957610f725f51602061239f5f395f51905f5254611ad7565b601f811161154b575b50602092601f82116001146114d257928192935f926114c7575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b80516001600160401b03811161075957610fdd5f5160206123ff5f395f51905f5254611ad7565b601f811161144d575b50602091601f82116001146113d5579181925f926113ca575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61102861218b565b5f51602061241f5f395f51905f5254611054906001600160a01b031661104c61218b565b61014561218b565b61105c611c8b565b61106461218b565b604051611072604082611a9b565b60018152603160f81b602082015261108861218b565b81516001600160401b038111610759576110af5f5160206123df5f395f51905f5254611ad7565b601f8111611350575b50602092601f82116001146112d757928192935f926112cc575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b80516001600160401b0381116107595761111a5f51602061245f5f395f51905f5254611ad7565b601f8111611252575b50602091601f82116001146111da579181925f926111cf575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f52555f5f5160206124df5f395f51905f525560ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b01519050828061113c565b601f198216925f51602061245f5f395f51905f525f52805f20915f5b85811061123a57508360019510611222575b505050811b015f51602061245f5f395f51905f525561115d565b01515f1960f88460031b161c19169055828080611208565b919260206001819286850151815501940192016111f6565b81811115611123575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75602084106112c4575b81601f9101920160051c03905f5b8281106112b7575050611123565b5f828201556001016112a9565b5f915061129b565b0151905083806110d2565b601f198216935f5160206123df5f395f51905f525f52805f20915f5b8681106113385750836001959610611320575b505050811b015f5160206123df5f395f51905f52556110f3565b01515f1960f88460031b161c19169055838080611306565b919260206001819286850151815501940192016112f3565b818111156110b8575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d602084106113c2575b81601f9101920160051c03905f5b8281106113b55750506110b8565b5f828201556001016113a7565b5f9150611399565b015190508280610fff565b601f198216925f5160206123ff5f395f51905f525f52805f20915f5b8581106114355750836001951061141d575b505050811b015f5160206123ff5f395f51905f5255611020565b01515f1960f88460031b161c19169055828080611403565b919260206001819286850151815501940192016113f1565b81811115610fe6575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa602084106114bf575b81601f9101920160051c03905f5b8281106114b2575050610fe6565b5f828201556001016114a4565b5f9150611496565b015190508380610f95565b601f198216935f51602061239f5f395f51905f525f52805f20915f5b868110611533575083600195961061151b575b505050811b015f51602061239f5f395f51905f5255610fb6565b01515f1960f88460031b161c19169055838080611501565b919260206001819286850151815501940192016114ee565b81811115610f7b575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0602084106115bd575b81601f9101920160051c03905f5b8281106115b0575050610f7b565b5f828201556001016115a2565b5f9150611594565b600291506001600160401b0316101581610efd565b3461014c575f36600319011261014c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116315760206040515f51602061249f5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261014c57611654611a6f565b602435906001600160401b03821161014c573660238301121561014c5781600401359061168082611abc565b9161168e6040519384611a9b565b8083526020830193366024838301011161014c57815f926024602093018737840101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561184e575b50611631576116f3611f16565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f918161181a575b506117355784634c9c8ce360e01b5f5260045260245ffd5b805f51602061249f5f395f51905f528692036118085750823b156117f6575f51602061249f5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28251156117dd575f809161014a945190845af43d156117d5573d916117b983611abc565b926117c76040519485611a9b565b83523d5f602085013e612340565b606091612340565b505050346117e757005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611846575b8161183660209383611a9b565b8101031261014c5751908661171d565b3d9150611829565b5f51602061249f5f395f51905f52546001600160a01b031614159050846116e6565b3461014c57602036600319011261014c5761014a60043533611f49565b3461014c57604036600319011261014c576118a6611a6f565b6118ae611f16565b6001600160a01b038116156106465761014a9060243590612062565b3461014c575f36600319011261014c5760206118e4612124565b604051908152f35b3461014c575f36600319011261014c576020604051600c8152f35b3461014c57606036600319011261014c57610b3d611923611a6f565b61192b611a85565b6044359161193a833383611d81565b611e45565b3461014c575f36600319011261014c5760205f51602061243f5f395f51905f5254604051908152f35b3461014c57604036600319011261014c57610b3d611984611a6f565b6024359033611fff565b3461014c575f36600319011261014c576040515f5f51602061239f5f395f51905f52546119ba81611ad7565b8084529060018116908115610c1a57506001146119e157610b1383610b9c81850382611a9b565b5f51602061239f5f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210611a3157509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291611a19565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361014c57565b602435906001600160a01b038216820361014c57565b90601f801991011681019081106001600160401b0382111761075957604052565b6001600160401b03811161075957601f01601f191660200190565b90600182811c92168015611b05575b6020831014611af157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611ae6565b604051905f825f5160206123df5f395f51905f525491611b2e83611ad7565b8083529260018116908115611bbf5750600114611b54575b611b5292500383611a9b565b565b505f5160206123df5f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611ba3575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611b8b565b60209250611b5294915060ff191682840152151560051b820101611b46565b604051905f825f51602061245f5f395f51905f525491611bfd83611ad7565b8083529260018116908115611bbf5750600114611c2057611b5292500383611a9b565b505f51602061245f5f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611c6f575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611c57565b60405190611c9a604083611a9b565b600c82526b57726170706564205661726160a01b6020830152565b60405190611cc4604083611a9b565b6005825264575641524160d81b6020830152565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b03168015611d6e575f51602061241f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b9190611d8c83611cd8565b60018060a01b0382165f5260205260405f2054925f198410611daf575b50505050565b828410611e22576001600160a01b03811615611e0f576001600160a01b03821615611dfc57611ddd90611cd8565b9060018060a01b03165f5260205260405f20910390555f808080611da9565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115611f03576001600160a01b031691821561064657815f525f5160206123bf5f395f51905f5260205260405f2054818110611eea57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206123bf5f395f51905f5284520360405f2055845f525f5160206123bf5f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f51602061241f5f395f51905f52546001600160a01b03163303611f3657565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b03168015611f0357805f525f5160206123bf5f395f51905f5260205260405f2054838110611fe5576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206123bf5f395f51905f528452036040862055805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b038316918215611e0f576001600160a01b0316928315611dfc577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161204e602092611cd8565b855f5282528060405f2055604051908152a3565b5f51602061243f5f395f51905f525490828201809211612110575f51602061243f5f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090846120ee57805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f52555b604051908152a3565b8484525f5160206123bf5f395f51905f528252604084208181540190556120e5565b634e487b7160e01b5f52601160045260245ffd5b61212c6122b7565b61213461230e565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261218560c082611a9b565b51902090565b60ff5f5160206124bf5f395f51905f525460401c16156121a757565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612238579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561222d575f516001600160a01b0381161561222357905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156122a35780612255575050565b6001810361226c5763f645eedf60e01b5f5260045ffd5b60028103612287575063fce698f760e01b5f5260045260245ffd5b6003146122915750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6122bf611b0f565b80519081156122cf576020012090565b50505f51602061247f5f395f51905f525480156122e95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612316611bde565b8051908115612326576020012090565b50505f5160206124df5f395f51905f525480156122e95790565b90612364575080511561235557602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612395575b612375575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561236d56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"1323:2191:166:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;7983:34:30;7979:146;;-1:-1:-1;1323:2191:166;;;;;;;;1052:13:60;1323:2191:166;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;8085:29:30;;1323:2191:166;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;1323:2191:166;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461198e578063095ea7b31461196857806318160ddd1461193f57806323b872dd14611907578063313ce567146118ec5780633644e515146118ca57806340c10f191461188d57806342966c68146118705780634f1ef2861461164057806352d1902d146115da5780636c2eb35014610ec757806370a0823114610e83578063715018a614610e1c57806379cc679014610dec5780637ecebe0014610d9657806384b0196e14610c725780638da5cb5b14610c3e57806395d89b4114610b48578063a9059cbb14610b17578063ad3cb1cc14610acc578063c4d66de8146102f9578063d505accf14610197578063dd62ed3e146101505763f2fde38b14610121575f80fd5b3461014c57602036600319011261014c5761014a61013d611a6f565b610145611f16565b611d10565b005b5f80fd5b3461014c57604036600319011261014c57610169611a6f565b61017a610174611a85565b91611cd8565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461014c5760e036600319011261014c576101b0611a6f565b6101b8611a85565b604435906064359260843560ff8116810361014c578442116102e6576102ab6102b49160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261027960e082611a9b565b519020610284612124565b906040519161190160f01b83526002830152602282015260c43591604260a43592206121b6565b90929192612243565b6001600160a01b03168481036102cf575061014a9350611fff565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461014c57602036600319011261014c57610312611a6f565b5f5160206124bf5f395f51905f5254906001600160401b0360ff8360401c1615921680159081610ac4575b6001149081610aba575b159081610ab1575b50610aa2578160016001600160401b03195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610a6d575b61038d611c8b565b91610396611cb5565b9161039f61218b565b6103a761218b565b83516001600160401b038111610759576103ce5f51602061239f5f395f51905f5254611ad7565b601f81116109f3575b50602094601f8211600114610978579481929394955f9261096d575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b82516001600160401b0381116107595761043b5f5160206123ff5f395f51905f5254611ad7565b601f81116108f3575b506020601f821160011461087857819293945f9261086d575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61048661218b565b61048e61218b565b61049661218b565b61049f81611d10565b6104a7611c8b565b916104b061218b565b604051916104bf604084611a9b565b60018352603160f81b60208401526104d561218b565b83516001600160401b038111610759576104fc5f5160206123df5f395f51905f5254611ad7565b601f81116107f3575b50602094601f8211600114610778579481929394955f9261076d575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b82516001600160401b038111610759576105695f51602061245f5f395f51905f5254611ad7565b601f81116106df575b506020601f821160011461066457819293945f92610659575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f528190555f5160206124df5f395f51905f52556001600160a01b0381161561064657670de0b6b3a76400006105ee91612062565b6105f457005b60ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b01519050848061058b565b601f198216905f51602061245f5f395f51905f525f52805f20915f5b8181106106c7575095836001959697106106af575b505050811b015f51602061245f5f395f51905f52556105ac565b01515f1960f88460031b161c19169055848080610695565b9192602060018192868b015181550194019201610680565b81811115610572575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7560208410610751575b81601f9101920160051c03905f5b828110610744575050610572565b5f82820155600101610736565b5f9150610728565b634e487b7160e01b5f52604160045260245ffd5b015190508580610521565b601f198216955f5160206123df5f395f51905f525f52805f20915f5b8881106107db575083600195969798106107c3575b505050811b015f5160206123df5f395f51905f5255610542565b01515f1960f88460031b161c191690558580806107a9565b91926020600181928685015181550194019201610794565b81811115610505575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d60208410610865575b81601f9101920160051c03905f5b828110610858575050610505565b5f8282015560010161084a565b5f915061083c565b01519050848061045d565b601f198216905f5160206123ff5f395f51905f525f52805f20915f5b8181106108db575095836001959697106108c3575b505050811b015f5160206123ff5f395f51905f525561047e565b01515f1960f88460031b161c191690558480806108a9565b9192602060018192868b015181550194019201610894565b81811115610444575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa60208410610965575b81601f9101920160051c03905f5b828110610958575050610444565b5f8282015560010161094a565b5f915061093c565b0151905085806103f3565b601f198216955f51602061239f5f395f51905f525f52805f20915f5b8881106109db575083600195969798106109c3575b505050811b015f51602061239f5f395f51905f5255610414565b01515f1960f88460031b161c191690558580806109a9565b91926020600181928685015181550194019201610994565b818111156103d7575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab060208410610a65575b81601f9101920160051c03905f5b828110610a585750506103d7565b5f82820155600101610a4a565b5f9150610a3c565b6801000000000000000060ff60401b195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610385565b63f92ee8a960e01b5f5260045ffd5b9050158361034f565b303b159150610347565b83915061033d565b3461014c575f36600319011261014c57610b13604051610aed604082611a9b565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611a4b565b0390f35b3461014c57604036600319011261014c57610b3d610b33611a6f565b6024359033611e45565b602060405160018152f35b3461014c575f36600319011261014c576040515f5f5160206123ff5f395f51905f5254610b7481611ad7565b8084529060018116908115610c1a5750600114610bb0575b610b1383610b9c81850382611a9b565b604051918291602083526020830190611a4b565b5f5160206123ff5f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610c0057509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291610be8565b60ff191660208086019190915291151560051b84019091019150610b9c9050610b8c565b3461014c575f36600319011261014c575f51602061241f5f395f51905f52546040516001600160a01b039091168152602090f35b3461014c575f36600319011261014c575f51602061247f5f395f51905f52541580610d80575b15610d4357610ce7610ca8611b0f565b610cb0611bde565b6020610cf560405192610cc38385611a9b565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190611a4b565b908582036040870152611a4b565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d2c57505050500390f35b835185528695509381019392810192600101610d1d565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206124df5f395f51905f525415610c98565b3461014c57602036600319011261014c57610daf611a6f565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461014c57604036600319011261014c5761014a610e08611a6f565b60243590610e17823383611d81565b611f49565b3461014c575f36600319011261014c57610e34611f16565b5f51602061241f5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014c57602036600319011261014c576001600160a01b03610ea4611a6f565b165f525f5160206123bf5f395f51905f52602052602060405f2054604051908152f35b3461014c575f36600319011261014c57610edf611f16565b5f5160206124bf5f395f51905f525460ff8160401c169081156115c5575b50610aa2575f5160206124bf5f395f51905f52805468ffffffffffffffffff191668010000000000000002179055610f33611c8b565b610f3b611cb5565b610f4361218b565b610f4b61218b565b81516001600160401b03811161075957610f725f51602061239f5f395f51905f5254611ad7565b601f811161154b575b50602092601f82116001146114d257928192935f926114c7575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b80516001600160401b03811161075957610fdd5f5160206123ff5f395f51905f5254611ad7565b601f811161144d575b50602091601f82116001146113d5579181925f926113ca575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61102861218b565b5f51602061241f5f395f51905f5254611054906001600160a01b031661104c61218b565b61014561218b565b61105c611c8b565b61106461218b565b604051611072604082611a9b565b60018152603160f81b602082015261108861218b565b81516001600160401b038111610759576110af5f5160206123df5f395f51905f5254611ad7565b601f8111611350575b50602092601f82116001146112d757928192935f926112cc575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b80516001600160401b0381116107595761111a5f51602061245f5f395f51905f5254611ad7565b601f8111611252575b50602091601f82116001146111da579181925f926111cf575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f52555f5f5160206124df5f395f51905f525560ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b01519050828061113c565b601f198216925f51602061245f5f395f51905f525f52805f20915f5b85811061123a57508360019510611222575b505050811b015f51602061245f5f395f51905f525561115d565b01515f1960f88460031b161c19169055828080611208565b919260206001819286850151815501940192016111f6565b81811115611123575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75602084106112c4575b81601f9101920160051c03905f5b8281106112b7575050611123565b5f828201556001016112a9565b5f915061129b565b0151905083806110d2565b601f198216935f5160206123df5f395f51905f525f52805f20915f5b8681106113385750836001959610611320575b505050811b015f5160206123df5f395f51905f52556110f3565b01515f1960f88460031b161c19169055838080611306565b919260206001819286850151815501940192016112f3565b818111156110b8575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d602084106113c2575b81601f9101920160051c03905f5b8281106113b55750506110b8565b5f828201556001016113a7565b5f9150611399565b015190508280610fff565b601f198216925f5160206123ff5f395f51905f525f52805f20915f5b8581106114355750836001951061141d575b505050811b015f5160206123ff5f395f51905f5255611020565b01515f1960f88460031b161c19169055828080611403565b919260206001819286850151815501940192016113f1565b81811115610fe6575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa602084106114bf575b81601f9101920160051c03905f5b8281106114b2575050610fe6565b5f828201556001016114a4565b5f9150611496565b015190508380610f95565b601f198216935f51602061239f5f395f51905f525f52805f20915f5b868110611533575083600195961061151b575b505050811b015f51602061239f5f395f51905f5255610fb6565b01515f1960f88460031b161c19169055838080611501565b919260206001819286850151815501940192016114ee565b81811115610f7b575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0602084106115bd575b81601f9101920160051c03905f5b8281106115b0575050610f7b565b5f828201556001016115a2565b5f9150611594565b600291506001600160401b0316101581610efd565b3461014c575f36600319011261014c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116315760206040515f51602061249f5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261014c57611654611a6f565b602435906001600160401b03821161014c573660238301121561014c5781600401359061168082611abc565b9161168e6040519384611a9b565b8083526020830193366024838301011161014c57815f926024602093018737840101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561184e575b50611631576116f3611f16565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f918161181a575b506117355784634c9c8ce360e01b5f5260045260245ffd5b805f51602061249f5f395f51905f528692036118085750823b156117f6575f51602061249f5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28251156117dd575f809161014a945190845af43d156117d5573d916117b983611abc565b926117c76040519485611a9b565b83523d5f602085013e612340565b606091612340565b505050346117e757005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611846575b8161183660209383611a9b565b8101031261014c5751908661171d565b3d9150611829565b5f51602061249f5f395f51905f52546001600160a01b031614159050846116e6565b3461014c57602036600319011261014c5761014a60043533611f49565b3461014c57604036600319011261014c576118a6611a6f565b6118ae611f16565b6001600160a01b038116156106465761014a9060243590612062565b3461014c575f36600319011261014c5760206118e4612124565b604051908152f35b3461014c575f36600319011261014c576020604051600c8152f35b3461014c57606036600319011261014c57610b3d611923611a6f565b61192b611a85565b6044359161193a833383611d81565b611e45565b3461014c575f36600319011261014c5760205f51602061243f5f395f51905f5254604051908152f35b3461014c57604036600319011261014c57610b3d611984611a6f565b6024359033611fff565b3461014c575f36600319011261014c576040515f5f51602061239f5f395f51905f52546119ba81611ad7565b8084529060018116908115610c1a57506001146119e157610b1383610b9c81850382611a9b565b5f51602061239f5f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210611a3157509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291611a19565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361014c57565b602435906001600160a01b038216820361014c57565b90601f801991011681019081106001600160401b0382111761075957604052565b6001600160401b03811161075957601f01601f191660200190565b90600182811c92168015611b05575b6020831014611af157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611ae6565b604051905f825f5160206123df5f395f51905f525491611b2e83611ad7565b8083529260018116908115611bbf5750600114611b54575b611b5292500383611a9b565b565b505f5160206123df5f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611ba3575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611b8b565b60209250611b5294915060ff191682840152151560051b820101611b46565b604051905f825f51602061245f5f395f51905f525491611bfd83611ad7565b8083529260018116908115611bbf5750600114611c2057611b5292500383611a9b565b505f51602061245f5f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611c6f575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611c57565b60405190611c9a604083611a9b565b600c82526b57726170706564205661726160a01b6020830152565b60405190611cc4604083611a9b565b6005825264575641524160d81b6020830152565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b03168015611d6e575f51602061241f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b9190611d8c83611cd8565b60018060a01b0382165f5260205260405f2054925f198410611daf575b50505050565b828410611e22576001600160a01b03811615611e0f576001600160a01b03821615611dfc57611ddd90611cd8565b9060018060a01b03165f5260205260405f20910390555f808080611da9565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115611f03576001600160a01b031691821561064657815f525f5160206123bf5f395f51905f5260205260405f2054818110611eea57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206123bf5f395f51905f5284520360405f2055845f525f5160206123bf5f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f51602061241f5f395f51905f52546001600160a01b03163303611f3657565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b03168015611f0357805f525f5160206123bf5f395f51905f5260205260405f2054838110611fe5576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206123bf5f395f51905f528452036040862055805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b038316918215611e0f576001600160a01b0316928315611dfc577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161204e602092611cd8565b855f5282528060405f2055604051908152a3565b5f51602061243f5f395f51905f525490828201809211612110575f51602061243f5f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090846120ee57805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f52555b604051908152a3565b8484525f5160206123bf5f395f51905f528252604084208181540190556120e5565b634e487b7160e01b5f52601160045260245ffd5b61212c6122b7565b61213461230e565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261218560c082611a9b565b51902090565b60ff5f5160206124bf5f395f51905f525460401c16156121a757565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612238579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561222d575f516001600160a01b0381161561222357905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156122a35780612255575050565b6001810361226c5763f645eedf60e01b5f5260045ffd5b60028103612287575063fce698f760e01b5f5260045260245ffd5b6003146122915750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6122bf611b0f565b80519081156122cf576020012090565b50505f51602061247f5f395f51905f525480156122e95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612316611bde565b8051908115612326576020012090565b50505f5160206124df5f395f51905f525480156122e95790565b90612364575080511561235557602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612395575b612375575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561236d56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101","sourceMap":"1323:2191:166:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;2357:1:29;1323:2191:166;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;1323:2191:166;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;4771:20:31;1323:2191:166;;:::i;:::-;4771:20:31;;:::i;:::-;:29;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2286:15:33;;:26;2282:97;;7051:25:77;7105:8;1323:2191:166;;;;;;;;;;;;972:64:36;1323:2191:166;;;;;;;;;;;;;;;;2420:78:33;1323:2191:166;2420:78:33;;1323:2191:166;1279:95:33;1323:2191:166;;1279:95:33;1323:2191:166;1279:95:33;;1323:2191:166;;;;;;;;;1279:95:33;;1323:2191:166;1279:95:33;1323:2191:166;1279:95:33;;1323:2191:166;;1279:95:33;;1323:2191:166;;1279:95:33;;1323:2191:166;;2420:78:33;;;1323:2191:166;2420:78:33;;:::i;:::-;1323:2191:166;2410:89:33;;3980:23:40;;:::i;:::-;3993:249:80;1323:2191:166;3993:249:80;;-1:-1:-1;;;3993:249:80;;;;;;;;;;1323:2191:166;;;3993:249:80;1323:2191:166;;3993:249:80;;7051:25:77;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;1323:2191:166;2623:15:33;;;2619:88;;10021:4:31;;;;;:::i;2619:88:33:-;2661:35;;;;;1323:2191:166;2661:35:33;1323:2191:166;;;;;;2661:35:33;2282:97;2335:33;;;;1323:2191:166;2335:33:33;1323:2191:166;;;;2335:33:33;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;4301:16:30;1323:2191:166;;4724:16:30;;:34;;;;1323:2191:166;4803:1:30;4788:16;:50;;;;1323:2191:166;4853:13:30;:30;;;;1323:2191:166;4849:91:30;;;1323:2191:166;4803:1:30;-1:-1:-1;;;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;4977:67:30;;1323:2191:166;;;:::i;:::-;1533:14;;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;6891:76:30;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;;;:::i;:::-;1323:2191:166;;:::i;:::-;6891:76:30;;;:::i;:::-;1323:2191:166;;;;;;;:::i;:::-;4803:1:30;1323:2191:166;;-1:-1:-1;;;1323:2191:166;;;;6891:76:30;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;;8707:21:31;8703:91;;1653:9:166;8832:5:31;;;:::i;:::-;5064:101:30;;1323:2191:166;5064:101:30;-1:-1:-1;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;5140:14:30;1323:2191:166;;;4803:1:30;1323:2191:166;;5140:14:30;1323:2191:166;8703:91:31;8751:32;;;1323:2191:166;8751:32:31;1323:2191:166;;;;;8751:32:31;1323:2191:166;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;4977:67:30;1323:2191:166;-1:-1:-1;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;4977:67:30;;4849:91;6496:23;;;1323:2191:166;4906:23:30;1323:2191:166;;4906:23:30;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1323:2191:166;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;4545:5:31;1323:2191:166;;:::i;:::-;;;966:10:34;;4545:5:31;:::i;:::-;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;-1:-1:-1;1323:2191:166;;;;;;;;-1:-1:-1;;1323:2191:166;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;5647:18:40;:43;;;1323:2191:166;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5835:13:40;1323:2191:166;;;;5870:4:40;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;-1:-1:-1;;;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;;1323:2191:166;;;;;;;5647:43:40;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;5669:21:40;5647:43;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;;;;;;;;;972:64:36;1323:2191:166;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;1479:5:32;1323:2191:166;;:::i;:::-;;;966:10:34;1448:5:32;966:10:34;;1448:5:32;;:::i;:::-;1479;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;1323:2191:166;;;;;;;-1:-1:-1;;;;;1323:2191:166;3975:40:29;1323:2191:166;;3975:40:29;1323:2191:166;;;;;;;-1:-1:-1;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;6429:44:30;;;;;1323:2191:166;6425:105:30;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;1323:2191:166;;;;;;;:::i;:::-;1533:14;;:::i;:::-;6891:76:30;;:::i;:::-;;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;6891:76:30;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;6959:1:30;;-1:-1:-1;;;;;1323:2191:166;6891:76:30;;:::i;:::-;;;:::i;6959:1::-;1323:2191:166;;:::i;:::-;6891:76:30;;:::i;:::-;1323:2191:166;;;;;;:::i;:::-;6591:4:30;1323:2191:166;;-1:-1:-1;;;1323:2191:166;;;;6891:76:30;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;6654:20:30;1323:2191:166;;;2486:1;1323:2191;;6654:20:30;1323:2191:166;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;6429:44:30;2486:1:166;1323:2191;;-1:-1:-1;;;;;1323:2191:166;6448:25:30;;6429:44;;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;4824:6:60;-1:-1:-1;;;;;1323:2191:166;4815:4:60;4807:23;4803:145;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;4803:145:60;4578:29;;;1323:2191:166;4908:29:60;1323:2191:166;;4908:29:60;1323:2191:166;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4401:6:60;1323:2191:166;4392:4:60;4384:23;;;:120;;;;1323:2191:166;4367:251:60;;;2303:62:29;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;5865:52:60;;-1:-1:-1;;;;;1323:2191:166;;;;;;;;;5865:52:60;;1323:2191:166;;5865:52:60;;;1323:2191:166;-1:-1:-1;5861:437:60;;1805:47:53;;;;1323:2191:166;6227:60:60;1323:2191:166;;;;6227:60:60;5861:437;5959:40;-1:-1:-1;;;;;;;;;;;5959:40:60;;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;1323:2191:166;;;;;2407:36:53;-1:-1:-1;;2407:36:53;1323:2191:166;;2458:15:53;:11;;1323:2191:166;4065:25:66;;4107:55;4065:25;;;;;;1323:2191:166;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;1323:2191:166:-;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;1323:2191:166;6159:70:53;6199:19;;;1323:2191:166;6199:19:53;1323:2191:166;;6199:19:53;1744:119;1805:47;;;1323:2191:166;1805:47:53;1323:2191:166;;;;1805:47:53;5955:120:60;6026:34;;;1323:2191:166;6026:34:60;1323:2191:166;;;;6026:34:60;5865:52;;;;1323:2191:166;5865:52:60;;1323:2191:166;5865:52:60;;;;;;1323:2191:166;5865:52:60;;;:::i;:::-;;;1323:2191:166;;;;;5865:52:60;;;;;;;-1:-1:-1;5865:52:60;;4384:120;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;4462:42:60;;;-1:-1:-1;4384:120:60;;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;1005:5:32;1323:2191:166;;966:10:34;1005:5:32;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;1323:2191:166;;8707:21:31;8703:91;;8832:5;1323:2191:166;;;8832:5:31;;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;3980:23:40;;:::i;:::-;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;3246:2;1323:2191;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;6102:5:31;1323:2191:166;;:::i;:::-;;;:::i;:::-;;;966:10:34;6066:5:31;966:10:34;;6066:5:31;;:::i;:::-;6102;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;10021:4:31;1323:2191:166;;:::i;:::-;;;966:10:34;;10021:4:31;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;-1:-1:-1;;1323:2191:166;;;;:::o;:::-;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;;:::o;:::-;-1:-1:-1;;;;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1323:2191:166;;;;:::o;1533:14::-;1323:2191;;;;;;;:::i;:::-;1533:14;1323:2191;;-1:-1:-1;;;1533:14:166;;;;:::o;1323:2191::-;-1:-1:-1;;;;;1323:2191:166;;;;;4771:13:31;1323:2191:166;;;;;;:::o;3405:215:29:-;-1:-1:-1;;;;;1323:2191:166;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;1323:2191:166;;;;;;;-1:-1:-1;;;;;1323:2191:166;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;1323:2191:166;;3509:1:29;3534:31;11649:476:31;;;4771:20;;;:::i;:::-;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;;;-1:-1:-1;1323:2191:166;;;;;11814:36:31;;11810:309;;11649:476;;;;;:::o;11810:309::-;11870:24;;;11866:130;;-1:-1:-1;;;;;1323:2191:166;;11045:19:31;11041:89;;-1:-1:-1;;;;;1323:2191:166;;11143:21:31;11139:90;;11238:20;;;:::i;:::-;:29;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;-1:-1:-1;1323:2191:166;;;;;11810:309:31;;;;;;11139:90;11187:31;;;-1:-1:-1;11187:31:31;-1:-1:-1;11187:31:31;1323:2191:166;;-1:-1:-1;11187:31:31;11041:89;11087:32;;;-1:-1:-1;11087:32:31;-1:-1:-1;11087:32:31;1323:2191:166;;-1:-1:-1;11087:32:31;11866:130;11921:60;;;;;;-1:-1:-1;11921:60:31;1323:2191:166;;;;;;11921:60:31;1323:2191:166;;;;;;-1:-1:-1;11921:60:31;6509:300;-1:-1:-1;;;;;1323:2191:166;;6592:18:31;;6588:86;;-1:-1:-1;;;;;1323:2191:166;;6687:16:31;;6683:86;;1323:2191:166;6608:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;6608:1:31;1323:2191:166;;7513:19:31;;;7509:115;;1323:2191:166;8262:25:31;1323:2191:166;;;;6608:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;6608:1:31;1323:2191:166;;;6608:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;6608:1:31;1323:2191:166;;;;;;;;;;;;8262:25:31;6509:300::o;7509:115::-;7559:50;;;;6608:1;7559:50;;1323:2191:166;;;;;;6608:1:31;7559:50;6588:86;6633:30;;;6608:1;6633:30;6608:1;6633:30;1323:2191:166;;6608:1:31;6633:30;2658:162:29;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;1323:2191:166;;-1:-1:-1;2763:40:29;9163:206:31;;;;-1:-1:-1;;;;;1323:2191:166;9233:21:31;;9229:89;;1323:2191:166;9252:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;9252:1:31;1323:2191:166;;7513:19:31;;;7509:115;;1323:2191:166;;9252:1:31;1323:2191:166;;8262:25:31;1323:2191:166;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;8262:25:31;9163:206::o;7509:115::-;7559:50;;;;;9252:1;7559:50;;1323:2191:166;;;;;;9252:1:31;7559:50;10880:487;;-1:-1:-1;;;;;1323:2191:166;;;11045:19:31;;11041:89;;-1:-1:-1;;;;;1323:2191:166;;11143:21:31;;11139:90;;11319:31;11238:20;;1323:2191:166;11238:20:31;;:::i;:::-;1323:2191:166;-1:-1:-1;1323:2191:166;;;;;-1:-1:-1;1323:2191:166;;;;;;;11319:31:31;10880:487::o;7124:1170::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;8262:25:31;;1323:2191:166;;7822:16:31;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;7818:429:31;1323:2191:166;;;;;8262:25:31;7124:1170::o;7818:429::-;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;7818:429:31;;1323:2191:166;;;;;1653:9;;;;;1323:2191;1653:9;4016:191:40;4129:17;;:::i;:::-;4148:20;;:::i;:::-;1323:2191:166;;4107:92:40;;;;1323:2191:166;1959:95:40;1323:2191:166;;;1959:95:40;;1323:2191:166;1959:95:40;;;1323:2191:166;4170:13:40;1959:95;;;1323:2191:166;4193:4:40;1959:95;;;1323:2191:166;1959:95:40;4107:92;;;;;;:::i;:::-;1323:2191:166;4097:103:40;;4016:191;:::o;7082:141:30:-;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;5203:1551:77;;;6283:66;6270:79;;6266:164;;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;;6541:24:77;;;;;;;;;-1:-1:-1;6541:24:77;-1:-1:-1;;;;;1323:2191:166;;6579:20:77;6575:113;;6698:49;-1:-1:-1;6698:49:77;-1:-1:-1;5203:1551:77;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:77;6541:24;6615:62;-1:-1:-1;6615:62:77;:::o;6541:24::-;1323:2191:166;;;-1:-1:-1;1323:2191:166;;;;;6266:164:77;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;1323:2191:166;;;;;;7366:29:77;;;7411:7;;:::o;7362:444::-;1323:2191:166;7462:38:77;;1323:2191:166;;7523:23:77;;;7375:20;7523:23;1323:2191:166;7375:20:77;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;1323:2191:166;;;7375:20:77;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;1323:2191:166;;;7375:20:77;7763:32;1323:2191:166;;;;7375:20:77;1323:2191:166;;;;;7375:20:77;1323:2191:166;6928:687:40;1323:2191:166;;:::i;:::-;;;;7100:22:40;;;;1323:2191:166;;7145:22:40;7138:29;:::o;7096:513::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;7473:15:40;;;;7508:17;:::o;7469:130::-;7564:20;7571:13;7564:20;:::o;7836:723::-;1323:2191:166;;:::i;:::-;;;;8017:25:40;;;;1323:2191:166;;8065:25:40;8058:32;:::o;8013:540::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;8411:18:40;;;;8449:20;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;1323:2191:166;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;1323:2191:166;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;1323:2191:166;;;;4933:24:66;1323:2191:166;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":5612,"length":32},{"start":5819,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","proxiableUUID()":"52d1902d","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Wrapped Vara (WVARA) is represents VARA on Ethereum as ERC20 token. VARA is also used for paying fees, staking and governance on Vara Network, while WVARA does all of the same things but on Ethereum. On Ethereum network, WVARA is used as an executable balance for programs (Mirrors). Please note that this version of WrappedVara is only used in local development environments, in production we use this: - https://github.com/gear-tech/gear-bridges/blob/main/ethereum/src/erc20/WrappedVara.sol\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. Also see documentation about decimals: - https://wiki.vara.network/docs/vara-network/staking/validator-faqs#what-is-the-precision-of-the-vara-token\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"initialize(address)\":{\"details\":\"Initializes the WrappedVara contract with the token name and symbol.The initialOwner receives the 1 million WVARA tokens minted during initialization.\",\"params\":{\"initialOwner\":\"The address that will be able to mint tokens.\"}},\"mint(address,uint256)\":{\"details\":\"Mints `amount` tokens to `to`.\",\"params\":{\"amount\":\"The amount of tokens to mint.\",\"to\":\"The address to mint tokens to.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x075302c23ba4b3a1d2a5000947ac44bbb4e84b011ecadad6f5e3fd92cd568659\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13806b62ea930e61dfba5fbbfd4eafe135bb0e2e4d55ce8cde1407d7b20a739\",\"dweb:/ipfs/QmYjt4fwBLdKrMbGHZPqdsiwsK4obFdXdKFhQBBW5ruEuC\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13\",\"dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x36d7dd303d4eaa38bbf5178a1292509b9e05161142a3b4f11bbc5488cbd0d5bd\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://48fde6f500da4a712063763076f03c0613a7800d689055d088aa015f509b20cb\",\"dweb:/ipfs/QmdDvTX8ZRtAjZwZPgXJpNNfpbyXXQ2YSN6fdD9EccJBHn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. Also see documentation about decimals: - https://wiki.vara.network/docs/vara-network/staking/validator-faqs#what-is-the-precision-of-the-vara-token"},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"initialize(address)":{"details":"Initializes the WrappedVara contract with the token name and symbol.The initialOwner receives the 1 million WVARA tokens minted during initialization.","params":{"initialOwner":"The address that will be able to mint tokens."}},"mint(address,uint256)":{"details":"Mints `amount` tokens to `to`.","params":{"amount":"The amount of tokens to mint.","to":"The address to mint tokens to."}},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":""},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-core/lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022","urls":["bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0","dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x075302c23ba4b3a1d2a5000947ac44bbb4e84b011ecadad6f5e3fd92cd568659","urls":["bzz-raw://c13806b62ea930e61dfba5fbbfd4eafe135bb0e2e4d55ce8cde1407d7b20a739","dweb:/ipfs/QmYjt4fwBLdKrMbGHZPqdsiwsK4obFdXdKFhQBBW5ruEuC"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459","urls":["bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13","dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x36d7dd303d4eaa38bbf5178a1292509b9e05161142a3b4f11bbc5488cbd0d5bd","urls":["bzz-raw://48fde6f500da4a712063763076f03c0613a7800d689055d088aa015f509b20cb","dweb:/ipfs/QmdDvTX8ZRtAjZwZPgXJpNNfpbyXXQ2YSN6fdD9EccJBHn"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":82468,"exportedSymbols":{"ERC20BurnableUpgradeable":[43269],"ERC20PermitUpgradeable":[43438],"ERC20Upgradeable":[43207],"Initializable":[42590],"OwnableUpgradeable":[42322],"UUPSUpgradeable":[46243],"WrappedVara":[82467]},"nodeType":"SourceUnit","src":"74:3441:166","nodes":[{"id":82326,"nodeType":"PragmaDirective","src":"74:24:166","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":82328,"nodeType":"ImportDirective","src":"100:101:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82468,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":82327,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82330,"nodeType":"ImportDirective","src":"202:96:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":82468,"sourceUnit":42591,"symbolAliases":[{"foreign":{"id":82329,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42590,"src":"210:13:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82332,"nodeType":"ImportDirective","src":"299:102:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":82468,"sourceUnit":43208,"symbolAliases":[{"foreign":{"id":82331,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43207,"src":"307:16:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82334,"nodeType":"ImportDirective","src":"402:135:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82468,"sourceUnit":43270,"symbolAliases":[{"foreign":{"id":82333,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43269,"src":"415:24:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82336,"nodeType":"ImportDirective","src":"538:131:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82468,"sourceUnit":43439,"symbolAliases":[{"foreign":{"id":82335,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43438,"src":"551:22:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82338,"nodeType":"ImportDirective","src":"670:88:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82468,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":82337,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"678:15:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82467,"nodeType":"ContractDefinition","src":"1323:2191:166","nodes":[{"id":82354,"nodeType":"VariableDeclaration","src":"1496:51:166","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"1520:10:166","scope":82467,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":82352,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:166","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":82353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1533:14:166","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":82357,"nodeType":"VariableDeclaration","src":"1553:46:166","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"1577:12:166","scope":82467,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":82355,"name":"string","nodeType":"ElementaryTypeName","src":"1553:6:166","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":82356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1592:7:166","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":82360,"nodeType":"VariableDeclaration","src":"1605:57:166","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"1630:20:166","scope":82467,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82358,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":82359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1653:9:166","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":82368,"nodeType":"FunctionDefinition","src":"1737:53:166","nodes":[],"body":{"id":82367,"nodeType":"Block","src":"1751:39:166","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82364,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"1761:20:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":82365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1761:22:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82366,"nodeType":"ExpressionStatement","src":"1761:22:166"}]},"documentation":{"id":82361,"nodeType":"StructuredDocumentation","src":"1669:63:166","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":82362,"nodeType":"ParameterList","parameters":[],"src":"1748:2:166"},"returnParameters":{"id":82363,"nodeType":"ParameterList","parameters":[],"src":"1751:0:166"},"scope":82467,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82403,"nodeType":"FunctionDefinition","src":"2061:297:166","nodes":[],"body":{"id":82402,"nodeType":"Block","src":"2122:236:166","nodes":[],"statements":[{"expression":{"arguments":[{"id":82377,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82354,"src":"2145:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":82378,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82357,"src":"2157:12:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82376,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42658,"src":"2132:12:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":82379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2132:38:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82380,"nodeType":"ExpressionStatement","src":"2132:38:166"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82381,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43228,"src":"2180:20:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":82382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2180:22:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82383,"nodeType":"ExpressionStatement","src":"2180:22:166"},{"expression":{"arguments":[{"id":82385,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82371,"src":"2227:12:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82384,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"2212:14:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":82386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2212:28:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82387,"nodeType":"ExpressionStatement","src":"2212:28:166"},{"expression":{"arguments":[{"id":82389,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82354,"src":"2269:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82388,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43325,"src":"2250:18:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":82390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2250:30:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82391,"nodeType":"ExpressionStatement","src":"2250:30:166"},{"expression":{"arguments":[{"id":82393,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82371,"src":"2297:12:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82394,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82360,"src":"2311:20:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":82395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2334:2:166","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":82396,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[82450],"referencedDeclaration":82450,"src":"2340:8:166","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":82397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2340:10:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2334:16:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2311:39:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82392,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43039,"src":"2291:5:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":82400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2291:60:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82401,"nodeType":"ExpressionStatement","src":"2291:60:166"}]},"documentation":{"id":82369,"nodeType":"StructuredDocumentation","src":"1796:260:166","text":" @dev Initializes the WrappedVara contract with the token name and symbol.\n @param initialOwner The address that will be able to mint tokens.\n @dev The initialOwner receives the 1 million WVARA tokens minted during initialization."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":82374,"kind":"modifierInvocation","modifierName":{"id":82373,"name":"initializer","nameLocations":["2110:11:166"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"2110:11:166"},"nodeType":"ModifierInvocation","src":"2110:11:166"}],"name":"initialize","nameLocation":"2070:10:166","parameters":{"id":82372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82371,"mutability":"mutable","name":"initialOwner","nameLocation":"2089:12:166","nodeType":"VariableDeclaration","scope":82403,"src":"2081:20:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82370,"name":"address","nodeType":"ElementaryTypeName","src":"2081:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2080:22:166"},"returnParameters":{"id":82375,"nodeType":"ParameterList","parameters":[],"src":"2122:0:166"},"scope":82467,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82430,"nodeType":"FunctionDefinition","src":"2431:218:166","nodes":[],"body":{"id":82429,"nodeType":"Block","src":"2489:160:166","nodes":[],"statements":[{"expression":{"arguments":[{"id":82413,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82354,"src":"2512:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":82414,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82357,"src":"2524:12:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82412,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42658,"src":"2499:12:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":82415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2499:38:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82416,"nodeType":"ExpressionStatement","src":"2499:38:166"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82417,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43228,"src":"2547:20:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":82418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2547:22:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82419,"nodeType":"ExpressionStatement","src":"2547:22:166"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":82421,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"2594:5:166","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":82422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2594:7:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82420,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"2579:14:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":82423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2579:23:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82424,"nodeType":"ExpressionStatement","src":"2579:23:166"},{"expression":{"arguments":[{"id":82426,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82354,"src":"2631:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82425,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43325,"src":"2612:18:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":82427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2612:30:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82428,"nodeType":"ExpressionStatement","src":"2612:30:166"}]},"documentation":{"id":82404,"nodeType":"StructuredDocumentation","src":"2364:62:166","text":" @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":82407,"kind":"modifierInvocation","modifierName":{"id":82406,"name":"onlyOwner","nameLocations":["2462:9:166"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2462:9:166"},"nodeType":"ModifierInvocation","src":"2462:9:166"},{"arguments":[{"hexValue":"32","id":82409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2486:1:166","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":82410,"kind":"modifierInvocation","modifierName":{"id":82408,"name":"reinitializer","nameLocations":["2472:13:166"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"2472:13:166"},"nodeType":"ModifierInvocation","src":"2472:16:166"}],"name":"reinitialize","nameLocation":"2440:12:166","parameters":{"id":82405,"nodeType":"ParameterList","parameters":[],"src":"2452:2:166"},"returnParameters":{"id":82411,"nodeType":"ParameterList","parameters":[],"src":"2489:0:166"},"scope":82467,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82440,"nodeType":"FunctionDefinition","src":"2814:84:166","nodes":[],"body":{"id":82439,"nodeType":"Block","src":"2896:2:166","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":82431,"nodeType":"StructuredDocumentation","src":"2655:154:166","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":82437,"kind":"modifierInvocation","modifierName":{"id":82436,"name":"onlyOwner","nameLocations":["2886:9:166"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2886:9:166"},"nodeType":"ModifierInvocation","src":"2886:9:166"}],"name":"_authorizeUpgrade","nameLocation":"2823:17:166","overrides":{"id":82435,"nodeType":"OverrideSpecifier","overrides":[],"src":"2877:8:166"},"parameters":{"id":82434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82433,"mutability":"mutable","name":"newImplementation","nameLocation":"2849:17:166","nodeType":"VariableDeclaration","scope":82440,"src":"2841:25:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82432,"name":"address","nodeType":"ElementaryTypeName","src":"2841:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2840:27:166"},"returnParameters":{"id":82438,"nodeType":"ParameterList","parameters":[],"src":"2896:0:166"},"scope":82467,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":82450,"nodeType":"FunctionDefinition","src":"3172:83:166","nodes":[],"body":{"id":82449,"nodeType":"Block","src":"3229:26:166","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":82447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:2:166","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":82446,"id":82448,"nodeType":"Return","src":"3239:9:166"}]},"baseFunctions":[42727],"documentation":{"id":82441,"nodeType":"StructuredDocumentation","src":"2904:263:166","text":" @dev Returns the number of decimals used to get its user representation.\n Also see documentation about decimals:\n - https://wiki.vara.network/docs/vara-network/staking/validator-faqs#what-is-the-precision-of-the-vara-token"},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3181:8:166","overrides":{"id":82443,"nodeType":"OverrideSpecifier","overrides":[],"src":"3204:8:166"},"parameters":{"id":82442,"nodeType":"ParameterList","parameters":[],"src":"3189:2:166"},"returnParameters":{"id":82446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82445,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82450,"src":"3222:5:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":82444,"name":"uint8","nodeType":"ElementaryTypeName","src":"3222:5:166","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3221:7:166"},"scope":82467,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":82466,"nodeType":"FunctionDefinition","src":"3419:93:166","nodes":[],"body":{"id":82465,"nodeType":"Block","src":"3478:34:166","nodes":[],"statements":[{"expression":{"arguments":[{"id":82461,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82453,"src":"3494:2:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82462,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82455,"src":"3498:6:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82460,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43039,"src":"3488:5:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":82463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3488:17:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82464,"nodeType":"ExpressionStatement","src":"3488:17:166"}]},"documentation":{"id":82451,"nodeType":"StructuredDocumentation","src":"3261:153:166","text":" @dev Mints `amount` tokens to `to`.\n @param to The address to mint tokens to.\n @param amount The amount of tokens to mint."},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":82458,"kind":"modifierInvocation","modifierName":{"id":82457,"name":"onlyOwner","nameLocations":["3468:9:166"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"3468:9:166"},"nodeType":"ModifierInvocation","src":"3468:9:166"}],"name":"mint","nameLocation":"3428:4:166","parameters":{"id":82456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82453,"mutability":"mutable","name":"to","nameLocation":"3441:2:166","nodeType":"VariableDeclaration","scope":82466,"src":"3433:10:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82452,"name":"address","nodeType":"ElementaryTypeName","src":"3433:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82455,"mutability":"mutable","name":"amount","nameLocation":"3453:6:166","nodeType":"VariableDeclaration","scope":82466,"src":"3445:14:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82454,"name":"uint256","nodeType":"ElementaryTypeName","src":"3445:7:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3432:28:166"},"returnParameters":{"id":82459,"nodeType":"ParameterList","parameters":[],"src":"3478:0:166"},"scope":82467,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":82340,"name":"Initializable","nameLocations":["1351:13:166"],"nodeType":"IdentifierPath","referencedDeclaration":42590,"src":"1351:13:166"},"id":82341,"nodeType":"InheritanceSpecifier","src":"1351:13:166"},{"baseName":{"id":82342,"name":"ERC20Upgradeable","nameLocations":["1370:16:166"],"nodeType":"IdentifierPath","referencedDeclaration":43207,"src":"1370:16:166"},"id":82343,"nodeType":"InheritanceSpecifier","src":"1370:16:166"},{"baseName":{"id":82344,"name":"ERC20BurnableUpgradeable","nameLocations":["1392:24:166"],"nodeType":"IdentifierPath","referencedDeclaration":43269,"src":"1392:24:166"},"id":82345,"nodeType":"InheritanceSpecifier","src":"1392:24:166"},{"baseName":{"id":82346,"name":"OwnableUpgradeable","nameLocations":["1422:18:166"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"1422:18:166"},"id":82347,"nodeType":"InheritanceSpecifier","src":"1422:18:166"},{"baseName":{"id":82348,"name":"ERC20PermitUpgradeable","nameLocations":["1446:22:166"],"nodeType":"IdentifierPath","referencedDeclaration":43438,"src":"1446:22:166"},"id":82349,"nodeType":"InheritanceSpecifier","src":"1446:22:166"},{"baseName":{"id":82350,"name":"UUPSUpgradeable","nameLocations":["1474:15:166"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"1474:15:166"},"id":82351,"nodeType":"InheritanceSpecifier","src":"1474:15:166"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","documentation":{"id":82339,"nodeType":"StructuredDocumentation","src":"760:562:166","text":" @dev Wrapped Vara (WVARA) is represents VARA on Ethereum as ERC20 token.\n VARA is also used for paying fees, staking and governance on Vara Network,\n while WVARA does all of the same things but on Ethereum.\n On Ethereum network, WVARA is used as an executable balance for programs (Mirrors).\n Please note that this version of WrappedVara is only used in local development environments,\n in production we use this:\n - https://github.com/gear-tech/gear-bridges/blob/main/ethereum/src/erc20/WrappedVara.sol"},"fullyImplemented":true,"linearizedBaseContracts":[82467,46243,44833,43438,43698,44416,44823,46898,42322,43269,43207,44875,46862,46836,43484,42590],"name":"WrappedVara","nameLocation":"1332:11:166","scope":82468,"usedErrors":[42158,42163,42339,42342,43304,43311,43601,44845,44850,44855,44864,44869,44874,45427,45440,46100,46105,47372,48774,50701,50706,50711],"usedEvents":[42169,42347,44781,44803,46770,46779]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":166} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a080604052346100c257306080525f5160206125c65f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b6040516124ff90816100c782396080518181816115ec01526116bb0152f35b6001600160401b0319166001600160401b039081175f5160206125c65f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461198e578063095ea7b31461196857806318160ddd1461193f57806323b872dd14611907578063313ce567146118ec5780633644e515146118ca57806340c10f191461188d57806342966c68146118705780634f1ef2861461164057806352d1902d146115da5780636c2eb35014610ec757806370a0823114610e83578063715018a614610e1c57806379cc679014610dec5780637ecebe0014610d9657806384b0196e14610c725780638da5cb5b14610c3e57806395d89b4114610b48578063a9059cbb14610b17578063ad3cb1cc14610acc578063c4d66de8146102f9578063d505accf14610197578063dd62ed3e146101505763f2fde38b14610121575f80fd5b3461014c57602036600319011261014c5761014a61013d611a6f565b610145611f16565b611d10565b005b5f80fd5b3461014c57604036600319011261014c57610169611a6f565b61017a610174611a85565b91611cd8565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461014c5760e036600319011261014c576101b0611a6f565b6101b8611a85565b604435906064359260843560ff8116810361014c578442116102e6576102ab6102b49160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261027960e082611a9b565b519020610284612124565b906040519161190160f01b83526002830152602282015260c43591604260a43592206121b6565b90929192612243565b6001600160a01b03168481036102cf575061014a9350611fff565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461014c57602036600319011261014c57610312611a6f565b5f5160206124bf5f395f51905f5254906001600160401b0360ff8360401c1615921680159081610ac4575b6001149081610aba575b159081610ab1575b50610aa2578160016001600160401b03195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610a6d575b61038d611c8b565b91610396611cb5565b9161039f61218b565b6103a761218b565b83516001600160401b038111610759576103ce5f51602061239f5f395f51905f5254611ad7565b601f81116109f3575b50602094601f8211600114610978579481929394955f9261096d575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b82516001600160401b0381116107595761043b5f5160206123ff5f395f51905f5254611ad7565b601f81116108f3575b506020601f821160011461087857819293945f9261086d575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61048661218b565b61048e61218b565b61049661218b565b61049f81611d10565b6104a7611c8b565b916104b061218b565b604051916104bf604084611a9b565b60018352603160f81b60208401526104d561218b565b83516001600160401b038111610759576104fc5f5160206123df5f395f51905f5254611ad7565b601f81116107f3575b50602094601f8211600114610778579481929394955f9261076d575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b82516001600160401b038111610759576105695f51602061245f5f395f51905f5254611ad7565b601f81116106df575b506020601f821160011461066457819293945f92610659575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f528190555f5160206124df5f395f51905f52556001600160a01b0381161561064657670de0b6b3a76400006105ee91612062565b6105f457005b60ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b01519050848061058b565b601f198216905f51602061245f5f395f51905f525f52805f20915f5b8181106106c7575095836001959697106106af575b505050811b015f51602061245f5f395f51905f52556105ac565b01515f1960f88460031b161c19169055848080610695565b9192602060018192868b015181550194019201610680565b81811115610572575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7560208410610751575b81601f9101920160051c03905f5b828110610744575050610572565b5f82820155600101610736565b5f9150610728565b634e487b7160e01b5f52604160045260245ffd5b015190508580610521565b601f198216955f5160206123df5f395f51905f525f52805f20915f5b8881106107db575083600195969798106107c3575b505050811b015f5160206123df5f395f51905f5255610542565b01515f1960f88460031b161c191690558580806107a9565b91926020600181928685015181550194019201610794565b81811115610505575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d60208410610865575b81601f9101920160051c03905f5b828110610858575050610505565b5f8282015560010161084a565b5f915061083c565b01519050848061045d565b601f198216905f5160206123ff5f395f51905f525f52805f20915f5b8181106108db575095836001959697106108c3575b505050811b015f5160206123ff5f395f51905f525561047e565b01515f1960f88460031b161c191690558480806108a9565b9192602060018192868b015181550194019201610894565b81811115610444575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa60208410610965575b81601f9101920160051c03905f5b828110610958575050610444565b5f8282015560010161094a565b5f915061093c565b0151905085806103f3565b601f198216955f51602061239f5f395f51905f525f52805f20915f5b8881106109db575083600195969798106109c3575b505050811b015f51602061239f5f395f51905f5255610414565b01515f1960f88460031b161c191690558580806109a9565b91926020600181928685015181550194019201610994565b818111156103d7575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab060208410610a65575b81601f9101920160051c03905f5b828110610a585750506103d7565b5f82820155600101610a4a565b5f9150610a3c565b6801000000000000000060ff60401b195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610385565b63f92ee8a960e01b5f5260045ffd5b9050158361034f565b303b159150610347565b83915061033d565b3461014c575f36600319011261014c57610b13604051610aed604082611a9b565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611a4b565b0390f35b3461014c57604036600319011261014c57610b3d610b33611a6f565b6024359033611e45565b602060405160018152f35b3461014c575f36600319011261014c576040515f5f5160206123ff5f395f51905f5254610b7481611ad7565b8084529060018116908115610c1a5750600114610bb0575b610b1383610b9c81850382611a9b565b604051918291602083526020830190611a4b565b5f5160206123ff5f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610c0057509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291610be8565b60ff191660208086019190915291151560051b84019091019150610b9c9050610b8c565b3461014c575f36600319011261014c575f51602061241f5f395f51905f52546040516001600160a01b039091168152602090f35b3461014c575f36600319011261014c575f51602061247f5f395f51905f52541580610d80575b15610d4357610ce7610ca8611b0f565b610cb0611bde565b6020610cf560405192610cc38385611a9b565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190611a4b565b908582036040870152611a4b565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d2c57505050500390f35b835185528695509381019392810192600101610d1d565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206124df5f395f51905f525415610c98565b3461014c57602036600319011261014c57610daf611a6f565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461014c57604036600319011261014c5761014a610e08611a6f565b60243590610e17823383611d81565b611f49565b3461014c575f36600319011261014c57610e34611f16565b5f51602061241f5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014c57602036600319011261014c576001600160a01b03610ea4611a6f565b165f525f5160206123bf5f395f51905f52602052602060405f2054604051908152f35b3461014c575f36600319011261014c57610edf611f16565b5f5160206124bf5f395f51905f525460ff8160401c169081156115c5575b50610aa2575f5160206124bf5f395f51905f52805468ffffffffffffffffff191668010000000000000002179055610f33611c8b565b610f3b611cb5565b610f4361218b565b610f4b61218b565b81516001600160401b03811161075957610f725f51602061239f5f395f51905f5254611ad7565b601f811161154b575b50602092601f82116001146114d257928192935f926114c7575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b80516001600160401b03811161075957610fdd5f5160206123ff5f395f51905f5254611ad7565b601f811161144d575b50602091601f82116001146113d5579181925f926113ca575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61102861218b565b5f51602061241f5f395f51905f5254611054906001600160a01b031661104c61218b565b61014561218b565b61105c611c8b565b61106461218b565b604051611072604082611a9b565b60018152603160f81b602082015261108861218b565b81516001600160401b038111610759576110af5f5160206123df5f395f51905f5254611ad7565b601f8111611350575b50602092601f82116001146112d757928192935f926112cc575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b80516001600160401b0381116107595761111a5f51602061245f5f395f51905f5254611ad7565b601f8111611252575b50602091601f82116001146111da579181925f926111cf575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f52555f5f5160206124df5f395f51905f525560ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b01519050828061113c565b601f198216925f51602061245f5f395f51905f525f52805f20915f5b85811061123a57508360019510611222575b505050811b015f51602061245f5f395f51905f525561115d565b01515f1960f88460031b161c19169055828080611208565b919260206001819286850151815501940192016111f6565b81811115611123575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75602084106112c4575b81601f9101920160051c03905f5b8281106112b7575050611123565b5f828201556001016112a9565b5f915061129b565b0151905083806110d2565b601f198216935f5160206123df5f395f51905f525f52805f20915f5b8681106113385750836001959610611320575b505050811b015f5160206123df5f395f51905f52556110f3565b01515f1960f88460031b161c19169055838080611306565b919260206001819286850151815501940192016112f3565b818111156110b8575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d602084106113c2575b81601f9101920160051c03905f5b8281106113b55750506110b8565b5f828201556001016113a7565b5f9150611399565b015190508280610fff565b601f198216925f5160206123ff5f395f51905f525f52805f20915f5b8581106114355750836001951061141d575b505050811b015f5160206123ff5f395f51905f5255611020565b01515f1960f88460031b161c19169055828080611403565b919260206001819286850151815501940192016113f1565b81811115610fe6575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa602084106114bf575b81601f9101920160051c03905f5b8281106114b2575050610fe6565b5f828201556001016114a4565b5f9150611496565b015190508380610f95565b601f198216935f51602061239f5f395f51905f525f52805f20915f5b868110611533575083600195961061151b575b505050811b015f51602061239f5f395f51905f5255610fb6565b01515f1960f88460031b161c19169055838080611501565b919260206001819286850151815501940192016114ee565b81811115610f7b575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0602084106115bd575b81601f9101920160051c03905f5b8281106115b0575050610f7b565b5f828201556001016115a2565b5f9150611594565b600291506001600160401b0316101581610efd565b3461014c575f36600319011261014c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116315760206040515f51602061249f5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261014c57611654611a6f565b602435906001600160401b03821161014c573660238301121561014c5781600401359061168082611abc565b9161168e6040519384611a9b565b8083526020830193366024838301011161014c57815f926024602093018737840101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561184e575b50611631576116f3611f16565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f918161181a575b506117355784634c9c8ce360e01b5f5260045260245ffd5b805f51602061249f5f395f51905f528692036118085750823b156117f6575f51602061249f5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28251156117dd575f809161014a945190845af43d156117d5573d916117b983611abc565b926117c76040519485611a9b565b83523d5f602085013e612340565b606091612340565b505050346117e757005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611846575b8161183660209383611a9b565b8101031261014c5751908661171d565b3d9150611829565b5f51602061249f5f395f51905f52546001600160a01b031614159050846116e6565b3461014c57602036600319011261014c5761014a60043533611f49565b3461014c57604036600319011261014c576118a6611a6f565b6118ae611f16565b6001600160a01b038116156106465761014a9060243590612062565b3461014c575f36600319011261014c5760206118e4612124565b604051908152f35b3461014c575f36600319011261014c576020604051600c8152f35b3461014c57606036600319011261014c57610b3d611923611a6f565b61192b611a85565b6044359161193a833383611d81565b611e45565b3461014c575f36600319011261014c5760205f51602061243f5f395f51905f5254604051908152f35b3461014c57604036600319011261014c57610b3d611984611a6f565b6024359033611fff565b3461014c575f36600319011261014c576040515f5f51602061239f5f395f51905f52546119ba81611ad7565b8084529060018116908115610c1a57506001146119e157610b1383610b9c81850382611a9b565b5f51602061239f5f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210611a3157509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291611a19565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361014c57565b602435906001600160a01b038216820361014c57565b90601f801991011681019081106001600160401b0382111761075957604052565b6001600160401b03811161075957601f01601f191660200190565b90600182811c92168015611b05575b6020831014611af157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611ae6565b604051905f825f5160206123df5f395f51905f525491611b2e83611ad7565b8083529260018116908115611bbf5750600114611b54575b611b5292500383611a9b565b565b505f5160206123df5f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611ba3575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611b8b565b60209250611b5294915060ff191682840152151560051b820101611b46565b604051905f825f51602061245f5f395f51905f525491611bfd83611ad7565b8083529260018116908115611bbf5750600114611c2057611b5292500383611a9b565b505f51602061245f5f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611c6f575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611c57565b60405190611c9a604083611a9b565b600c82526b57726170706564205661726160a01b6020830152565b60405190611cc4604083611a9b565b6005825264575641524160d81b6020830152565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b03168015611d6e575f51602061241f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b9190611d8c83611cd8565b60018060a01b0382165f5260205260405f2054925f198410611daf575b50505050565b828410611e22576001600160a01b03811615611e0f576001600160a01b03821615611dfc57611ddd90611cd8565b9060018060a01b03165f5260205260405f20910390555f808080611da9565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115611f03576001600160a01b031691821561064657815f525f5160206123bf5f395f51905f5260205260405f2054818110611eea57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206123bf5f395f51905f5284520360405f2055845f525f5160206123bf5f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f51602061241f5f395f51905f52546001600160a01b03163303611f3657565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b03168015611f0357805f525f5160206123bf5f395f51905f5260205260405f2054838110611fe5576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206123bf5f395f51905f528452036040862055805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b038316918215611e0f576001600160a01b0316928315611dfc577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161204e602092611cd8565b855f5282528060405f2055604051908152a3565b5f51602061243f5f395f51905f525490828201809211612110575f51602061243f5f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090846120ee57805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f52555b604051908152a3565b8484525f5160206123bf5f395f51905f528252604084208181540190556120e5565b634e487b7160e01b5f52601160045260245ffd5b61212c6122b7565b61213461230e565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261218560c082611a9b565b51902090565b60ff5f5160206124bf5f395f51905f525460401c16156121a757565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612238579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561222d575f516001600160a01b0381161561222357905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156122a35780612255575050565b6001810361226c5763f645eedf60e01b5f5260045ffd5b60028103612287575063fce698f760e01b5f5260045260245ffd5b6003146122915750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6122bf611b0f565b80519081156122cf576020012090565b50505f51602061247f5f395f51905f525480156122e95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612316611bde565b8051908115612326576020012090565b50505f5160206124df5f395f51905f525480156122e95790565b90612364575080511561235557602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612395575b612375575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561236d56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00","sourceMap":"1323:2191:166:-:0;;;;;;;1060:4:60;1052:13;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;7894:76:30;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;7983:34:30;7979:146;;-1:-1:-1;1323:2191:166;;;;;;;;1052:13:60;1323:2191:166;;;;;;;;;;;7979:146:30;-1:-1:-1;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;8085:29:30;;1323:2191:166;;8085:29:30;7979:146;;;;7894:76;7936:23;;;-1:-1:-1;7936:23:30;;-1:-1:-1;7936:23:30;1323:2191:166;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461198e578063095ea7b31461196857806318160ddd1461193f57806323b872dd14611907578063313ce567146118ec5780633644e515146118ca57806340c10f191461188d57806342966c68146118705780634f1ef2861461164057806352d1902d146115da5780636c2eb35014610ec757806370a0823114610e83578063715018a614610e1c57806379cc679014610dec5780637ecebe0014610d9657806384b0196e14610c725780638da5cb5b14610c3e57806395d89b4114610b48578063a9059cbb14610b17578063ad3cb1cc14610acc578063c4d66de8146102f9578063d505accf14610197578063dd62ed3e146101505763f2fde38b14610121575f80fd5b3461014c57602036600319011261014c5761014a61013d611a6f565b610145611f16565b611d10565b005b5f80fd5b3461014c57604036600319011261014c57610169611a6f565b61017a610174611a85565b91611cd8565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461014c5760e036600319011261014c576101b0611a6f565b6101b8611a85565b604435906064359260843560ff8116810361014c578442116102e6576102ab6102b49160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261027960e082611a9b565b519020610284612124565b906040519161190160f01b83526002830152602282015260c43591604260a43592206121b6565b90929192612243565b6001600160a01b03168481036102cf575061014a9350611fff565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461014c57602036600319011261014c57610312611a6f565b5f5160206124bf5f395f51905f5254906001600160401b0360ff8360401c1615921680159081610ac4575b6001149081610aba575b159081610ab1575b50610aa2578160016001600160401b03195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610a6d575b61038d611c8b565b91610396611cb5565b9161039f61218b565b6103a761218b565b83516001600160401b038111610759576103ce5f51602061239f5f395f51905f5254611ad7565b601f81116109f3575b50602094601f8211600114610978579481929394955f9261096d575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b82516001600160401b0381116107595761043b5f5160206123ff5f395f51905f5254611ad7565b601f81116108f3575b506020601f821160011461087857819293945f9261086d575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61048661218b565b61048e61218b565b61049661218b565b61049f81611d10565b6104a7611c8b565b916104b061218b565b604051916104bf604084611a9b565b60018352603160f81b60208401526104d561218b565b83516001600160401b038111610759576104fc5f5160206123df5f395f51905f5254611ad7565b601f81116107f3575b50602094601f8211600114610778579481929394955f9261076d575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b82516001600160401b038111610759576105695f51602061245f5f395f51905f5254611ad7565b601f81116106df575b506020601f821160011461066457819293945f92610659575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f528190555f5160206124df5f395f51905f52556001600160a01b0381161561064657670de0b6b3a76400006105ee91612062565b6105f457005b60ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b01519050848061058b565b601f198216905f51602061245f5f395f51905f525f52805f20915f5b8181106106c7575095836001959697106106af575b505050811b015f51602061245f5f395f51905f52556105ac565b01515f1960f88460031b161c19169055848080610695565b9192602060018192868b015181550194019201610680565b81811115610572575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b7560208410610751575b81601f9101920160051c03905f5b828110610744575050610572565b5f82820155600101610736565b5f9150610728565b634e487b7160e01b5f52604160045260245ffd5b015190508580610521565b601f198216955f5160206123df5f395f51905f525f52805f20915f5b8881106107db575083600195969798106107c3575b505050811b015f5160206123df5f395f51905f5255610542565b01515f1960f88460031b161c191690558580806107a9565b91926020600181928685015181550194019201610794565b81811115610505575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d60208410610865575b81601f9101920160051c03905f5b828110610858575050610505565b5f8282015560010161084a565b5f915061083c565b01519050848061045d565b601f198216905f5160206123ff5f395f51905f525f52805f20915f5b8181106108db575095836001959697106108c3575b505050811b015f5160206123ff5f395f51905f525561047e565b01515f1960f88460031b161c191690558480806108a9565b9192602060018192868b015181550194019201610894565b81811115610444575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa60208410610965575b81601f9101920160051c03905f5b828110610958575050610444565b5f8282015560010161094a565b5f915061093c565b0151905085806103f3565b601f198216955f51602061239f5f395f51905f525f52805f20915f5b8881106109db575083600195969798106109c3575b505050811b015f51602061239f5f395f51905f5255610414565b01515f1960f88460031b161c191690558580806109a9565b91926020600181928685015181550194019201610994565b818111156103d7575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab060208410610a65575b81601f9101920160051c03905f5b828110610a585750506103d7565b5f82820155600101610a4a565b5f9150610a3c565b6801000000000000000060ff60401b195f5160206124bf5f395f51905f525416175f5160206124bf5f395f51905f5255610385565b63f92ee8a960e01b5f5260045ffd5b9050158361034f565b303b159150610347565b83915061033d565b3461014c575f36600319011261014c57610b13604051610aed604082611a9b565b60058152640352e302e360dc1b6020820152604051918291602083526020830190611a4b565b0390f35b3461014c57604036600319011261014c57610b3d610b33611a6f565b6024359033611e45565b602060405160018152f35b3461014c575f36600319011261014c576040515f5f5160206123ff5f395f51905f5254610b7481611ad7565b8084529060018116908115610c1a5750600114610bb0575b610b1383610b9c81850382611a9b565b604051918291602083526020830190611a4b565b5f5160206123ff5f395f51905f525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610c0057509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291610be8565b60ff191660208086019190915291151560051b84019091019150610b9c9050610b8c565b3461014c575f36600319011261014c575f51602061241f5f395f51905f52546040516001600160a01b039091168152602090f35b3461014c575f36600319011261014c575f51602061247f5f395f51905f52541580610d80575b15610d4357610ce7610ca8611b0f565b610cb0611bde565b6020610cf560405192610cc38385611a9b565b5f84525f368137604051958695600f60f81b875260e08588015260e0870190611a4b565b908582036040870152611a4b565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d2c57505050500390f35b835185528695509381019392810192600101610d1d565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b505f5160206124df5f395f51905f525415610c98565b3461014c57602036600319011261014c57610daf611a6f565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461014c57604036600319011261014c5761014a610e08611a6f565b60243590610e17823383611d81565b611f49565b3461014c575f36600319011261014c57610e34611f16565b5f51602061241f5f395f51905f5280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461014c57602036600319011261014c576001600160a01b03610ea4611a6f565b165f525f5160206123bf5f395f51905f52602052602060405f2054604051908152f35b3461014c575f36600319011261014c57610edf611f16565b5f5160206124bf5f395f51905f525460ff8160401c169081156115c5575b50610aa2575f5160206124bf5f395f51905f52805468ffffffffffffffffff191668010000000000000002179055610f33611c8b565b610f3b611cb5565b610f4361218b565b610f4b61218b565b81516001600160401b03811161075957610f725f51602061239f5f395f51905f5254611ad7565b601f811161154b575b50602092601f82116001146114d257928192935f926114c7575b50508160011b915f199060031b1c1916175f51602061239f5f395f51905f52555b80516001600160401b03811161075957610fdd5f5160206123ff5f395f51905f5254611ad7565b601f811161144d575b50602091601f82116001146113d5579181925f926113ca575b50508160011b915f199060031b1c1916175f5160206123ff5f395f51905f52555b61102861218b565b5f51602061241f5f395f51905f5254611054906001600160a01b031661104c61218b565b61014561218b565b61105c611c8b565b61106461218b565b604051611072604082611a9b565b60018152603160f81b602082015261108861218b565b81516001600160401b038111610759576110af5f5160206123df5f395f51905f5254611ad7565b601f8111611350575b50602092601f82116001146112d757928192935f926112cc575b50508160011b915f199060031b1c1916175f5160206123df5f395f51905f52555b80516001600160401b0381116107595761111a5f51602061245f5f395f51905f5254611ad7565b601f8111611252575b50602091601f82116001146111da579181925f926111cf575b50508160011b915f199060031b1c1916175f51602061245f5f395f51905f52555b5f5f51602061247f5f395f51905f52555f5f5160206124df5f395f51905f525560ff60401b195f5160206124bf5f395f51905f5254165f5160206124bf5f395f51905f52557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b01519050828061113c565b601f198216925f51602061245f5f395f51905f525f52805f20915f5b85811061123a57508360019510611222575b505050811b015f51602061245f5f395f51905f525561115d565b01515f1960f88460031b161c19169055828080611208565b919260206001819286850151815501940192016111f6565b81811115611123575f51602061245f5f395f51905f525f52601f820160051c7f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75602084106112c4575b81601f9101920160051c03905f5b8281106112b7575050611123565b5f828201556001016112a9565b5f915061129b565b0151905083806110d2565b601f198216935f5160206123df5f395f51905f525f52805f20915f5b8681106113385750836001959610611320575b505050811b015f5160206123df5f395f51905f52556110f3565b01515f1960f88460031b161c19169055838080611306565b919260206001819286850151815501940192016112f3565b818111156110b8575f5160206123df5f395f51905f525f52601f820160051c7f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d602084106113c2575b81601f9101920160051c03905f5b8281106113b55750506110b8565b5f828201556001016113a7565b5f9150611399565b015190508280610fff565b601f198216925f5160206123ff5f395f51905f525f52805f20915f5b8581106114355750836001951061141d575b505050811b015f5160206123ff5f395f51905f5255611020565b01515f1960f88460031b161c19169055828080611403565b919260206001819286850151815501940192016113f1565b81811115610fe6575f5160206123ff5f395f51905f525f52601f820160051c7f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa602084106114bf575b81601f9101920160051c03905f5b8281106114b2575050610fe6565b5f828201556001016114a4565b5f9150611496565b015190508380610f95565b601f198216935f51602061239f5f395f51905f525f52805f20915f5b868110611533575083600195961061151b575b505050811b015f51602061239f5f395f51905f5255610fb6565b01515f1960f88460031b161c19169055838080611501565b919260206001819286850151815501940192016114ee565b81811115610f7b575f51602061239f5f395f51905f525f52601f820160051c7f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0602084106115bd575b81601f9101920160051c03905f5b8281106115b0575050610f7b565b5f828201556001016115a2565b5f9150611594565b600291506001600160401b0316101581610efd565b3461014c575f36600319011261014c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116315760206040515f51602061249f5f395f51905f528152f35b63703e46dd60e11b5f5260045ffd5b604036600319011261014c57611654611a6f565b602435906001600160401b03821161014c573660238301121561014c5781600401359061168082611abc565b9161168e6040519384611a9b565b8083526020830193366024838301011161014c57815f926024602093018737840101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561184e575b50611631576116f3611f16565b6040516352d1902d60e01b81526001600160a01b0382169390602081600481885afa5f918161181a575b506117355784634c9c8ce360e01b5f5260045260245ffd5b805f51602061249f5f395f51905f528692036118085750823b156117f6575f51602061249f5f395f51905f5280546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28251156117dd575f809161014a945190845af43d156117d5573d916117b983611abc565b926117c76040519485611a9b565b83523d5f602085013e612340565b606091612340565b505050346117e757005b63b398979f60e01b5f5260045ffd5b634c9c8ce360e01b5f5260045260245ffd5b632a87526960e21b5f5260045260245ffd5b9091506020813d602011611846575b8161183660209383611a9b565b8101031261014c5751908661171d565b3d9150611829565b5f51602061249f5f395f51905f52546001600160a01b031614159050846116e6565b3461014c57602036600319011261014c5761014a60043533611f49565b3461014c57604036600319011261014c576118a6611a6f565b6118ae611f16565b6001600160a01b038116156106465761014a9060243590612062565b3461014c575f36600319011261014c5760206118e4612124565b604051908152f35b3461014c575f36600319011261014c576020604051600c8152f35b3461014c57606036600319011261014c57610b3d611923611a6f565b61192b611a85565b6044359161193a833383611d81565b611e45565b3461014c575f36600319011261014c5760205f51602061243f5f395f51905f5254604051908152f35b3461014c57604036600319011261014c57610b3d611984611a6f565b6024359033611fff565b3461014c575f36600319011261014c576040515f5f51602061239f5f395f51905f52546119ba81611ad7565b8084529060018116908115610c1a57506001146119e157610b1383610b9c81850382611a9b565b5f51602061239f5f395f51905f525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b808210611a3157509091508101602001610b9c610b8c565b919260018160209254838588010152019101909291611a19565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361014c57565b602435906001600160a01b038216820361014c57565b90601f801991011681019081106001600160401b0382111761075957604052565b6001600160401b03811161075957601f01601f191660200190565b90600182811c92168015611b05575b6020831014611af157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611ae6565b604051905f825f5160206123df5f395f51905f525491611b2e83611ad7565b8083529260018116908115611bbf5750600114611b54575b611b5292500383611a9b565b565b505f5160206123df5f395f51905f525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611ba3575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611b8b565b60209250611b5294915060ff191682840152151560051b820101611b46565b604051905f825f51602061245f5f395f51905f525491611bfd83611ad7565b8083529260018116908115611bbf5750600114611c2057611b5292500383611a9b565b505f51602061245f5f395f51905f525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611c6f575050906020611b5292820101611b46565b6020919350806001915483858901015201910190918492611c57565b60405190611c9a604083611a9b565b600c82526b57726170706564205661726160a01b6020830152565b60405190611cc4604083611a9b565b6005825264575641524160d81b6020830152565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b03168015611d6e575f51602061241f5f395f51905f5280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b9190611d8c83611cd8565b60018060a01b0382165f5260205260405f2054925f198410611daf575b50505050565b828410611e22576001600160a01b03811615611e0f576001600160a01b03821615611dfc57611ddd90611cd8565b9060018060a01b03165f5260205260405f20910390555f808080611da9565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b0316908115611f03576001600160a01b031691821561064657815f525f5160206123bf5f395f51905f5260205260405f2054818110611eea57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f5160206123bf5f395f51905f5284520360405f2055845f525f5160206123bf5f395f51905f52825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f51602061241f5f395f51905f52546001600160a01b03163303611f3657565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b03168015611f0357805f525f5160206123bf5f395f51905f5260205260405f2054838110611fe5576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f5160206123bf5f395f51905f528452036040862055805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f5255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b038316918215611e0f576001600160a01b0316928315611dfc577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161204e602092611cd8565b855f5282528060405f2055604051908152a3565b5f51602061243f5f395f51905f525490828201809211612110575f51602061243f5f395f51905f52919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602090846120ee57805f51602061243f5f395f51905f5254035f51602061243f5f395f51905f52555b604051908152a3565b8484525f5160206123bf5f395f51905f528252604084208181540190556120e5565b634e487b7160e01b5f52601160045260245ffd5b61212c6122b7565b61213461230e565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261218560c082611a9b565b51902090565b60ff5f5160206124bf5f395f51905f525460401c16156121a757565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411612238579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa1561222d575f516001600160a01b0381161561222357905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b60048110156122a35780612255575050565b6001810361226c5763f645eedf60e01b5f5260045ffd5b60028103612287575063fce698f760e01b5f5260045260245ffd5b6003146122915750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6122bf611b0f565b80519081156122cf576020012090565b50505f51602061247f5f395f51905f525480156122e95790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b612316611bde565b8051908115612326576020012090565b50505f5160206124df5f395f51905f525480156122e95790565b90612364575080511561235557602081519101fd5b63d6bda27560e01b5f5260045ffd5b81511580612395575b612375575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b1561236d56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101","sourceMap":"1323:2191:166:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;2357:1:29;1323:2191:166;;:::i;:::-;2303:62:29;;:::i;:::-;2357:1;:::i;:::-;1323:2191:166;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;4771:20:31;1323:2191:166;;:::i;:::-;4771:20:31;;:::i;:::-;:29;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2286:15:33;;:26;2282:97;;7051:25:77;7105:8;1323:2191:166;;;;;;;;;;;;972:64:36;1323:2191:166;;;;;;;;;;;;;;;;2420:78:33;1323:2191:166;2420:78:33;;1323:2191:166;1279:95:33;1323:2191:166;;1279:95:33;1323:2191:166;1279:95:33;;1323:2191:166;;;;;;;;;1279:95:33;;1323:2191:166;1279:95:33;1323:2191:166;1279:95:33;;1323:2191:166;;1279:95:33;;1323:2191:166;;1279:95:33;;1323:2191:166;;2420:78:33;;;1323:2191:166;2420:78:33;;:::i;:::-;1323:2191:166;2410:89:33;;3980:23:40;;:::i;:::-;3993:249:80;1323:2191:166;3993:249:80;;-1:-1:-1;;;3993:249:80;;;;;;;;;;1323:2191:166;;;3993:249:80;1323:2191:166;;3993:249:80;;7051:25:77;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;1323:2191:166;2623:15:33;;;2619:88;;10021:4:31;;;;;:::i;2619:88:33:-;2661:35;;;;;1323:2191:166;2661:35:33;1323:2191:166;;;;;;2661:35:33;2282:97;2335:33;;;;1323:2191:166;2335:33:33;1323:2191:166;;;;2335:33:33;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;4301:16:30;1323:2191:166;;4724:16:30;;:34;;;;1323:2191:166;4803:1:30;4788:16;:50;;;;1323:2191:166;4853:13:30;:30;;;;1323:2191:166;4849:91:30;;;1323:2191:166;4803:1:30;-1:-1:-1;;;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;4977:67:30;;1323:2191:166;;;:::i;:::-;1533:14;;;:::i;:::-;6891:76:30;;;:::i;:::-;;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;6891:76:30;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6959:1;;;:::i;:::-;1323:2191:166;;:::i;:::-;6891:76:30;;;:::i;:::-;1323:2191:166;;;;;;;:::i;:::-;4803:1:30;1323:2191:166;;-1:-1:-1;;;1323:2191:166;;;;6891:76:30;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;;8707:21:31;8703:91;;1653:9:166;8832:5:31;;;:::i;:::-;5064:101:30;;1323:2191:166;5064:101:30;-1:-1:-1;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;5140:14:30;1323:2191:166;;;4803:1:30;1323:2191:166;;5140:14:30;1323:2191:166;8703:91:31;8751:32;;;1323:2191:166;8751:32:31;1323:2191:166;;;;;8751:32:31;1323:2191:166;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4803:1:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;4977:67:30;1323:2191:166;-1:-1:-1;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;4977:67:30;;4849:91;6496:23;;;1323:2191:166;4906:23:30;1323:2191:166;;4906:23:30;4853:30;4870:13;;;4853:30;;;4788:50;4816:4;4808:25;:30;;-1:-1:-1;4788:50:30;;4724:34;;;-1:-1:-1;4724:34:30;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1323:2191:166;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;4545:5:31;1323:2191:166;;:::i;:::-;;;966:10:34;;4545:5:31;:::i;:::-;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;-1:-1:-1;1323:2191:166;;;;;;;;-1:-1:-1;;1323:2191:166;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;1323:2191:166;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;5647:18:40;:43;;;1323:2191:166;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5835:13:40;1323:2191:166;;;;5870:4:40;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;-1:-1:-1;;;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;;1323:2191:166;;;;;;;5647:43:40;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;5669:21:40;5647:43;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;;;;;;;;;972:64:36;1323:2191:166;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;1479:5:32;1323:2191:166;;:::i;:::-;;;966:10:34;1448:5:32;966:10:34;;1448:5:32;;:::i;:::-;1479;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;1323:2191:166;;;;;;;-1:-1:-1;;;;;1323:2191:166;3975:40:29;1323:2191:166;;3975:40:29;1323:2191:166;;;;;;;-1:-1:-1;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;6429:44:30;;;;;1323:2191:166;6425:105:30;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;1323:2191:166;;;;;;;:::i;:::-;1533:14;;:::i;:::-;6891:76:30;;:::i;:::-;;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;6891:76:30;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;6959:1:30;;-1:-1:-1;;;;;1323:2191:166;6891:76:30;;:::i;:::-;;;:::i;6959:1::-;1323:2191:166;;:::i;:::-;6891:76:30;;:::i;:::-;1323:2191:166;;;;;;:::i;:::-;6591:4:30;1323:2191:166;;-1:-1:-1;;;1323:2191:166;;;;6891:76:30;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;2581:7:31;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;6654:20:30;1323:2191:166;;;2486:1;1323:2191;;6654:20:30;1323:2191:166;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;2581:7:31;1323:2191:166;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:4:30;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;6429:44:30;2486:1:166;1323:2191;;-1:-1:-1;;;;;1323:2191:166;6448:25:30;;6429:44;;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;4824:6:60;-1:-1:-1;;;;;1323:2191:166;4815:4:60;4807:23;4803:145;;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;4803:145:60;4578:29;;;1323:2191:166;4908:29:60;1323:2191:166;;4908:29:60;1323:2191:166;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4401:6:60;1323:2191:166;4392:4:60;4384:23;;;:120;;;;1323:2191:166;4367:251:60;;;2303:62:29;;:::i;:::-;1323:2191:166;;-1:-1:-1;;;5865:52:60;;-1:-1:-1;;;;;1323:2191:166;;;;;;;;;5865:52:60;;1323:2191:166;;5865:52:60;;;1323:2191:166;-1:-1:-1;5861:437:60;;1805:47:53;;;;1323:2191:166;6227:60:60;1323:2191:166;;;;6227:60:60;5861:437;5959:40;-1:-1:-1;;;;;;;;;;;5959:40:60;;;5955:120;;1748:29:53;;;:34;1744:119;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;1323:2191:166;;;;;2407:36:53;-1:-1:-1;;2407:36:53;1323:2191:166;;2458:15:53;:11;;1323:2191:166;4065:25:66;;4107:55;4065:25;;;;;;1323:2191:166;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;4107:55:66;:::i;1323:2191:166:-;;;4107:55:66;:::i;2454:148:53:-;6163:9;;;;6159:70;;1323:2191:166;6159:70:53;6199:19;;;1323:2191:166;6199:19:53;1323:2191:166;;6199:19:53;1744:119;1805:47;;;1323:2191:166;1805:47:53;1323:2191:166;;;;1805:47:53;5955:120:60;6026:34;;;1323:2191:166;6026:34:60;1323:2191:166;;;;6026:34:60;5865:52;;;;1323:2191:166;5865:52:60;;1323:2191:166;5865:52:60;;;;;;1323:2191:166;5865:52:60;;;:::i;:::-;;;1323:2191:166;;;;;5865:52:60;;;;;;;-1:-1:-1;5865:52:60;;4384:120;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;4462:42:60;;;-1:-1:-1;4384:120:60;;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;1005:5:32;1323:2191:166;;966:10:34;1005:5:32;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;;:::i;:::-;2303:62:29;;:::i;:::-;-1:-1:-1;;;;;1323:2191:166;;8707:21:31;8703:91;;8832:5;1323:2191:166;;;8832:5:31;;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;3980:23:40;;:::i;:::-;1323:2191:166;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;3246:2;1323:2191;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;6102:5:31;1323:2191:166;;:::i;:::-;;;:::i;:::-;;;966:10:34;6066:5:31;966:10:34;;6066:5:31;;:::i;:::-;6102;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;-1:-1:-1;;1323:2191:166;;;;10021:4:31;1323:2191:166;;:::i;:::-;;;966:10:34;;10021:4:31;:::i;1323:2191:166:-;;;;;;-1:-1:-1;;1323:2191:166;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;-1:-1:-1;;1323:2191:166;;;;:::o;:::-;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;1323:2191:166;;;;;;;:::o;:::-;-1:-1:-1;;;;;1323:2191:166;;;;;;-1:-1:-1;;1323:2191:166;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;1323:2191:166;;;;:::o;1533:14::-;1323:2191;;;;;;;:::i;:::-;1533:14;1323:2191;;-1:-1:-1;;;1533:14:166;;;;:::o;1323:2191::-;-1:-1:-1;;;;;1323:2191:166;;;;;4771:13:31;1323:2191:166;;;;;;:::o;3405:215:29:-;-1:-1:-1;;;;;1323:2191:166;3489:22:29;;3485:91;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;1323:2191:166;;;;;;;-1:-1:-1;;;;;1323:2191:166;3975:40:29;-1:-1:-1;;3975:40:29;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;1323:2191:166;;3509:1:29;3534:31;11649:476:31;;;4771:20;;;:::i;:::-;1323:2191:166;;;;;;;-1:-1:-1;1323:2191:166;;;;-1:-1:-1;1323:2191:166;;;;;11814:36:31;;11810:309;;11649:476;;;;;:::o;11810:309::-;11870:24;;;11866:130;;-1:-1:-1;;;;;1323:2191:166;;11045:19:31;11041:89;;-1:-1:-1;;;;;1323:2191:166;;11143:21:31;11139:90;;11238:20;;;:::i;:::-;:29;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;-1:-1:-1;1323:2191:166;;;;;11810:309:31;;;;;;11139:90;11187:31;;;-1:-1:-1;11187:31:31;-1:-1:-1;11187:31:31;1323:2191:166;;-1:-1:-1;11187:31:31;11041:89;11087:32;;;-1:-1:-1;11087:32:31;-1:-1:-1;11087:32:31;1323:2191:166;;-1:-1:-1;11087:32:31;11866:130;11921:60;;;;;;-1:-1:-1;11921:60:31;1323:2191:166;;;;;;11921:60:31;1323:2191:166;;;;;;-1:-1:-1;11921:60:31;6509:300;-1:-1:-1;;;;;1323:2191:166;;6592:18:31;;6588:86;;-1:-1:-1;;;;;1323:2191:166;;6687:16:31;;6683:86;;1323:2191:166;6608:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;6608:1:31;1323:2191:166;;7513:19:31;;;7509:115;;1323:2191:166;8262:25:31;1323:2191:166;;;;6608:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;6608:1:31;1323:2191:166;;;6608:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;6608:1:31;1323:2191:166;;;;;;;;;;;;8262:25:31;6509:300::o;7509:115::-;7559:50;;;;6608:1;7559:50;;1323:2191:166;;;;;;6608:1:31;7559:50;6588:86;6633:30;;;6608:1;6633:30;6608:1;6633:30;1323:2191:166;;6608:1:31;6633:30;2658:162:29;-1:-1:-1;;;;;;;;;;;1323:2191:166;-1:-1:-1;;;;;1323:2191:166;966:10:34;2717:23:29;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:29;966:10:34;2763:40:29;1323:2191:166;;-1:-1:-1;2763:40:29;9163:206:31;;;;-1:-1:-1;;;;;1323:2191:166;9233:21:31;;9229:89;;1323:2191:166;9252:1:31;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;9252:1:31;1323:2191:166;;7513:19:31;;;7509:115;;1323:2191:166;;9252:1:31;1323:2191:166;;8262:25:31;1323:2191:166;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;8262:25:31;9163:206::o;7509:115::-;7559:50;;;;;9252:1;7559:50;;1323:2191:166;;;;;;9252:1:31;7559:50;10880:487;;-1:-1:-1;;;;;1323:2191:166;;;11045:19:31;;11041:89;;-1:-1:-1;;;;;1323:2191:166;;11143:21:31;;11139:90;;11319:31;11238:20;;1323:2191:166;11238:20:31;;:::i;:::-;1323:2191:166;-1:-1:-1;1323:2191:166;;;;;-1:-1:-1;1323:2191:166;;;;;;;11319:31:31;10880:487::o;7124:1170::-;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;-1:-1:-1;;;;;1323:2191:166;;;;8262:25:31;;1323:2191:166;;7822:16:31;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;-1:-1:-1;;;;;;;;;;;1323:2191:166;7818:429:31;1323:2191:166;;;;;8262:25:31;7124:1170::o;7818:429::-;1323:2191:166;;;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;;;;;;;;7818:429:31;;1323:2191:166;;;;;1653:9;;;;;1323:2191;1653:9;4016:191:40;4129:17;;:::i;:::-;4148:20;;:::i;:::-;1323:2191:166;;4107:92:40;;;;1323:2191:166;1959:95:40;1323:2191:166;;;1959:95:40;;1323:2191:166;1959:95:40;;;1323:2191:166;4170:13:40;1959:95;;;1323:2191:166;4193:4:40;1959:95;;;1323:2191:166;1959:95:40;4107:92;;;;;;:::i;:::-;1323:2191:166;4097:103:40;;4016:191;:::o;7082:141:30:-;1323:2191:166;-1:-1:-1;;;;;;;;;;;1323:2191:166;;;;7148:18:30;7144:73;;7082:141::o;7144:73::-;7189:17;;;-1:-1:-1;7189:17:30;;-1:-1:-1;7189:17:30;5203:1551:77;;;6283:66;6270:79;;6266:164;;1323:2191:166;;;;;;-1:-1:-1;1323:2191:166;;;;;;;;;;;;;;;;;;;6541:24:77;;;;;;;;;-1:-1:-1;6541:24:77;-1:-1:-1;;;;;1323:2191:166;;6579:20:77;6575:113;;6698:49;-1:-1:-1;6698:49:77;-1:-1:-1;5203:1551:77;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:77;6541:24;6615:62;-1:-1:-1;6615:62:77;:::o;6541:24::-;1323:2191:166;;;-1:-1:-1;1323:2191:166;;;;;6266:164:77;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;1323:2191:166;;;;;;7366:29:77;;;7411:7;;:::o;7362:444::-;1323:2191:166;7462:38:77;;1323:2191:166;;7523:23:77;;;7375:20;7523:23;1323:2191:166;7375:20:77;7523:23;7458:348;7576:35;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;1323:2191:166;;;7375:20:77;7634:46;7563:243;7710:30;7701:39;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;;;7375:20;7763:32;1323:2191:166;;;7375:20:77;7763:32;1323:2191:166;;;;7375:20:77;1323:2191:166;;;;;7375:20:77;1323:2191:166;6928:687:40;1323:2191:166;;:::i;:::-;;;;7100:22:40;;;;1323:2191:166;;7145:22:40;7138:29;:::o;7096:513::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;7473:15:40;;;;7508:17;:::o;7469:130::-;7564:20;7571:13;7564:20;:::o;7836:723::-;1323:2191:166;;:::i;:::-;;;;8017:25:40;;;;1323:2191:166;;8065:25:40;8058:32;:::o;8013:540::-;-1:-1:-1;;;;;;;;;;;;;1323:2191:166;8411:18:40;;;;8449:20;:::o;4437:582:66:-;;4609:8;;-1:-1:-1;1323:2191:166;;5690:21:66;:17;;5815:105;;;;;;5686:301;5957:19;;;5710:1;5957:19;;5710:1;5957:19;4605:408;1323:2191:166;;4857:22:66;:49;;;4605:408;4853:119;;4985:17;;:::o;4853:119::-;-1:-1:-1;;;4878:1:66;4933:24;;;-1:-1:-1;;;;;1323:2191:166;;;;4933:24:66;1323:2191:166;;;4933:24:66;4857:49;4883:18;;;:23;4857:49;","linkReferences":{},"immutableReferences":{"46093":[{"start":5612,"length":32},{"start":5819,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","proxiableUUID()":"52d1902d","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Wrapped Vara (WVARA) is represents VARA on Ethereum as ERC20 token. VARA is also used for paying fees, staking and governance on Vara Network, while WVARA does all of the same things but on Ethereum. On Ethereum network, WVARA is used as an executable balance for programs (Mirrors). Please note that this version of WrappedVara is only used in local development environments, in production we use this: - https://github.com/gear-tech/gear-bridges/blob/main/ethereum/src/erc20/WrappedVara.sol\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. Also see documentation about decimals: - https://wiki.vara.network/docs/vara-network/staking/validator-faqs#what-is-the-precision-of-the-vara-token\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"initialize(address)\":{\"details\":\"Initializes the WrappedVara contract with the token name and symbol.The initialOwner receives the 1 million WVARA tokens minted during initialization.\",\"params\":{\"initialOwner\":\"The address that will be able to mint tokens.\"}},\"mint(address,uint256)\":{\"details\":\"Mints `amount` tokens to `to`.\",\"params\":{\"amount\":\"The amount of tokens to mint.\",\"to\":\"The address to mint tokens to.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"reinitialize()\":{\"custom:oz-upgrades-validate-as-initializer\":\"\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"osaka\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/symbiotic-rewards/lib/core/\",\":core/=lib/symbiotic-rewards/lib/core/\",\":ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":script/=script/\",\":src/=src/\",\":symbiotic-core/=lib/symbiotic-core/\",\":symbiotic-rewards/=lib/symbiotic-rewards/\",\":test/=test/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x075302c23ba4b3a1d2a5000947ac44bbb4e84b011ecadad6f5e3fd92cd568659\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13806b62ea930e61dfba5fbbfd4eafe135bb0e2e4d55ce8cde1407d7b20a739\",\"dweb:/ipfs/QmYjt4fwBLdKrMbGHZPqdsiwsK4obFdXdKFhQBBW5ruEuC\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13\",\"dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086\",\"dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a\",\"dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x36d7dd303d4eaa38bbf5178a1292509b9e05161142a3b4f11bbc5488cbd0d5bd\",\"license\":\"GPL-3.0-or-later WITH Classpath-exception-2.0\",\"urls\":[\"bzz-raw://48fde6f500da4a712063763076f03c0613a7800d689055d088aa015f509b20cb\",\"dweb:/ipfs/QmdDvTX8ZRtAjZwZPgXJpNNfpbyXXQ2YSN6fdD9EccJBHn\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"pure","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. Also see documentation about decimals: - https://wiki.vara.network/docs/vara-network/staking/validator-faqs#what-is-the-precision-of-the-vara-token"},"eip712Domain()":{"details":"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature."},"initialize(address)":{"details":"Initializes the WrappedVara contract with the token name and symbol.The initialOwner receives the 1 million WVARA tokens minted during initialization.","params":{"initialOwner":"The address that will be able to mint tokens."}},"mint(address,uint256)":{"details":"Mints `amount` tokens to `to`.","params":{"amount":"The amount of tokens to mint.","to":"The address to mint tokens to."}},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"reinitialize()":{"custom:oz-upgrades-validate-as-initializer":""},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/symbiotic-rewards/lib/core/","core/=lib/symbiotic-rewards/lib/core/","ds-test/=lib/symbiotic-rewards/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","frost-secp256k1-evm/=lib/frost-secp256k1-evm/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","script/=script/","src/=src/","symbiotic-core/=lib/symbiotic-core/","symbiotic-rewards/=lib/symbiotic-rewards/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"osaka","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05","urls":["bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08","dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022","urls":["bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0","dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x075302c23ba4b3a1d2a5000947ac44bbb4e84b011ecadad6f5e3fd92cd568659","urls":["bzz-raw://c13806b62ea930e61dfba5fbbfd4eafe135bb0e2e4d55ce8cde1407d7b20a739","dweb:/ipfs/QmYjt4fwBLdKrMbGHZPqdsiwsK4obFdXdKFhQBBW5ruEuC"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x89374b2a634f0a9c08f5891b6ecce0179bc2e0577819c787ed3268ca428c2459","urls":["bzz-raw://f13d2572e5bdd55e483dfac069aac47603644071616a41fce699e94368e38c13","dweb:/ipfs/QmfKeyNT6vyb99vJQatPZ88UyZgXNmAiHUXSWnaR1TPE11"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5","urls":["bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c","dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee","urls":["bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae","dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b","urls":["bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422","dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e","urls":["bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23","dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618","urls":["bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a","dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b","urls":["bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d","dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f922173c98b186040931acb169b1221df823edaaf64d86d0b896b521abaaca6","urls":["bzz-raw://c89561e10c77472136adb154cfb04c1101c62cb371677571330da70576c25086","dweb:/ipfs/QmdpcuKmJVodzz16HX78gaj3LCB7E1RbcVGFDoK6sAjwpG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f","urls":["bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e","dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x2fa0657dd7b8bc75475a47f64bc04a9adb42236b15d65e6781594ea69a46c3e4","urls":["bzz-raw://7496f42681aed94bf0142a077324e50b86046610c1724e7c12e96cf1c365914a","dweb:/ipfs/QmZvhNdSAAbN4PKPdheAqwpXukUiXp3Q3TdQccDMg2NDTV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0","urls":["bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f","dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4","urls":["bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e","dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631","urls":["bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59","dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6","urls":["bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3","dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x36d7dd303d4eaa38bbf5178a1292509b9e05161142a3b4f11bbc5488cbd0d5bd","urls":["bzz-raw://48fde6f500da4a712063763076f03c0613a7800d689055d088aa015f509b20cb","dweb:/ipfs/QmdDvTX8ZRtAjZwZPgXJpNNfpbyXXQ2YSN6fdD9EccJBHn"],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":82529,"exportedSymbols":{"ERC20BurnableUpgradeable":[43269],"ERC20PermitUpgradeable":[43438],"ERC20Upgradeable":[43207],"Initializable":[42590],"OwnableUpgradeable":[42322],"UUPSUpgradeable":[46243],"WrappedVara":[82528]},"nodeType":"SourceUnit","src":"74:3441:166","nodes":[{"id":82387,"nodeType":"PragmaDirective","src":"74:24:166","nodes":[],"literals":["solidity","^","0.8",".33"]},{"id":82389,"nodeType":"ImportDirective","src":"100:101:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82529,"sourceUnit":42323,"symbolAliases":[{"foreign":{"id":82388,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42322,"src":"108:18:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82391,"nodeType":"ImportDirective","src":"202:96:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":82529,"sourceUnit":42591,"symbolAliases":[{"foreign":{"id":82390,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42590,"src":"210:13:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82393,"nodeType":"ImportDirective","src":"299:102:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":82529,"sourceUnit":43208,"symbolAliases":[{"foreign":{"id":82392,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43207,"src":"307:16:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82395,"nodeType":"ImportDirective","src":"402:135:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82529,"sourceUnit":43270,"symbolAliases":[{"foreign":{"id":82394,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43269,"src":"415:24:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82397,"nodeType":"ImportDirective","src":"538:131:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82529,"sourceUnit":43439,"symbolAliases":[{"foreign":{"id":82396,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43438,"src":"551:22:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82399,"nodeType":"ImportDirective","src":"670:88:166","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":82529,"sourceUnit":46244,"symbolAliases":[{"foreign":{"id":82398,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46243,"src":"678:15:166","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":82528,"nodeType":"ContractDefinition","src":"1323:2191:166","nodes":[{"id":82415,"nodeType":"VariableDeclaration","src":"1496:51:166","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"1520:10:166","scope":82528,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":82413,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:166","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":82414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1533:14:166","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":82418,"nodeType":"VariableDeclaration","src":"1553:46:166","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"1577:12:166","scope":82528,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":82416,"name":"string","nodeType":"ElementaryTypeName","src":"1553:6:166","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":82417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1592:7:166","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":82421,"nodeType":"VariableDeclaration","src":"1605:57:166","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"1630:20:166","scope":82528,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":82420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1653:9:166","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":82429,"nodeType":"FunctionDefinition","src":"1737:53:166","nodes":[],"body":{"id":82428,"nodeType":"Block","src":"1751:39:166","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82425,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42544,"src":"1761:20:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":82426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1761:22:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82427,"nodeType":"ExpressionStatement","src":"1761:22:166"}]},"documentation":{"id":82422,"nodeType":"StructuredDocumentation","src":"1669:63:166","text":" @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":82423,"nodeType":"ParameterList","parameters":[],"src":"1748:2:166"},"returnParameters":{"id":82424,"nodeType":"ParameterList","parameters":[],"src":"1751:0:166"},"scope":82528,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82464,"nodeType":"FunctionDefinition","src":"2061:297:166","nodes":[],"body":{"id":82463,"nodeType":"Block","src":"2122:236:166","nodes":[],"statements":[{"expression":{"arguments":[{"id":82438,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82415,"src":"2145:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":82439,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82418,"src":"2157:12:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82437,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42658,"src":"2132:12:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":82440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2132:38:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82441,"nodeType":"ExpressionStatement","src":"2132:38:166"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82442,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43228,"src":"2180:20:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":82443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2180:22:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82444,"nodeType":"ExpressionStatement","src":"2180:22:166"},{"expression":{"arguments":[{"id":82446,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82432,"src":"2227:12:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82445,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"2212:14:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":82447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2212:28:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82448,"nodeType":"ExpressionStatement","src":"2212:28:166"},{"expression":{"arguments":[{"id":82450,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82415,"src":"2269:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82449,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43325,"src":"2250:18:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":82451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2250:30:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82452,"nodeType":"ExpressionStatement","src":"2250:30:166"},{"expression":{"arguments":[{"id":82454,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82432,"src":"2297:12:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82455,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82421,"src":"2311:20:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":82459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":82456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2334:2:166","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":82457,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[82511],"referencedDeclaration":82511,"src":"2340:8:166","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":82458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2340:10:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2334:16:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2311:39:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82453,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43039,"src":"2291:5:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":82461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2291:60:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82462,"nodeType":"ExpressionStatement","src":"2291:60:166"}]},"documentation":{"id":82430,"nodeType":"StructuredDocumentation","src":"1796:260:166","text":" @dev Initializes the WrappedVara contract with the token name and symbol.\n @param initialOwner The address that will be able to mint tokens.\n @dev The initialOwner receives the 1 million WVARA tokens minted during initialization."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":82435,"kind":"modifierInvocation","modifierName":{"id":82434,"name":"initializer","nameLocations":["2110:11:166"],"nodeType":"IdentifierPath","referencedDeclaration":42430,"src":"2110:11:166"},"nodeType":"ModifierInvocation","src":"2110:11:166"}],"name":"initialize","nameLocation":"2070:10:166","parameters":{"id":82433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82432,"mutability":"mutable","name":"initialOwner","nameLocation":"2089:12:166","nodeType":"VariableDeclaration","scope":82464,"src":"2081:20:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82431,"name":"address","nodeType":"ElementaryTypeName","src":"2081:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2080:22:166"},"returnParameters":{"id":82436,"nodeType":"ParameterList","parameters":[],"src":"2122:0:166"},"scope":82528,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82491,"nodeType":"FunctionDefinition","src":"2431:218:166","nodes":[],"body":{"id":82490,"nodeType":"Block","src":"2489:160:166","nodes":[],"statements":[{"expression":{"arguments":[{"id":82474,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82415,"src":"2512:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":82475,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82418,"src":"2524:12:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82473,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42658,"src":"2499:12:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":82476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2499:38:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82477,"nodeType":"ExpressionStatement","src":"2499:38:166"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":82478,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43228,"src":"2547:20:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":82479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2547:22:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82480,"nodeType":"ExpressionStatement","src":"2547:22:166"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":82482,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42233,"src":"2594:5:166","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":82483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2594:7:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":82481,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42182,"src":"2579:14:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":82484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2579:23:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82485,"nodeType":"ExpressionStatement","src":"2579:23:166"},{"expression":{"arguments":[{"id":82487,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82415,"src":"2631:10:166","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":82486,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43325,"src":"2612:18:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":82488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2612:30:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82489,"nodeType":"ExpressionStatement","src":"2612:30:166"}]},"documentation":{"id":82465,"nodeType":"StructuredDocumentation","src":"2364:62:166","text":" @custom:oz-upgrades-validate-as-initializer"},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":82468,"kind":"modifierInvocation","modifierName":{"id":82467,"name":"onlyOwner","nameLocations":["2462:9:166"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2462:9:166"},"nodeType":"ModifierInvocation","src":"2462:9:166"},{"arguments":[{"hexValue":"32","id":82470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2486:1:166","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":82471,"kind":"modifierInvocation","modifierName":{"id":82469,"name":"reinitializer","nameLocations":["2472:13:166"],"nodeType":"IdentifierPath","referencedDeclaration":42477,"src":"2472:13:166"},"nodeType":"ModifierInvocation","src":"2472:16:166"}],"name":"reinitialize","nameLocation":"2440:12:166","parameters":{"id":82466,"nodeType":"ParameterList","parameters":[],"src":"2452:2:166"},"returnParameters":{"id":82472,"nodeType":"ParameterList","parameters":[],"src":"2489:0:166"},"scope":82528,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":82501,"nodeType":"FunctionDefinition","src":"2814:84:166","nodes":[],"body":{"id":82500,"nodeType":"Block","src":"2896:2:166","nodes":[],"statements":[]},"baseFunctions":[46197],"documentation":{"id":82492,"nodeType":"StructuredDocumentation","src":"2655:154:166","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n Called by {upgradeToAndCall}."},"implemented":true,"kind":"function","modifiers":[{"id":82498,"kind":"modifierInvocation","modifierName":{"id":82497,"name":"onlyOwner","nameLocations":["2886:9:166"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"2886:9:166"},"nodeType":"ModifierInvocation","src":"2886:9:166"}],"name":"_authorizeUpgrade","nameLocation":"2823:17:166","overrides":{"id":82496,"nodeType":"OverrideSpecifier","overrides":[],"src":"2877:8:166"},"parameters":{"id":82495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82494,"mutability":"mutable","name":"newImplementation","nameLocation":"2849:17:166","nodeType":"VariableDeclaration","scope":82501,"src":"2841:25:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82493,"name":"address","nodeType":"ElementaryTypeName","src":"2841:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2840:27:166"},"returnParameters":{"id":82499,"nodeType":"ParameterList","parameters":[],"src":"2896:0:166"},"scope":82528,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":82511,"nodeType":"FunctionDefinition","src":"3172:83:166","nodes":[],"body":{"id":82510,"nodeType":"Block","src":"3229:26:166","nodes":[],"statements":[{"expression":{"hexValue":"3132","id":82508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3246:2:166","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"functionReturnParameters":82507,"id":82509,"nodeType":"Return","src":"3239:9:166"}]},"baseFunctions":[42727],"documentation":{"id":82502,"nodeType":"StructuredDocumentation","src":"2904:263:166","text":" @dev Returns the number of decimals used to get its user representation.\n Also see documentation about decimals:\n - https://wiki.vara.network/docs/vara-network/staking/validator-faqs#what-is-the-precision-of-the-vara-token"},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3181:8:166","overrides":{"id":82504,"nodeType":"OverrideSpecifier","overrides":[],"src":"3204:8:166"},"parameters":{"id":82503,"nodeType":"ParameterList","parameters":[],"src":"3189:2:166"},"returnParameters":{"id":82507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":82511,"src":"3222:5:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":82505,"name":"uint8","nodeType":"ElementaryTypeName","src":"3222:5:166","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3221:7:166"},"scope":82528,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":82527,"nodeType":"FunctionDefinition","src":"3419:93:166","nodes":[],"body":{"id":82526,"nodeType":"Block","src":"3478:34:166","nodes":[],"statements":[{"expression":{"arguments":[{"id":82522,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82514,"src":"3494:2:166","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":82523,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":82516,"src":"3498:6:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":82521,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43039,"src":"3488:5:166","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":82524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3488:17:166","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":82525,"nodeType":"ExpressionStatement","src":"3488:17:166"}]},"documentation":{"id":82512,"nodeType":"StructuredDocumentation","src":"3261:153:166","text":" @dev Mints `amount` tokens to `to`.\n @param to The address to mint tokens to.\n @param amount The amount of tokens to mint."},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":82519,"kind":"modifierInvocation","modifierName":{"id":82518,"name":"onlyOwner","nameLocations":["3468:9:166"],"nodeType":"IdentifierPath","referencedDeclaration":42217,"src":"3468:9:166"},"nodeType":"ModifierInvocation","src":"3468:9:166"}],"name":"mint","nameLocation":"3428:4:166","parameters":{"id":82517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82514,"mutability":"mutable","name":"to","nameLocation":"3441:2:166","nodeType":"VariableDeclaration","scope":82527,"src":"3433:10:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82513,"name":"address","nodeType":"ElementaryTypeName","src":"3433:7:166","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82516,"mutability":"mutable","name":"amount","nameLocation":"3453:6:166","nodeType":"VariableDeclaration","scope":82527,"src":"3445:14:166","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82515,"name":"uint256","nodeType":"ElementaryTypeName","src":"3445:7:166","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3432:28:166"},"returnParameters":{"id":82520,"nodeType":"ParameterList","parameters":[],"src":"3478:0:166"},"scope":82528,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":82401,"name":"Initializable","nameLocations":["1351:13:166"],"nodeType":"IdentifierPath","referencedDeclaration":42590,"src":"1351:13:166"},"id":82402,"nodeType":"InheritanceSpecifier","src":"1351:13:166"},{"baseName":{"id":82403,"name":"ERC20Upgradeable","nameLocations":["1370:16:166"],"nodeType":"IdentifierPath","referencedDeclaration":43207,"src":"1370:16:166"},"id":82404,"nodeType":"InheritanceSpecifier","src":"1370:16:166"},{"baseName":{"id":82405,"name":"ERC20BurnableUpgradeable","nameLocations":["1392:24:166"],"nodeType":"IdentifierPath","referencedDeclaration":43269,"src":"1392:24:166"},"id":82406,"nodeType":"InheritanceSpecifier","src":"1392:24:166"},{"baseName":{"id":82407,"name":"OwnableUpgradeable","nameLocations":["1422:18:166"],"nodeType":"IdentifierPath","referencedDeclaration":42322,"src":"1422:18:166"},"id":82408,"nodeType":"InheritanceSpecifier","src":"1422:18:166"},{"baseName":{"id":82409,"name":"ERC20PermitUpgradeable","nameLocations":["1446:22:166"],"nodeType":"IdentifierPath","referencedDeclaration":43438,"src":"1446:22:166"},"id":82410,"nodeType":"InheritanceSpecifier","src":"1446:22:166"},{"baseName":{"id":82411,"name":"UUPSUpgradeable","nameLocations":["1474:15:166"],"nodeType":"IdentifierPath","referencedDeclaration":46243,"src":"1474:15:166"},"id":82412,"nodeType":"InheritanceSpecifier","src":"1474:15:166"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","documentation":{"id":82400,"nodeType":"StructuredDocumentation","src":"760:562:166","text":" @dev Wrapped Vara (WVARA) is represents VARA on Ethereum as ERC20 token.\n VARA is also used for paying fees, staking and governance on Vara Network,\n while WVARA does all of the same things but on Ethereum.\n On Ethereum network, WVARA is used as an executable balance for programs (Mirrors).\n Please note that this version of WrappedVara is only used in local development environments,\n in production we use this:\n - https://github.com/gear-tech/gear-bridges/blob/main/ethereum/src/erc20/WrappedVara.sol"},"fullyImplemented":true,"linearizedBaseContracts":[82528,46243,44833,43438,43698,44416,44823,46898,42322,43269,43207,44875,46862,46836,43484,42590],"name":"WrappedVara","nameLocation":"1332:11:166","scope":82529,"usedErrors":[42158,42163,42339,42342,43304,43311,43601,44845,44850,44855,44864,44869,44874,45427,45440,46100,46105,47372,48774,50701,50706,50711],"usedEvents":[42169,42347,44781,44803,46770,46779]}],"license":"GPL-3.0-or-later WITH Classpath-exception-2.0"},"id":166} \ No newline at end of file diff --git a/ethexe/ethereum/src/abi/mod.rs b/ethexe/ethereum/src/abi/mod.rs index 879c4639f2c..fa5aa09e025 100644 --- a/ethexe/ethereum/src/abi/mod.rs +++ b/ethexe/ethereum/src/abi/mod.rs @@ -23,7 +23,9 @@ use alloy::sol; pub use gear_abi::Gear as GearLib; pub use middleware_abi::IMiddleware; pub use mirror_abi::IMirror; +pub use mirror_abi_with_instrumentation::IMirrorWithInstrumentation; pub use router_abi::{Gear, IRouter}; +pub use router_with_instrumentation_abi::IRouterWithInstrumentation; pub mod gear_abi { alloy::sol!( @@ -34,6 +36,14 @@ pub mod gear_abi { ); } +mod mirror_abi_with_instrumentation { + alloy::sol!( + #[sol(rpc)] + IMirrorWithInstrumentation, + "abi/MirrorWithInstrumentation.json" + ); +} + pub mod middleware_abi { alloy::sol!( #[sol(rpc)] @@ -62,6 +72,15 @@ mod router_abi { ); } +mod router_with_instrumentation_abi { + alloy::sol!( + #[allow(clippy::too_many_arguments)] + #[sol(rpc)] + IRouterWithInstrumentation, + "abi/RouterWithInstrumentation.json" + ); +} + sol!( #[sol(rpc)] IERC1967Proxy, diff --git a/ethexe/ethereum/src/benchmarking/context.rs b/ethexe/ethereum/src/benchmarking/context.rs new file mode 100644 index 00000000000..d240545ee00 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/context.rs @@ -0,0 +1,594 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::{ + Sender, + abi::{Gear, utils}, + benchmarking::{ + contracts::{ContractImplKind, ExecutionMode, Router, WrappedVara}, + extensions::CalldataGasExt, + inspector::SimulationInspector, + mnemonic, + }, +}; +use alloy::sol_types::SolValue; +use anyhow::Result; +use ethexe_common::{ + Announce, HashOf, + gear::{ChainCommitment, CodeCommitment, Message, StateTransition, ValueClaim}, +}; +use gprimitives::{ActorId, CodeId, H256}; +use gsigner::secp256k1::{PublicKey, Signer}; +use revm::{ + DatabaseRef, ExecuteCommitEvm, MainBuilder, MainContext, MainnetEvm, + context::{BlockEnv, CfgEnv, Context, ContextTr, JournalTr, TxEnv}, + database::CacheDB, + database_interface::EmptyDB, + primitives::{Address, Bytes, U256}, +}; + +pub struct SimulationContext { + evm: MainnetEvm>, SimulationInspector>, + block_number: U256, + block_timestamp: U256, + deployer_address: Address, + deployer_sender: Sender, + deployer_nonce: u64, + validators_with_keys: Vec<(Signer, PublicKey, Address)>, +} + +impl SimulationContext { + const VALIDATOR_COUNT: u32 = 4; + const MIRROR_DEPLOYMENT_NONCE_OFFSET: u64 = 2; + + const PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER: u32 = 3; + const PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER: u32 = 4; + + pub fn new() -> Result { + let block_number = U256::ZERO; + let block_timestamp = U256::ZERO; + + let mut evm = Context::mainnet() + .with_db(CacheDB::::default()) + .with_block(BlockEnv { + number: block_number, + timestamp: block_timestamp, + ..Default::default() + }) + .build_mainnet_with_inspector(SimulationInspector::default()); + + let (deployer_signer, _, deployer_address) = mnemonic::derive_signer(0)?; + let deployer_sender = Sender::new(deployer_signer, deployer_address.into())?; + let deployer_nonce = 0; + + let journal = evm.journal_mut(); + journal.balance_incr(deployer_address, u64::MAX.try_into().expect("infallible"))?; + let state = journal.finalize(); + evm.commit(state); + + let validators_with_keys = (1..=Self::VALIDATOR_COUNT) + .map(mnemonic::derive_signer) + .collect::>>()?; + + Ok(Self { + evm, + block_number, + block_timestamp, + deployer_address, + deployer_sender, + deployer_nonce, + validators_with_keys, + }) + } + + pub fn initialize(&mut self) -> Result> { + let wrapped_vara = WrappedVara::deploy(self)?; + + let precomputed_mirror_impl = self.deployer_address.create( + self.deployer_nonce + .checked_add(Self::MIRROR_DEPLOYMENT_NONCE_OFFSET) + .expect("infallible"), + ); + + let mut router = Router::deploy(self, precomputed_mirror_impl, wrapped_vara)?; + + router.lookup_genesis_hash()?; + + for _ in 0..10 { + router.commit_batch_simple(None, vec![], ExecutionMode::ExecuteAndCommit)?; + } + + let validated_code_id = router.request_code_validation(b"code1")?; + router.commit_batch_simple( + None, + vec![CodeCommitment { + id: validated_code_id, + valid: true, + }], + ExecutionMode::ExecuteAndCommit, + )?; + + let validation_requested_code_id = router.request_code_validation(b"code2")?; + + let uninitialized_actor_id = + router.create_program(validated_code_id, H256([0x01; 32]), None)?; + + let journal = router.context().evm().journal_mut(); + journal.balance_incr( + uninitialized_actor_id.to_address_lossy().0.into(), + u64::MAX.try_into().expect("infallible"), + )?; + let state = journal.finalize(); + router.context().evm().commit(state); + + let initialized_actor_id = + router.create_program(validated_code_id, H256([0x02; 32]), None)?; + + let journal = router.context().evm().journal_mut(); + journal.balance_incr( + initialized_actor_id.to_address_lossy().0.into(), + u64::MAX.try_into().expect("infallible"), + )?; + let state = journal.finalize(); + router.context().evm().commit(state); + + let state_transition = Self::state_transition(initialized_actor_id); + let head_announce = Self::head_announce(); + + router.commit_batch_simple( + Some(ChainCommitment { + transitions: vec![state_transition.clone()], + head_announce, + }), + vec![], + ExecutionMode::ExecuteAndCommit, + )?; + + Ok(InitializedSimulationContext { + router, + validated_code_id, + validation_requested_code_id, + uninitialized_actor_id, + initialized_actor_id, + }) + } + + pub fn evm( + &mut self, + ) -> &mut MainnetEvm>, SimulationInspector> + { + &mut self.evm + } + + pub fn block_number(&self) -> U256 { + self.block_number + } + + fn block_timestamp(&self) -> U256 { + self.block_timestamp + } + + pub fn block_timestamp_u64(&self) -> u64 { + self.block_timestamp().try_into().expect("infallible") + } + + pub fn block_hash(&self, number: U256) -> Result { + Ok(self + .evm + .ctx + .db_ref() + .block_hash_ref(number.try_into().expect("infallible"))? + .0 + .into()) + } + + pub fn parent_block_hash(&self) -> Result { + self.block_hash( + self.block_number + .checked_sub(U256::ONE) + .expect("infallible"), + ) + } + + pub fn parent_block_timestamp_u64(&self) -> u64 { + self.block_timestamp_u64() + .checked_sub(1) + .expect("infallible") + } + + pub fn next_block(&mut self) { + self.evm.modify_block(|block_env| { + let one = U256::ONE; + + self.block_number += one; + block_env.number += one; + + self.block_timestamp += one; + block_env.timestamp += one; + }); + } + + pub fn prev_block(&mut self) { + self.evm.modify_block(|block_env| { + let one = U256::ONE; + + if self.block_number > U256::ZERO { + self.block_number -= one; + block_env.number -= one; + } + + if self.block_timestamp > U256::ZERO { + self.block_timestamp -= one; + block_env.timestamp -= one; + } + }); + } + + pub fn deployer_address(&self) -> Address { + self.deployer_address + } + + pub fn deployer_sender(&self) -> &Sender { + &self.deployer_sender + } + + pub fn deployer_nonce(&self) -> u64 { + self.deployer_nonce + } + + pub fn increment_deployer_nonce(&mut self) { + self.deployer_nonce += 1; + } + + pub fn validators_with_keys(&self) -> &[(Signer, PublicKey, Address)] { + &self.validators_with_keys + } + + pub fn validators(&self) -> Vec
{ + self.validators_with_keys + .iter() + .map(|(_, _, address)| *address) + .collect() + } + + pub fn min_signers(&self) -> u16 { + self.max_signers() + .checked_mul(2) + .expect("multiplication failed") + .div_ceil(3) + } + + fn max_signers(&self) -> u16 { + self.validators_with_keys + .len() + .try_into() + .expect("conversion failed") + } + + fn state_transition(actor_id: ActorId) -> StateTransition { + StateTransition { + actor_id, + new_state_hash: H256::random(), + exited: false, + inheritor: ActorId::zero(), + value_to_receive: 0, + value_to_receive_negative_sign: false, + value_claims: vec![], + messages: vec![], + } + } + + fn head_announce() -> HashOf { + unsafe { HashOf::new(H256([0x01; 32])) } + } +} + +pub struct InitializedSimulationContext<'a> { + router: Router<'a>, + validated_code_id: CodeId, + validation_requested_code_id: CodeId, + uninitialized_actor_id: ActorId, + initialized_actor_id: ActorId, +} + +impl<'a> InitializedSimulationContext<'a> { + pub fn uninitialized_actor_id(&self) -> ActorId { + self.uninitialized_actor_id + } + + pub fn initialized_actor_id(&self) -> ActorId { + self.initialized_actor_id + } + + pub fn switch_to_impl(&mut self, contract_impl_kind: ContractImplKind) -> Result<()> { + self.router.switch_to_impl(contract_impl_kind) + } + + pub fn empty_batch_gas(&mut self) -> Result { + let empty_batch_gas = self + .router + .estimate_commit_batch_gas(None, vec![], ExecutionMode::Execute)? + .total_tx_gas(); + Ok(empty_batch_gas) + } + + pub fn code_commitment_gas(&mut self) -> Result { + const COMMIT_BATCH_BEFORE_COMMIT_CODES: u32 = 1; + const COMMIT_BATCH_AFTER_COMMIT_CODES: u32 = 2; + + let code_commitment = CodeCommitment { + id: self.validation_requested_code_id, + valid: true, + }; + let alloy_code_commitment: Gear::CodeCommitment = code_commitment.clone().into(); + let calldata: Bytes = alloy_code_commitment.abi_encode().into(); + let calldata_gas = calldata.calldata_gas().total_gas(); + + let code_commitment_gas = self.router.estimate_commit_batch_gas_between_topics( + None, + vec![code_commitment], + self.router.proxy_address(), + COMMIT_BATCH_BEFORE_COMMIT_CODES, + COMMIT_BATCH_AFTER_COMMIT_CODES, + )?; + Ok(code_commitment_gas + .execution_gas + .checked_add(calldata_gas) + .expect("infallible")) + } + + fn state_transition(actor_id: ActorId) -> StateTransition { + StateTransition { + actor_id, + new_state_hash: H256::random(), + exited: false, + inheritor: ActorId::zero(), + value_to_receive: 0, + value_to_receive_negative_sign: false, + value_claims: vec![], + messages: vec![], + } + } + + fn head_announce() -> HashOf { + unsafe { HashOf::new(H256([0x01; 32])) } + } + + pub fn state_transition_actor_id_gas(&mut self, actor_id: ActorId) -> u64 { + let alloy_actor_id: Address = actor_id.into(); + let calldata: Bytes = alloy_actor_id.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_new_state_hash_gas(&mut self, new_state_hash: H256) -> u64 { + let alloy_new_state_hash = utils::h256_to_bytes32(new_state_hash); + let calldata: Bytes = alloy_new_state_hash.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_exited_gas(&mut self, exited: bool) -> u64 { + let calldata: Bytes = exited.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_inheritor_gas(&mut self, inheritor: ActorId) -> u64 { + let alloy_inheritor: Address = inheritor.into(); + let calldata: Bytes = alloy_inheritor.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_value_to_receive_gas(&mut self, value_to_receive: u128) -> u64 { + let calldata: Bytes = value_to_receive.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_value_to_receive_negative_sign_gas( + &mut self, + value_to_receive_negative_sign: bool, + ) -> u64 { + let calldata: Bytes = value_to_receive_negative_sign.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_value_claims_gas(&mut self, value_claims: Vec) -> u64 { + let alloy_value_claims: Vec = + value_claims.into_iter().map(Into::into).collect(); + let calldata: Bytes = alloy_value_claims.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn state_transition_messages_gas(&mut self, messages: Vec) -> u64 { + let alloy_messages: Vec = messages.into_iter().map(Into::into).collect(); + let calldata: Bytes = alloy_messages.abi_encode().into(); + calldata.calldata_gas().total_gas() + } + + pub fn verify_actor_id_gas(&mut self) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID: u32 = 1; + const PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID: u32 = 2; + + let verify_actor_id_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![Self::state_transition(self.initialized_actor_id)], + head_announce: Self::head_announce(), + }), + vec![], + self.initialized_actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_VERIFY_ACTOR_ID, + PERFORM_STATE_TRANSITION_AFTER_VERIFY_ACTOR_ID, + )?; + Ok(verify_actor_id_gas.execution_gas) + } + + pub fn retrieve_ether_gas( + &mut self, + value_to_receive: u128, + value_to_receive_negative_sign: bool, + ) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER: u32 = 3; + const PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER: u32 = 4; + + let retrieve_ether_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![StateTransition { + value_to_receive, + value_to_receive_negative_sign, + ..Self::state_transition(self.initialized_actor_id) + }], + head_announce: Self::head_announce(), + }), + vec![], + self.initialized_actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_RETRIEVE_ETHER, + PERFORM_STATE_TRANSITION_AFTER_RETRIEVE_ETHER, + )?; + Ok(retrieve_ether_gas.execution_gas) + } + + pub fn send_message_gas(&mut self, message: Message) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES: u32 = 5; + const PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES: u32 = 6; + + let alloy_message: Gear::Message = message.clone().into(); + let calldata: Bytes = alloy_message.abi_encode().into(); + let calldata_gas = calldata.calldata_gas().total_gas(); + + let send_message_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![StateTransition { + messages: vec![message.clone()], + ..Self::state_transition(self.initialized_actor_id) + }], + head_announce: Self::head_announce(), + }), + vec![], + self.initialized_actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_SEND_MESSAGES, + PERFORM_STATE_TRANSITION_AFTER_SEND_MESSAGES, + )?; + + if message.call { + const CALL_GAS: u64 = 500_000; + + Ok(send_message_gas + .execution_gas + .checked_add(calldata_gas) + .expect("infallible") + .checked_add(CALL_GAS) + .expect("infallible")) + } else { + Ok(send_message_gas + .execution_gas + .checked_add(calldata_gas) + .expect("infallible")) + } + } + + pub fn value_claim_gas(&mut self, value_claim: ValueClaim) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES: u32 = 7; + const PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES: u32 = 8; + + let alloy_value_claim: Gear::ValueClaim = value_claim.clone().into(); + let calldata: Bytes = alloy_value_claim.abi_encode().into(); + let calldata_gas = calldata.calldata_gas().total_gas(); + + let value_claim_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![StateTransition { + value_claims: vec![value_claim.clone()], + ..Self::state_transition(self.initialized_actor_id) + }], + head_announce: Self::head_announce(), + }), + vec![], + self.initialized_actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_CLAIM_VALUES, + PERFORM_STATE_TRANSITION_AFTER_CLAIM_VALUES, + )?; + + Ok(value_claim_gas + .execution_gas + .checked_add(calldata_gas) + .expect("infallible")) + } + + pub fn set_inheritor_gas(&mut self, inheritor: Option) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR: u32 = 9; + const PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR: u32 = 10; + + let set_inheritor_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![StateTransition { + exited: inheritor.is_some(), + inheritor: inheritor.unwrap_or_default(), + ..Self::state_transition(self.initialized_actor_id) + }], + head_announce: Self::head_announce(), + }), + vec![], + self.initialized_actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_SET_INHERITOR, + PERFORM_STATE_TRANSITION_AFTER_SET_INHERITOR, + )?; + + Ok(set_inheritor_gas.execution_gas) + } + + pub fn update_state_hash_gas( + &mut self, + actor_id: ActorId, + new_state_hash: H256, + ) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH: u32 = 11; + const PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH: u32 = 12; + + let update_state_hash_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![StateTransition { + new_state_hash, + ..Self::state_transition(actor_id) + }], + head_announce: Self::head_announce(), + }), + vec![], + actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_UPDATE_STATE_HASH, + PERFORM_STATE_TRANSITION_AFTER_UPDATE_STATE_HASH, + )?; + + Ok(update_state_hash_gas.execution_gas) + } + + pub fn state_transition_hash_gas(&mut self) -> Result { + const PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH: u32 = 13; + const PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH: u32 = 14; + + let state_transition_hash_gas = self.router.estimate_commit_batch_gas_between_topics( + Some(ChainCommitment { + transitions: vec![Self::state_transition(self.initialized_actor_id)], + head_announce: Self::head_announce(), + }), + vec![], + self.initialized_actor_id.into(), + PERFORM_STATE_TRANSITION_BEFORE_RETURN_HASH, + PERFORM_STATE_TRANSITION_AFTER_RETURN_HASH, + )?; + + Ok(state_transition_hash_gas.execution_gas) + } +} diff --git a/ethexe/ethereum/src/benchmarking/contracts/mirror_impl.rs b/ethexe/ethereum/src/benchmarking/contracts/mirror_impl.rs new file mode 100644 index 00000000000..2598cd5f745 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/contracts/mirror_impl.rs @@ -0,0 +1,122 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::{ + abi::{IMirror, IMirrorWithInstrumentation}, + benchmarking::{SimulationContext, contracts::ExecutionMode}, +}; +use alloy::sol_types::SolConstructor; +use anyhow::{Result, anyhow, bail}; +use revm::{ + ExecuteCommitEvm, ExecuteEvm, InspectEvm, + context::TxEnv, + context_interface::result::{ExecutionResult, Output}, + primitives::{Address, Bytes}, +}; + +pub struct MirrorImpl { + address: Address, + mirror_impl_bytecode: Bytes, + mirror_impl_with_instrumentation_bytecode: Bytes, +} + +impl MirrorImpl { + pub fn deploy(context: &mut SimulationContext, router_proxy: Address) -> Result { + let (_, mirror_impl_bytecode) = Self::deploy_with_execution_mode( + context, + router_proxy, + &IMirror::BYTECODE[..], + ExecutionMode::Execute, + )?; + let (_, mirror_impl_with_instrumentation_bytecode) = Self::deploy_with_execution_mode( + context, + router_proxy, + &IMirrorWithInstrumentation::BYTECODE[..], + ExecutionMode::Execute, + )?; + + let (mirror_impl, _) = Self::deploy_with_execution_mode( + context, + router_proxy, + &IMirror::BYTECODE[..], + ExecutionMode::ExecuteAndCommit, + )?; + + Ok(Self { + address: mirror_impl, + mirror_impl_bytecode, + mirror_impl_with_instrumentation_bytecode, + }) + } + + fn deploy_with_execution_mode( + context: &mut SimulationContext, + router_proxy: Address, + bytecode: &[u8], + execution_mode: ExecutionMode, + ) -> Result<(Address, Bytes)> { + let tx = TxEnv::builder() + .caller(context.deployer_address()) + .create() + .data( + [ + bytecode, + &SolConstructor::abi_encode(&IMirror::constructorCall { + _router: router_proxy, + })[..], + ] + .concat() + .into(), + ) + .nonce(context.deployer_nonce()) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?; + + let execution_result = match execution_mode { + ExecutionMode::Execute => context.evm().transact(tx)?.result, + ExecutionMode::ExecuteAndCommit => context.evm().transact_commit(tx)?, + ExecutionMode::ExecuteAndInspect => context.evm().inspect_tx(tx)?.result, + }; + + let ExecutionResult::Success { + output: Output::Create(mirror_impl_bytecode, Some(mirror_impl)), + .. + } = execution_result + else { + bail!("failed to deploy Mirror contract"); + }; + + if let ExecutionMode::ExecuteAndCommit = execution_mode { + context.increment_deployer_nonce(); + } + + Ok((mirror_impl, mirror_impl_bytecode)) + } + + pub fn address(&self) -> Address { + self.address + } + + pub fn mirror_impl_bytecode(&self) -> &Bytes { + &self.mirror_impl_bytecode + } + + pub fn mirror_impl_with_instrumentation_bytecode(&self) -> &Bytes { + &self.mirror_impl_with_instrumentation_bytecode + } +} diff --git a/ethexe/ethereum/src/benchmarking/contracts/mod.rs b/ethexe/ethereum/src/benchmarking/contracts/mod.rs new file mode 100644 index 00000000000..341cf5d6ea8 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/contracts/mod.rs @@ -0,0 +1,27 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +pub use mirror_impl::MirrorImpl; +pub use router::{ContractImplKind, ExecutionMode, Router}; +pub use router_impl::RouterImpl; +pub use wvara::WrappedVara; + +mod mirror_impl; +mod router; +mod router_impl; +mod wvara; diff --git a/ethexe/ethereum/src/benchmarking/contracts/router.rs b/ethexe/ethereum/src/benchmarking/contracts/router.rs new file mode 100644 index 00000000000..a6c3c69e0b1 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/contracts/router.rs @@ -0,0 +1,586 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::{ + Permit, + abi::{Gear, IERC1967Proxy, IRouter}, + benchmarking::{ + SimulationContext, + contracts::{MirrorImpl, RouterImpl, WrappedVara}, + extensions::CalldataGasExt, + }, +}; +use alloy::{ + signers::SignerSync, + sol_types::{SolCall, SolConstructor, SolStruct}, +}; +use anyhow::{Result, anyhow, bail}; +use ethexe_common::{ + Digest, ToDigest, + gear::{BatchCommitment, ChainCommitment, CodeCommitment, SignatureType}, +}; +use gear_core::ids::prelude::CodeIdExt as _; +use gprimitives::{ActorId, CodeId, H256}; +use gsigner::secp256k1::Secp256k1SignerExt; +use revm::{ + ExecuteCommitEvm, ExecuteEvm, InspectEvm, + bytecode::Bytecode, + context::{ContextTr, JournalTr, TxEnv}, + context_interface::result::{ExecutionResult, Output}, + primitives::{Address, B256, Bytes, U256, eip4844::VERSIONED_HASH_VERSION_KZG}, +}; + +#[derive(Debug, Clone, Copy)] +pub enum ContractImplKind { + Regular, + WithInstrumentation, +} + +#[derive(Debug)] +pub struct GasResult { + pub execution_gas: u64, + pub calldata_gas: u64, +} + +impl GasResult { + pub fn total_gas(&self) -> u64 { + self.execution_gas + .checked_add(self.calldata_gas) + .expect("infallible") + } + + pub fn total_tx_gas(&self) -> u64 { + const BASE_FEE: u64 = 21_000; + self.total_gas().checked_add(BASE_FEE).expect("infallible") + } +} + +#[derive(Debug)] +pub enum ExecutionMode { + Execute, + ExecuteAndCommit, + ExecuteAndInspect, +} + +pub struct Router<'a> { + context: &'a mut SimulationContext, + router_impl: RouterImpl, + proxy_address: Address, + mirror_impl: MirrorImpl, + wrapped_vara: WrappedVara, +} + +impl<'a> Router<'a> { + pub fn deploy( + context: &'a mut SimulationContext, + precomputed_mirror_impl: Address, + wrapped_vara: WrappedVara, + ) -> Result { + let router_impl = RouterImpl::deploy(context)?; + + context.next_block(); + + let middleware_address = Address::ZERO; + let aggregated_public_key = Gear::AggregatedPublicKey { + x: "0x1b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f".parse()?, + y: "0x70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1".parse()?, + }; + + let router_proxy = Self::deploy_proxy( + context, + router_impl.address(), + precomputed_mirror_impl, + &wrapped_vara, + middleware_address, + aggregated_public_key, + context.validators(), + )?; + + let journal = context.evm().journal_mut(); + journal.balance_incr(router_proxy, u64::MAX.try_into().expect("infallible"))?; + let state = journal.finalize(); + context.evm().commit(state); + + let mirror_impl = MirrorImpl::deploy(context, router_proxy)?; + assert_eq!(mirror_impl.address(), precomputed_mirror_impl); + + Ok(Self { + context, + router_impl, + proxy_address: router_proxy, + mirror_impl, + wrapped_vara, + }) + } + + fn deploy_proxy( + context: &mut SimulationContext, + router_impl: Address, + mirror_impl: Address, + wrapped_vara: &WrappedVara, + middleware_address: Address, + aggregated_public_key: Gear::AggregatedPublicKey, + validators: Vec
, + ) -> Result
{ + let deployer_address = context.deployer_address(); + let deployer_nonce = context.deployer_nonce(); + + let ExecutionResult::Success { + output: Output::Create(_, Some(router_proxy)), + .. + } = context.evm().transact_commit( + TxEnv::builder() + .caller(deployer_address) + .create() + .data( + [ + &IERC1967Proxy::BYTECODE[..], + &SolConstructor::abi_encode(&IERC1967Proxy::constructorCall { + implementation: router_impl, + _data: Bytes::copy_from_slice( + &IRouter::initializeCall { + _owner: deployer_address, + _mirror: mirror_impl, + _wrappedVara: wrapped_vara.proxy_address(), + _middleware: middleware_address, + _eraDuration: U256::from(24 * 60 * 60), + _electionDuration: U256::from(2 * 60 * 60), + _validationDelay: U256::from(5 * 60), + _aggregatedPublicKey: aggregated_public_key, + _verifiableSecretSharingCommitment: Bytes::new(), + _validators: validators, + } + .abi_encode(), + ), + })[..], + ] + .concat() + .into(), + ) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + else { + bail!("failed to deploy TransparentUpgradeableProxy contract (Router proxy)"); + }; + + context.increment_deployer_nonce(); + + Ok(router_proxy) + } + + pub fn context(&mut self) -> &mut SimulationContext { + self.context + } + + pub fn router_impl(&self) -> &RouterImpl { + &self.router_impl + } + + pub fn proxy_address(&self) -> Address { + self.proxy_address + } + + fn mirror_impl(&self) -> &MirrorImpl { + &self.mirror_impl + } + + fn switch_to_mirror_impl(&mut self, kind: ContractImplKind) -> Result<()> { + let mirror_impl = self.mirror_impl(); + let address = mirror_impl.address(); + let code = Bytecode::new_legacy( + match kind { + ContractImplKind::Regular => mirror_impl.mirror_impl_bytecode(), + ContractImplKind::WithInstrumentation => { + mirror_impl.mirror_impl_with_instrumentation_bytecode() + } + } + .clone(), + ); + + let journal = self.context.evm().journal_mut(); + journal.load_account(address)?; + journal.set_code(address, code); + let state = journal.finalize(); + self.context.evm().commit(state); + + Ok(()) + } + + fn switch_to_router_impl(&mut self, kind: ContractImplKind) -> Result<()> { + let address = self.router_impl.address(); + let code = Bytecode::new_legacy( + match kind { + ContractImplKind::Regular => self.router_impl.router_impl_bytecode(), + ContractImplKind::WithInstrumentation => { + self.router_impl.router_impl_with_instrumentation_bytecode() + } + } + .clone(), + ); + + let journal = self.context.evm().journal_mut(); + journal.load_account(address)?; + journal.set_code(address, code); + let state = journal.finalize(); + self.context.evm().commit(state); + + Ok(()) + } + + pub fn switch_to_impl(&mut self, contract_impl_kind: ContractImplKind) -> Result<()> { + self.switch_to_mirror_impl(contract_impl_kind)?; + self.switch_to_router_impl(contract_impl_kind)?; + Ok(()) + } + + fn latest_committed_batch_hash(&mut self) -> Result { + let deployer_address = self.context.deployer_address(); + let deployer_nonce = self.context.deployer_nonce(); + + let proxy_address = self.proxy_address(); + + let ExecutionResult::Success { + output: Output::Call(hash), + .. + } = self + .context + .evm() + .transact( + TxEnv::builder() + .caller(deployer_address) + .call(proxy_address) + .data(IRouter::latestCommittedBatchHashCall {}.abi_encode().into()) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + .result + else { + bail!("failed to get latest committed batch hash"); + }; + + Ok(Digest(H256::from_slice(&hash).to_fixed_bytes())) + } + + pub fn lookup_genesis_hash(&mut self) -> Result<()> { + let deployer_address = self.context.deployer_address(); + let deployer_nonce = self.context.deployer_nonce(); + + let proxy_address = self.proxy_address(); + + self.context.next_block(); + + let ExecutionResult::Success { .. } = self.context.evm().transact_commit( + TxEnv::builder() + .caller(deployer_address) + .call(proxy_address) + .data(IRouter::lookupGenesisHashCall {}.abi_encode().into()) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + else { + bail!("failed to lookup genesis hash"); + }; + + self.context.increment_deployer_nonce(); + + Ok(()) + } + + pub fn request_code_validation(&mut self, code: &[u8]) -> Result { + let deployer_address = self.context.deployer_address(); + let deployer_nonce = self.context.deployer_nonce(); + + let proxy_address = self.proxy_address(); + let code_id = CodeId::generate(code); + + let value = U256::from(1_000_u128 * 1_000_000_000_000_u128); + let nonce = self.wrapped_vara.nonces(self.context, deployer_address)?; + let deadline = U256::from(self.context.block_timestamp_u64()) + .checked_add(U256::ONE) + .expect("infallible"); + + let permit = Permit { + owner: deployer_address, + spender: proxy_address, + value, + nonce, + deadline, + }; + + let eip712_domain = self.wrapped_vara.eip712_domain(self.context)?; + + let hash = permit.eip712_signing_hash(&eip712_domain); + let signature = self.context.deployer_sender().sign_hash_sync(&hash)?; + + let v = (signature.v() as u8) + 27; + let r = signature.r().into(); + let s = signature.s().into(); + + let ExecutionResult::Success { .. } = self.context.evm().transact_commit( + TxEnv::builder() + .caller(deployer_address) + .call(proxy_address) + .data( + IRouter::requestCodeValidationCall { + _codeId: code_id.into_bytes().into(), + _deadline: deadline, + _v: v, + _r: r, + _s: s, + } + .abi_encode() + .into(), + ) + .nonce(deployer_nonce) + .blob_hashes(vec![B256::from([VERSIONED_HASH_VERSION_KZG; 32])]) + .max_fee_per_blob_gas(1) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + else { + bail!("failed to request code validation"); + }; + + self.context.increment_deployer_nonce(); + + Ok(code_id) + } + + pub fn create_program( + &mut self, + code_id: CodeId, + salt: H256, + override_initializer: Option, + ) -> Result { + let deployer_address = self.context.deployer_address(); + let deployer_nonce = self.context.deployer_nonce(); + + let proxy_address = self.proxy_address(); + + let ExecutionResult::Success { + output: Output::Call(actor_id), + .. + } = self.context.evm().transact_commit( + TxEnv::builder() + .caller(deployer_address) + .call(proxy_address) + .data( + IRouter::createProgramCall { + _codeId: code_id.into_bytes().into(), + _salt: salt.0.into(), + _overrideInitializer: override_initializer + .map(|initializer| initializer.to_address_lossy().0.into()) + .unwrap_or_default(), + } + .abi_encode() + .into(), + ) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + else { + bail!("failed to create program"); + }; + + self.context.increment_deployer_nonce(); + + Ok(actor_id.as_ref().try_into().expect("infallible")) + } + + fn commit_batch_tx(&mut self, batch: BatchCommitment) -> Result<(u64, TxEnv)> { + let batch_digest = batch.to_digest(); + + let signatures = self + .context + .validators_with_keys() + .iter() + .map(|(signer, pubkey, _)| { + Bytes::from( + signer + .sign_for_contract_digest( + self.proxy_address().into(), + *pubkey, + batch_digest, + None, + ) + .expect("infallible") + .into_pre_eip155_bytes(), + ) + }) + .take(self.context.min_signers() as _) + .collect::>(); + + let data: Bytes = IRouter::commitBatchCall { + _batch: batch.into(), + _signatureType: SignatureType::ECDSA as u8, + _signatures: signatures, + } + .abi_encode() + .into(); + + let calldata_gas = data.calldata_gas().total_gas(); + + let tx = TxEnv::builder() + .caller(self.context.deployer_address()) + .call(self.proxy_address()) + .data(data) + .nonce(self.context.deployer_nonce()) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?; + + Ok((calldata_gas, tx)) + } + + fn commit_batch( + &mut self, + batch: BatchCommitment, + execution_mode: ExecutionMode, + ) -> Result { + let (calldata_gas, tx) = self.commit_batch_tx(batch)?; + + let execution_result = match execution_mode { + ExecutionMode::Execute => self.context.evm().transact(tx)?.result, + ExecutionMode::ExecuteAndCommit => self.context.evm().transact_commit(tx)?, + ExecutionMode::ExecuteAndInspect => self.context.evm().inspect_tx(tx)?.result, + }; + let ExecutionResult::Success { gas, .. } = execution_result else { + bail!("failed to commit batch"); + }; + let execution_gas = gas.tx_gas_used(); + + if let ExecutionMode::ExecuteAndCommit = execution_mode { + self.context.increment_deployer_nonce(); + } + + const BASE_FEE: u64 = 21_000; + + let execution_gas = execution_gas + .checked_sub(BASE_FEE) + .expect("infallible") + .checked_sub(calldata_gas) + .expect("infallible"); + + Ok(GasResult { + execution_gas, + calldata_gas, + }) + } + + pub fn commit_batch_simple( + &mut self, + chain_commitment: Option, + code_commitments: Vec, + execution_mode: ExecutionMode, + ) -> Result<()> { + self.context.next_block(); + + let latest_committed_batch_hash = self.latest_committed_batch_hash()?; + + self.commit_batch( + BatchCommitment { + block_hash: self.context.parent_block_hash()?, + timestamp: self.context.parent_block_timestamp_u64(), + previous_batch: latest_committed_batch_hash, + expiry: 1, + chain_commitment, + code_commitments, + validators_commitment: None, + rewards_commitment: None, + }, + execution_mode, + )?; + + Ok(()) + } + + pub fn estimate_commit_batch_gas_between_topics( + &mut self, + chain_commitment: Option, + code_commitments: Vec, + contract_address: Address, + start_topic: u32, + end_topic: u32, + ) -> Result { + self.context.evm().inspector.topic_bounded_gas_inspector( + contract_address, + U256::try_from(start_topic).expect("infallible").into(), + U256::try_from(end_topic).expect("infallible").into(), + ); + + let GasResult { calldata_gas, .. } = self.estimate_commit_batch_gas( + chain_commitment, + code_commitments, + ExecutionMode::ExecuteAndInspect, + )?; + let execution_gas = self.context.evm().inspector.gas_diff().expect("infallible"); + + Ok(GasResult { + execution_gas, + calldata_gas, + }) + } + + pub fn estimate_commit_batch_gas( + &mut self, + chain_commitment: Option, + code_commitments: Vec, + execution_mode: ExecutionMode, + ) -> Result { + let expiry = 3; + + for _ in 0..expiry { + self.context.next_block(); + } + + let latest_committed_batch_hash = self.latest_committed_batch_hash()?; + + let gas_result = self.commit_batch( + BatchCommitment { + block_hash: self.context.block_hash( + self.context + .block_number() + .checked_sub(U256::from(3)) + .expect("infallible"), + )?, + timestamp: self + .context + .block_timestamp_u64() + .checked_sub(3) + .expect("infallible"), + previous_batch: latest_committed_batch_hash, + expiry, + chain_commitment, + code_commitments, + validators_commitment: None, + rewards_commitment: None, + }, + execution_mode, + )?; + + for _ in 0..expiry { + self.context.prev_block(); + } + + Ok(gas_result) + } +} diff --git a/ethexe/ethereum/src/benchmarking/contracts/router_impl.rs b/ethexe/ethereum/src/benchmarking/contracts/router_impl.rs new file mode 100644 index 00000000000..67c5c7e97b3 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/contracts/router_impl.rs @@ -0,0 +1,108 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::{ + abi::{IRouter, IRouterWithInstrumentation}, + benchmarking::{SimulationContext, contracts::ExecutionMode}, +}; +use anyhow::{Result, anyhow, bail}; +use revm::{ + ExecuteCommitEvm, ExecuteEvm, InspectEvm, + context::TxEnv, + context_interface::result::{ExecutionResult, Output}, + primitives::{Address, Bytes}, +}; + +pub struct RouterImpl { + address: Address, + router_impl_bytecode: Bytes, + router_impl_with_instrumentation_bytecode: Bytes, +} + +impl RouterImpl { + pub fn deploy(context: &mut SimulationContext) -> Result { + let (_, router_impl_bytecode) = Self::deploy_with_execution_mode( + context, + &IRouter::BYTECODE[..], + ExecutionMode::Execute, + )?; + let (_, router_impl_with_instrumentation_bytecode) = Self::deploy_with_execution_mode( + context, + &IRouterWithInstrumentation::BYTECODE[..], + ExecutionMode::Execute, + )?; + + let (router_impl, _) = Self::deploy_with_execution_mode( + context, + &IRouter::BYTECODE[..], + ExecutionMode::ExecuteAndCommit, + )?; + + Ok(Self { + address: router_impl, + router_impl_bytecode, + router_impl_with_instrumentation_bytecode, + }) + } + + fn deploy_with_execution_mode( + context: &mut SimulationContext, + bytecode: &[u8], + execution_mode: ExecutionMode, + ) -> Result<(Address, Bytes)> { + let tx = TxEnv::builder() + .caller(context.deployer_address()) + .create() + .data(Bytes::copy_from_slice(bytecode)) + .nonce(context.deployer_nonce()) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?; + + let execution_result = match execution_mode { + ExecutionMode::Execute => context.evm().transact(tx)?.result, + ExecutionMode::ExecuteAndCommit => context.evm().transact_commit(tx)?, + ExecutionMode::ExecuteAndInspect => context.evm().inspect_tx(tx)?.result, + }; + + let ExecutionResult::Success { + output: Output::Create(router_impl_bytecode, Some(router_impl)), + .. + } = execution_result + else { + bail!("failed to deploy Router contract"); + }; + + if let ExecutionMode::ExecuteAndCommit = execution_mode { + context.increment_deployer_nonce(); + } + + Ok((router_impl, router_impl_bytecode)) + } + + pub fn address(&self) -> Address { + self.address + } + + pub fn router_impl_bytecode(&self) -> &Bytes { + &self.router_impl_bytecode + } + + pub fn router_impl_with_instrumentation_bytecode(&self) -> &Bytes { + &self.router_impl_with_instrumentation_bytecode + } +} diff --git a/ethexe/ethereum/src/benchmarking/contracts/wvara.rs b/ethexe/ethereum/src/benchmarking/contracts/wvara.rs new file mode 100644 index 00000000000..22a3d57a967 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/contracts/wvara.rs @@ -0,0 +1,192 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::{ + abi::{IERC1967Proxy, IWrappedVara}, + benchmarking::SimulationContext, +}; +use alloy::{ + dyn_abi::Eip712Domain, + sol_types::{SolCall, SolConstructor, eip712_domain}, +}; +use anyhow::{Context, Result, anyhow, bail}; +use revm::{ + ExecuteCommitEvm, ExecuteEvm, + context::TxEnv, + context_interface::result::{ExecutionResult, Output}, + primitives::{Address, Bytes, U256}, +}; + +pub struct WrappedVara { + impl_address: Address, + proxy_address: Address, +} + +impl WrappedVara { + pub fn deploy(context: &mut SimulationContext) -> Result { + let wrapped_vara_impl = Self::deploy_impl(context)?; + let wrapped_vara_proxy = Self::deploy_proxy(context, wrapped_vara_impl)?; + + Ok(Self { + impl_address: wrapped_vara_impl, + proxy_address: wrapped_vara_proxy, + }) + } + + fn deploy_impl(context: &mut SimulationContext) -> Result
{ + let deployer_address = context.deployer_address(); + let deployer_nonce = context.deployer_nonce(); + + let ExecutionResult::Success { + output: Output::Create(_, Some(wrapped_vara_impl)), + .. + } = context.evm().transact_commit( + TxEnv::builder() + .caller(deployer_address) + .create() + .data(IWrappedVara::BYTECODE.clone()) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + else { + bail!("failed to deploy WrappedVara contract"); + }; + + context.increment_deployer_nonce(); + + Ok(wrapped_vara_impl) + } + + fn deploy_proxy( + context: &mut SimulationContext, + wrapped_vara_impl: Address, + ) -> Result
{ + let deployer_address = context.deployer_address(); + let deployer_nonce = context.deployer_nonce(); + + let ExecutionResult::Success { + output: Output::Create(_, Some(wrapped_vara_proxy)), + .. + } = context.evm().transact_commit( + TxEnv::builder() + .caller(deployer_address) + .create() + .data( + [ + &IERC1967Proxy::BYTECODE[..], + &SolConstructor::abi_encode(&IERC1967Proxy::constructorCall { + implementation: wrapped_vara_impl, + _data: Bytes::copy_from_slice( + &IWrappedVara::initializeCall { + initialOwner: deployer_address, + } + .abi_encode(), + ), + })[..], + ] + .concat() + .into(), + ) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + else { + bail!("failed to deploy TransparentUpgradeableProxy contract (WrappedVara proxy)"); + }; + + context.increment_deployer_nonce(); + + Ok(wrapped_vara_proxy) + } + + pub fn impl_address(&self) -> Address { + self.impl_address + } + + pub fn proxy_address(&self) -> Address { + self.proxy_address + } + + pub(crate) fn nonces(&self, context: &mut SimulationContext, owner: Address) -> Result { + let deployer_address = context.deployer_address(); + let deployer_nonce = context.deployer_nonce(); + + let proxy_address = self.proxy_address(); + + let ExecutionResult::Success { + output: Output::Call(nonces), + .. + } = context + .evm() + .transact( + TxEnv::builder() + .caller(deployer_address) + .call(proxy_address) + .data(IWrappedVara::noncesCall { owner }.abi_encode().into()) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + .result + else { + bail!("failed to get nonces"); + }; + + Ok(U256::from_be_slice(&nonces)) + } + + pub(crate) fn eip712_domain(&self, context: &mut SimulationContext) -> Result { + let deployer_address = context.deployer_address(); + let deployer_nonce = context.deployer_nonce(); + + let proxy_address = self.proxy_address(); + + let ExecutionResult::Success { + output: Output::Call(eip712_domain), + .. + } = context + .evm() + .transact( + TxEnv::builder() + .caller(deployer_address) + .call(proxy_address) + .data(IWrappedVara::eip712DomainCall {}.abi_encode().into()) + .nonce(deployer_nonce) + .build() + .map_err(|_| anyhow!("failed to build TxEnv"))?, + )? + .result + else { + bail!("failed to get eip712 domain"); + }; + + let Ok(eip712_domain) = IWrappedVara::eip712DomainCall::abi_decode_returns(&eip712_domain) + else { + bail!("failed to decode eip712 domain"); + }; + + Ok(eip712_domain! { + name: eip712_domain.name, + version: eip712_domain.version, + chain_id: eip712_domain.chainId.try_into().with_context(|| "chainId should fit into u64")?, + verifying_contract: eip712_domain.verifyingContract, + }) + } +} diff --git a/ethexe/ethereum/src/benchmarking/extensions.rs b/ethexe/ethereum/src/benchmarking/extensions.rs new file mode 100644 index 00000000000..24d7e2ab32c --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/extensions.rs @@ -0,0 +1,47 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use revm::primitives::Bytes; + +#[derive(Debug)] +pub struct CalldataGas { + pub zero_bytes: usize, + pub non_zero_bytes: usize, +} + +impl CalldataGas { + pub fn total_gas(&self) -> u64 { + (self.zero_bytes * 4 + self.non_zero_bytes * 16) as u64 + } +} + +pub trait CalldataGasExt { + fn calldata_gas(&self) -> CalldataGas; +} + +impl CalldataGasExt for Bytes { + fn calldata_gas(&self) -> CalldataGas { + let zero_bytes = self.iter().filter(|&&b| b == 0).count(); + let non_zero_bytes = self.len() - zero_bytes; + + CalldataGas { + zero_bytes, + non_zero_bytes, + } + } +} diff --git a/ethexe/ethereum/src/benchmarking/inspector.rs b/ethexe/ethereum/src/benchmarking/inspector.rs new file mode 100644 index 00000000000..d3cfb8564aa --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/inspector.rs @@ -0,0 +1,149 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use revm::{ + Database, Inspector, + context::ContextTr, + context_interface::cfg::gas, + inspector::{JournalExt, inspectors::GasInspector}, + interpreter::{ + CallInputs, CallOutcome, CreateInputs, CreateOutcome, Interpreter, InterpreterTypes, + }, + primitives::{Address, B256, Log}, +}; + +pub struct TopicBoundedGasInspector { + contract_address: Address, + start_execution_topic: B256, + end_execution_topic: B256, + gas_at_start: Option, + gas_diff: Option, +} + +#[derive(Default)] +pub struct SimulationInspector { + gas_inspector: GasInspector, + topic_bounded_gas_inspector: Option, +} + +impl SimulationInspector { + pub fn topic_bounded_gas_inspector( + &mut self, + contract_address: Address, + start_execution_topic: B256, + end_execution_topic: B256, + ) { + self.topic_bounded_gas_inspector = Some(TopicBoundedGasInspector { + contract_address, + start_execution_topic, + end_execution_topic, + gas_at_start: None, + gas_diff: None, + }); + } + + pub fn gas_diff(&self) -> Option { + self.topic_bounded_gas_inspector.as_ref()?.gas_diff + } +} + +impl Inspector for SimulationInspector +where + DB: Database, + CTX: ContextTr, + CTX::Journal: JournalExt, +{ + fn initialize_interp(&mut self, interp: &mut Interpreter, _context: &mut CTX) { + self.gas_inspector.initialize_interp(&interp.gas); + } + + fn step(&mut self, interp: &mut Interpreter, _context: &mut CTX) { + // Do not remove, useful for debugging purposes + + /*use revm::{ + bytecode::OpCode, + context::JournalTr, + interpreter::interpreter_types::{Jumps, MemoryTr, StackTr}, + }; + + let opcode = interp.bytecode.opcode(); + let name = OpCode::name_by_op(opcode); + + let gas_remaining = self.gas_inspector.gas_remaining(); + let memory_size = interp.memory.size(); + + println!( + "depth:{}, PC:{}, gas:{:#x}({}), OPCODE: {:?}({:?}) refund:{:#x}({}) Stack:{:?}, Data size:{}, Memory gas:{}", + _context.journal().depth(), + interp.bytecode.pc(), + gas_remaining, + gas_remaining, + name, + opcode, + interp.gas.refunded(), + interp.gas.refunded(), + interp.stack.data(), + memory_size, + interp.gas.memory().expansion_cost, + );*/ + + self.gas_inspector.step(&interp.gas); + } + + fn step_end(&mut self, interp: &mut Interpreter, _context: &mut CTX) { + self.gas_inspector.step_end(&interp.gas); + } + + fn call_end(&mut self, _context: &mut CTX, _inputs: &CallInputs, outcome: &mut CallOutcome) { + self.gas_inspector.call_end(outcome) + } + + fn create_end( + &mut self, + _context: &mut CTX, + _inputs: &CreateInputs, + outcome: &mut CreateOutcome, + ) { + self.gas_inspector.create_end(outcome) + } + + fn log_full(&mut self, _interp: &mut Interpreter, _context: &mut CTX, log: Log) { + if let Some(TopicBoundedGasInspector { + contract_address, + start_execution_topic, + end_execution_topic, + gas_at_start, + gas_diff, + }) = &mut self.topic_bounded_gas_inspector + && log.address == *contract_address + && let Some(topic0) = log.data.topics().first() + { + let gas_remaining = self.gas_inspector.gas_remaining(); + + if topic0 == start_execution_topic { + const LOG_GAS_COST: u64 = gas::LOG + gas::LOGTOPIC; + let gas = gas_remaining.checked_sub(LOG_GAS_COST).expect("infallible"); + *gas_at_start = Some(gas); + } else if topic0 == end_execution_topic + && let Some(gas_at_start) = gas_at_start + { + *gas_diff = Some(gas_at_start.checked_sub(gas_remaining).expect("infallible")); + } + } + } +} diff --git a/ethexe/ethereum/src/benchmarking/mnemonic.rs b/ethexe/ethereum/src/benchmarking/mnemonic.rs new file mode 100644 index 00000000000..057ba114d3a --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/mnemonic.rs @@ -0,0 +1,50 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use alloy::{ + primitives::Address, + signers::local::{MnemonicBuilder, coins_bip39::English}, +}; +use anyhow::{Result, anyhow}; +use gsigner::secp256k1::{PrivateKey, PublicKey, Signer}; + +/// Default Hardhat/Anvil mnemonic. +const MNEMONIC: &str = "test test test test test test test test test test test junk"; + +/// Derive a [`Signer`] (with one imported key) from the +/// standard derivation index `m/44'/60'/0'/0/{index}`. +/// +/// Returns the signer together with the corresponding gsigner address. +pub fn derive_signer(index: u32) -> Result<(Signer, PublicKey, Address)> { + // Derive the raw k256 key via alloy's BIP-32/BIP-39 MnemonicBuilder. + let alloy_signer = MnemonicBuilder::::default() + .phrase(MNEMONIC) + .index(index) + .map_err(|e| anyhow!("bad derivation index {index}: {e}"))? + .build() + .map_err(|e| anyhow!("mnemonic derivation failed at index {index}: {e}"))?; + + // Extract the 32-byte secret and import it into a gsigner in-memory signer. + let seed: [u8; 32] = alloy_signer.to_bytes().0; + let private_key = PrivateKey::from_seed(seed)?; + let signer = Signer::memory(); + let pubkey = signer.import(private_key)?; + let address = pubkey.to_address(); + + Ok((signer, pubkey, address.into())) +} diff --git a/ethexe/ethereum/src/benchmarking/mod.rs b/ethexe/ethereum/src/benchmarking/mod.rs new file mode 100644 index 00000000000..7542196e149 --- /dev/null +++ b/ethexe/ethereum/src/benchmarking/mod.rs @@ -0,0 +1,26 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +pub use context::{InitializedSimulationContext, SimulationContext}; +pub use contracts::ContractImplKind; + +mod context; +mod contracts; +mod extensions; +mod inspector; +mod mnemonic; diff --git a/ethexe/ethereum/src/lib.rs b/ethexe/ethereum/src/lib.rs index 11f2a8b26d9..fcf66eb1a9a 100644 --- a/ethexe/ethereum/src/lib.rs +++ b/ethexe/ethereum/src/lib.rs @@ -58,6 +58,7 @@ use router::{Router, RouterQuery}; use std::time::Duration; pub mod abi; +pub mod benchmarking; pub mod deploy; pub mod middleware; pub mod mirror; @@ -474,7 +475,7 @@ pub(crate) async fn create_provider( } #[derive(Debug, Clone)] -struct Sender { +pub struct Sender { signer: Signer, sender: PublicKey, chain_id: Option, diff --git a/ethexe/ethereum/src/main.rs b/ethexe/ethereum/src/main.rs new file mode 100644 index 00000000000..e3f55902fc7 --- /dev/null +++ b/ethexe/ethereum/src/main.rs @@ -0,0 +1,138 @@ +// This file is part of Gear. +// +// Copyright (C) 2026 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use anyhow::Result; +use ethexe_common::gear::{Message, ValueClaim}; +use ethexe_ethereum::benchmarking::{ContractImplKind, SimulationContext}; +use gprimitives::{ActorId, H256, MessageId}; + +fn main() -> Result<()> { + let mut simulation_context = SimulationContext::new()?; + let mut context = simulation_context.initialize()?; + + context.switch_to_impl(ContractImplKind::Regular)?; + + let empty_batch_gas = context.empty_batch_gas()?; + dbg!(empty_batch_gas); + + context.switch_to_impl(ContractImplKind::WithInstrumentation)?; + + let code_commitment_gas = context.code_commitment_gas()?; + dbg!(code_commitment_gas); + + let state_transition_zero_actor_id_gas = context.state_transition_actor_id_gas(ActorId::zero()); + dbg!(state_transition_zero_actor_id_gas); + + let state_transition_non_zero_actor_id_gas = + context.state_transition_actor_id_gas(ActorId::new([0x01; 32])); + dbg!(state_transition_non_zero_actor_id_gas); + + let state_transition_zero_state_hash_gas = + context.state_transition_new_state_hash_gas(H256::zero()); + dbg!(state_transition_zero_state_hash_gas); + + let state_transition_non_zero_state_hash_gas = + context.state_transition_new_state_hash_gas(H256([0x01; 32])); + dbg!(state_transition_non_zero_state_hash_gas); + + let state_transition_not_exited_gas = context.state_transition_exited_gas(false); + dbg!(state_transition_not_exited_gas); + + let state_transition_exited_gas = context.state_transition_exited_gas(true); + dbg!(state_transition_exited_gas); + + let state_transition_zero_inheritor_gas = + context.state_transition_inheritor_gas(ActorId::zero()); + dbg!(state_transition_zero_inheritor_gas); + + let state_transition_non_zero_inheritor_gas = + context.state_transition_inheritor_gas(ActorId::new([0x01; 32])); + dbg!(state_transition_non_zero_inheritor_gas); + + let state_transition_zero_value_to_receive_gas = + context.state_transition_value_to_receive_gas(0); + dbg!(state_transition_zero_value_to_receive_gas); + + // dynamic gas cost + let state_transition_non_zero_value_to_receive_gas = + context.state_transition_value_to_receive_gas(1); + dbg!(state_transition_non_zero_value_to_receive_gas); + + let state_transition_value_to_receive_positive_sign_gas = + context.state_transition_value_to_receive_negative_sign_gas(false); + dbg!(state_transition_value_to_receive_positive_sign_gas); + + let state_transition_value_to_receive_negative_sign_gas = + context.state_transition_value_to_receive_negative_sign_gas(true); + dbg!(state_transition_value_to_receive_negative_sign_gas); + + let empty_state_transition_value_claims_gas = context.state_transition_value_claims_gas(vec![]); + dbg!(empty_state_transition_value_claims_gas); + + let empty_state_transition_messages_gas = context.state_transition_messages_gas(vec![]); + dbg!(empty_state_transition_messages_gas); + + let verify_actor_id_gas = context.verify_actor_id_gas()?; + dbg!(verify_actor_id_gas); + + let retrieve_ether_positive_value_gas = context.retrieve_ether_gas(0, false)?; + dbg!(retrieve_ether_positive_value_gas); + + let retrieve_ether_negative_value_gas = context.retrieve_ether_gas(1, true)?; + dbg!(retrieve_ether_negative_value_gas); + + // dynamic gas cost + let send_message_gas = context.send_message_gas(Message { + id: MessageId::zero(), + destination: H256::random().into(), + payload: vec![], + value: 0, + reply_details: None, + call: false, + })?; + dbg!(send_message_gas); + + // dynamic gas cost + let value_claim_gas = context.value_claim_gas(ValueClaim { + message_id: MessageId::zero(), + destination: ActorId::zero(), + value: 0, + })?; + dbg!(value_claim_gas); + + let set_inheritor_not_exited_gas = context.set_inheritor_gas(None)?; + dbg!(set_inheritor_not_exited_gas); + + let set_inheritor_exited_gas = context.set_inheritor_gas(Some(ActorId::new([0x01; 32])))?; + dbg!(set_inheritor_exited_gas); + + // TODO: same state hash + + let update_state_hash_uninitialized_actor_id_gas = + context.update_state_hash_gas(context.uninitialized_actor_id(), H256::random())?; + dbg!(update_state_hash_uninitialized_actor_id_gas); + + let update_state_hash_initialized_actor_id_gas = + context.update_state_hash_gas(context.initialized_actor_id(), H256::random())?; + dbg!(update_state_hash_initialized_actor_id_gas); + + let state_transition_hash_gas = context.state_transition_hash_gas()?; + dbg!(state_transition_hash_gas); + + Ok(()) +} diff --git a/utils/gear-workspace-hack/Cargo.toml b/utils/gear-workspace-hack/Cargo.toml index d148da49993..f9455e4d395 100644 --- a/utils/gear-workspace-hack/Cargo.toml +++ b/utils/gear-workspace-hack/Cargo.toml @@ -214,16 +214,17 @@ branch = "gear-polkadot-stable2409-wasm32v1-none" features = ["test-helpers"] ### BEGIN HAKARI SECTION -[dependencies] +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] aes = { version = "0.8", default-features = false, features = ["zeroize"] } ahash = { version = "0.8" } alloy = { version = "2", features = ["kzg", "node-bindings", "provider-anvil-api", "provider-ws", "rpc-types-beacon", "rpc-types-eth", "signer-mnemonic"] } alloy-chains = { version = "0.2" } alloy-consensus = { version = "2", default-features = false, features = ["kzg", "serde"] } alloy-contract = { version = "2", default-features = false, features = ["pubsub"] } +alloy-eip7702 = { version = "0.6", default-features = false, features = ["k256", "serde", "std"] } alloy-eips = { version = "2", default-features = false, features = ["kzg", "serde", "std"] } alloy-json-abi = { version = "1", features = ["serde_json"] } -alloy-primitives = { version = "1", features = ["k256", "rlp", "serde"] } +alloy-primitives = { version = "1", features = ["k256", "map-indexmap", "rlp", "serde"] } alloy-provider = { version = "2", default-features = false, features = ["anvil-node", "ws"] } alloy-rpc-client = { version = "2", default-features = false, features = ["reqwest", "ws"] } alloy-rpc-types = { version = "2", default-features = false, features = ["anvil", "beacon", "eth", "kzg"] } @@ -242,11 +243,12 @@ ark-std = { version = "0.4", default-features = false, features = ["parallel"] } arrayvec = { version = "0.7", features = ["serde"] } base64 = { version = "0.22" } binary-merkle-tree = { git = "https://github.com/gear-tech/polkadot-sdk.git", branch = "gear-polkadot-stable2409-wasm32v1-none", default-features = false, features = ["std"] } -bitflags = { version = "2", default-features = false, features = ["std"] } -bitvec = { version = "1" } +bitflags = { version = "2", default-features = false, features = ["serde", "std"] } +bitvec = { version = "1", features = ["serde"] } blake2 = { version = "0.10" } blake2b_simd = { version = "1", default-features = false, features = ["std"] } blake3 = { version = "1" } +blst = { version = "0.3", features = ["portable"] } bounded-collections = { version = "0.2", default-features = false, features = ["std"] } bp-header-chain = { git = "https://github.com/gear-tech/polkadot-sdk.git", branch = "gear-polkadot-stable2409-wasm32v1-none", default-features = false, features = ["std"] } bp-runtime = { git = "https://github.com/gear-tech/polkadot-sdk.git", branch = "gear-polkadot-stable2409-wasm32v1-none", default-features = false, features = ["std"] } @@ -255,6 +257,7 @@ byte-slice-cast = { version = "1", default-features = false, features = ["std"] bytemuck = { version = "1", default-features = false, features = ["const_zeroed", "derive", "min_const_generics", "must_cast"] } byteorder = { version = "1" } bytes = { version = "1", features = ["serde"] } +c-kzg = { version = "2", default-features = false, features = ["ethereum_kzg_settings", "portable", "serde", "std"] } cipher = { version = "0.4", default-features = false, features = ["zeroize"] } clap = { version = "4", features = ["derive", "env", "string", "wrap_help"] } clap_builder = { version = "4", default-features = false, features = ["color", "env", "std", "string", "suggestions", "usage", "wrap_help"] } @@ -342,6 +345,7 @@ num-bigint = { version = "0.4" } num-integer = { version = "0.1", default-features = false, features = ["i128", "std"] } num-rational = { version = "0.4", features = ["num-bigint-std"] } num-traits = { version = "0.2", features = ["i128", "libm"] } +num_enum = { version = "0.7", default-features = false, features = ["std"] } object-51543b5218fc235c = { package = "object", version = "0.32", features = ["write"] } object-fa1f6196edfd7249 = { package = "object", version = "0.30", default-features = false, features = ["read_core", "write"] } once_cell = { version = "1" } @@ -395,7 +399,7 @@ semver = { version = "1", features = ["serde"] } serde = { version = "1", features = ["alloc", "derive", "rc"] } serde-json-wasm = { version = "1", default-features = false, features = ["std"] } serde_core = { version = "1", features = ["alloc", "rc"] } -serde_json = { version = "1", features = ["alloc", "arbitrary_precision", "raw_value", "unbounded_depth"] } +serde_json = { version = "1", features = ["alloc", "arbitrary_precision", "preserve_order", "raw_value", "unbounded_depth"] } serdect = { version = "0.2" } sha1 = { version = "0.10" } sha2 = { version = "0.10" } @@ -486,16 +490,17 @@ wasmtime-runtime = { version = "8", default-features = false, features = ["async winnow = { version = "0.7" } zeroize = { version = "1", features = ["derive", "std"] } -[build-dependencies] +[target.'cfg(not(target_arch = "wasm32"))'.build-dependencies] aes = { version = "0.8", default-features = false, features = ["zeroize"] } ahash = { version = "0.8" } alloy = { version = "2", features = ["kzg", "node-bindings", "provider-anvil-api", "provider-ws", "rpc-types-beacon", "rpc-types-eth", "signer-mnemonic"] } alloy-chains = { version = "0.2" } alloy-consensus = { version = "2", default-features = false, features = ["kzg", "serde"] } alloy-contract = { version = "2", default-features = false, features = ["pubsub"] } +alloy-eip7702 = { version = "0.6", default-features = false, features = ["k256", "serde", "std"] } alloy-eips = { version = "2", default-features = false, features = ["kzg", "serde", "std"] } alloy-json-abi = { version = "1", features = ["serde_json"] } -alloy-primitives = { version = "1", features = ["k256", "rlp", "serde"] } +alloy-primitives = { version = "1", features = ["k256", "map-indexmap", "rlp", "serde"] } alloy-provider = { version = "2", default-features = false, features = ["anvil-node", "ws"] } alloy-rpc-client = { version = "2", default-features = false, features = ["reqwest", "ws"] } alloy-rpc-types = { version = "2", default-features = false, features = ["anvil", "beacon", "eth", "kzg"] } @@ -517,11 +522,12 @@ ark-std = { version = "0.4", default-features = false, features = ["parallel"] } arrayvec = { version = "0.7", features = ["serde"] } base64 = { version = "0.22" } binary-merkle-tree = { git = "https://github.com/gear-tech/polkadot-sdk.git", branch = "gear-polkadot-stable2409-wasm32v1-none", default-features = false, features = ["std"] } -bitflags = { version = "2", default-features = false, features = ["std"] } -bitvec = { version = "1" } +bitflags = { version = "2", default-features = false, features = ["serde", "std"] } +bitvec = { version = "1", features = ["serde"] } blake2 = { version = "0.10" } blake2b_simd = { version = "1", default-features = false, features = ["std"] } blake3 = { version = "1" } +blst = { version = "0.3", features = ["portable"] } bounded-collections = { version = "0.2", default-features = false, features = ["std"] } bp-header-chain = { git = "https://github.com/gear-tech/polkadot-sdk.git", branch = "gear-polkadot-stable2409-wasm32v1-none", default-features = false, features = ["std"] } bp-runtime = { git = "https://github.com/gear-tech/polkadot-sdk.git", branch = "gear-polkadot-stable2409-wasm32v1-none", default-features = false, features = ["std"] } @@ -530,6 +536,7 @@ byte-slice-cast = { version = "1", default-features = false, features = ["std"] bytemuck = { version = "1", default-features = false, features = ["const_zeroed", "derive", "min_const_generics", "must_cast"] } byteorder = { version = "1" } bytes = { version = "1", features = ["serde"] } +c-kzg = { version = "2", default-features = false, features = ["ethereum_kzg_settings", "portable", "serde", "std"] } cc = { version = "1", default-features = false, features = ["parallel"] } cipher = { version = "0.4", default-features = false, features = ["zeroize"] } clap = { version = "4", features = ["derive", "env", "string", "wrap_help"] } @@ -548,6 +555,7 @@ darling = { version = "0.21" } darling_core = { version = "0.21", default-features = false, features = ["suggestions"] } data-encoding = { version = "2" } der = { version = "0.7", default-features = false, features = ["oid", "std", "zeroize"] } +derive-where = { version = "1", default-features = false, features = ["serde"] } derive_more-2247a326473123a6 = { package = "derive_more", version = "0.99" } derive_more-f595c2ba2a3f28df = { package = "derive_more", version = "2", features = ["full"] } derive_more-impl = { version = "2", features = ["add", "add_assign", "as_ref", "constructor", "debug", "deref", "deref_mut", "display", "eq", "error", "from", "from_str", "index", "index_mut", "into", "into_iterator", "is_variant", "mul", "mul_assign", "not", "sum", "try_from", "try_into", "try_unwrap", "unwrap"] } @@ -624,6 +632,8 @@ num-bigint = { version = "0.4" } num-integer = { version = "0.1", default-features = false, features = ["i128", "std"] } num-rational = { version = "0.4", features = ["num-bigint-std"] } num-traits = { version = "0.2", features = ["i128", "libm"] } +num_enum = { version = "0.7", default-features = false, features = ["std"] } +num_enum_derive = { version = "0.7", default-features = false, features = ["std"] } object-51543b5218fc235c = { package = "object", version = "0.32", features = ["write"] } object-fa1f6196edfd7249 = { package = "object", version = "0.30", default-features = false, features = ["read_core", "write"] } once_cell = { version = "1" } @@ -679,7 +689,7 @@ semver = { version = "1", features = ["serde"] } serde = { version = "1", features = ["alloc", "derive", "rc"] } serde-json-wasm = { version = "1", default-features = false, features = ["std"] } serde_core = { version = "1", features = ["alloc", "rc"] } -serde_json = { version = "1", features = ["alloc", "arbitrary_precision", "raw_value", "unbounded_depth"] } +serde_json = { version = "1", features = ["alloc", "arbitrary_precision", "preserve_order", "raw_value", "unbounded_depth"] } serdect = { version = "0.2" } sha1 = { version = "0.10" } sha2 = { version = "0.10" } @@ -779,7 +789,7 @@ errno = { version = "0.3" } gimli = { version = "0.28" } hyper-rustls = { version = "0.27", default-features = false, features = ["aws-lc-rs", "http1", "http2", "logging", "ring", "tls12", "webpki-tokio"] } hyper-util = { version = "0.1", default-features = false, features = ["client-proxy"] } -itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13", default-features = false, features = ["use_std"] } libc = { version = "0.2", default-features = false, features = ["extra_traits"] } miniz_oxide = { version = "0.8", default-features = false, features = ["simd", "with-alloc"] } mio = { version = "1", features = ["net", "os-ext"] } @@ -803,7 +813,7 @@ errno = { version = "0.3" } gimli = { version = "0.28" } hyper-rustls = { version = "0.27", default-features = false, features = ["aws-lc-rs", "http1", "http2", "logging", "ring", "tls12", "webpki-tokio"] } hyper-util = { version = "0.1", default-features = false, features = ["client-proxy"] } -itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13", default-features = false, features = ["use_std"] } libc = { version = "0.2", default-features = false, features = ["extra_traits"] } miniz_oxide = { version = "0.8", default-features = false, features = ["simd", "with-alloc"] } mio = { version = "1", features = ["net", "os-ext"] } @@ -828,7 +838,7 @@ errno = { version = "0.3" } gimli = { version = "0.28" } hyper-rustls = { version = "0.27", default-features = false, features = ["aws-lc-rs", "http1", "http2", "logging", "ring", "tls12", "webpki-tokio"] } hyper-util = { version = "0.1", default-features = false, features = ["client-proxy"] } -itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13", default-features = false, features = ["use_std"] } libc = { version = "0.2", default-features = false, features = ["extra_traits"] } miniz_oxide = { version = "0.8", default-features = false, features = ["simd", "with-alloc"] } mio = { version = "1", features = ["net", "os-ext"] } @@ -851,7 +861,7 @@ errno = { version = "0.3" } gimli = { version = "0.28" } hyper-rustls = { version = "0.27", default-features = false, features = ["aws-lc-rs", "http1", "http2", "logging", "ring", "tls12", "webpki-tokio"] } hyper-util = { version = "0.1", default-features = false, features = ["client-proxy"] } -itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13", default-features = false, features = ["use_std"] } libc = { version = "0.2", default-features = false, features = ["extra_traits"] } miniz_oxide = { version = "0.8", default-features = false, features = ["simd", "with-alloc"] } mio = { version = "1", features = ["net", "os-ext"] } @@ -875,7 +885,7 @@ errno = { version = "0.3" } gimli = { version = "0.28" } hyper-rustls = { version = "0.27", default-features = false, features = ["aws-lc-rs", "http1", "http2", "logging", "ring", "tls12", "webpki-tokio"] } hyper-util = { version = "0.1", default-features = false, features = ["client-proxy"] } -itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13", default-features = false, features = ["use_std"] } libc = { version = "0.2", default-features = false, features = ["extra_traits"] } miniz_oxide = { version = "0.8", default-features = false, features = ["simd", "with-alloc"] } nom = { version = "7" } @@ -897,7 +907,7 @@ errno = { version = "0.3" } gimli = { version = "0.28" } hyper-rustls = { version = "0.27", default-features = false, features = ["aws-lc-rs", "http1", "http2", "logging", "ring", "tls12", "webpki-tokio"] } hyper-util = { version = "0.1", default-features = false, features = ["client-proxy"] } -itertools-a6292c17cd707f01 = { package = "itertools", version = "0.11" } +itertools-594e8ee84c453af0 = { package = "itertools", version = "0.13", default-features = false, features = ["use_std"] } libc = { version = "0.2", default-features = false, features = ["extra_traits"] } miniz_oxide = { version = "0.8", default-features = false, features = ["simd", "with-alloc"] } nom = { version = "7" }